Calend'INT is an associative calendar platform designed for campus students to discover and subscribe to events from various student organizations (associations, clubs, BDE lists, etc.).
- User Accounts: Sign up and manage your subscriptions.
- Organizations: Browse and subscribe to different campus organizations.
- Events: View events in a calendar or list view.
- ICS Export: Export your personalized calendar to your favorite calendar app (Google Calendar, Outlook, etc.).
- Permissions: Granular role-based access control (Superadmin, Org Admin, Member, Viewer).
- Backend: Python (FastAPI), SQLModel, PostgreSQL
- Frontend: Vue.js 3, Vite, TailwindCSS
- Infrastructure: Docker, Docker Compose
- Docker installed on your machine.
- Docker Compose (usually included with Docker Desktop/Engine).
-
Clone the repository (if applicable):
git clone <repository-url> cd calendint
-
Start the application: Run the following command in the root directory of the project. The docker-compose.yml file is used for development, and the stack.yaml file is used for production (on docker swarm).
# Dev mode docker compose up --watch --build -
Access the services:
- Frontend: http://localhost
- Backend API Documentation: http://localhost/docs
- Go to the Frontend URL.
- Click on "Register" to create a new account.
- Log in with your credentials.
- Navigate to the Organizations tab to view or create organizations.
- Navigate to the Events tab to view or create events.
- Note: Currently, permission enforcement is basic. You may need to manually adjust database roles for advanced testing.
- Each user can find a link to import the calendar of the events he is subscribed to in the Mon profil tab.
- Backend Code: Located in
backend/ - Frontend Code: Located in
frontend/ - Database: PostgreSQL data is persisted in the
postgres_datavolume. To reset the database, run and add :docker compose exec backend python load_fixtures.py <email> --reset
docker compose exec backend python make_superadmin.py <email>To enable push notifications, you need to generate VAPID keys.
-
Generate keys:
# You can use the web-push library or an online generator # Example using npx: npx web-push generate-vapid-keys
-
Add them to your
.envfile (create if needed):VAPID_PUBLIC_KEY=<your_public_key> VAPID_PRIVATE_KEY=<your_private_key> ADMIN_EMAIL=mailto:admin@example.com CRON_DELAY=900