An event booking , waitlist, advanced analytics and notification microservice engineered product.
Quorix is a robust and scalable microservice for managing event bookings, user notifications, and more. It's built with FastAPI, SQLAlchemy, and Celery to provide a high-performance, asynchronous, and reliable system.
- ๐ Fast & Asynchronous: Built on FastAPI and Starlette for high-performance, non-blocking I/O.
- ๐๏ธ Event & Booking Management: Create, manage, and book events with ease.
- ๐ Notification System: Keep users informed with email notifications for bookings, cancellations, and reminders.
- ๐ฅ User Authentication: Secure user authentication and authorization using JWT.
- โณ Waitlist Functionality: Automatically manage waitlists for fully booked events.
- ๐ Analytics: (Optional) Endpoints for gathering insights on event and booking metrics.
- โ๏ธ Background Tasks: Offload tasks like sending emails to a Celery worker for a responsive API.
- ๐๏ธ Database Migrations: Use Alembic to manage database schema changes.
- Backend: FastAPI, Python 3.11+
- ORM: SQLAlchemy
- Database: PostgreSQL (recommended), SQLite (for testing)
- Async Tasks: Celery
- Caching & Message Broker: Redis
- Testing: Pytest
- Linting & Formatting: Ruff, Black, MyPy
This repository includes a detailed system design document covering concurrency controls, database modeling, scalability patterns, API design, and optional features.
โก๏ธ View the full System Design Document
- Python 3.11+
- Poetry for dependency management
- Docker and Docker Compose (for running with PostgreSQL and Redis)
-
Clone the repository:
git clone https://github.com/techySPHINX/Quorix.git cd evently -
Install dependencies using Poetry:
poetry install
-
Set up environment variables:
Create a
.envfile in the root directory by copying the example file:cp .env.example .env
Update the
.envfile with your database credentials, SendGrid API key, and other settings.
This is the easiest way to get the application and its services (PostgreSQL, Redis) up and running.
-
Build and start the containers:
docker-compose up -d --build
-
Run database migrations:
docker-compose exec app alembic upgrade head
The API will be available at http://localhost:8000.
-
Activate the virtual environment:
poetry shell
-
Run database migrations:
alembic upgrade head
-
Start the FastAPI server:
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000
-
Start the Celery worker:
celery -A app.celery_app.celery worker -Q default,email,notifications -l info
The test suite uses pytest and an in-memory SQLite database by default for speed and reliability.
To run the tests:
poetry run pytest -qContributions are welcome! Please read our Contributing Guidelines to get started.
This project is licensed under the MIT License. See the LICENSE file for details.