- Backend: FastAPI (Python)
- Frontend: React + TypeScript + Vite
- Authentication: Auth0
- Database: SQLite (development) / PostgreSQL (production)
- Deployment: Docker + Traefik
- Python 3.11+
- Node.js 18+ and npm
- Docker and Docker Compose (for production deployment)
-
Navigate to the backend directory:
cd backend -
Create a virtual environment (recommended):
python -m venv env source env/bin/activate # On Windows: env\Scripts\activate
-
Install dependencies:
pip install -r requirements.txt
-
Create a
.envfile in thebackenddirectory:cp .env.sample .env
-
Edit the
.envfile and add your configuration: -
Run the backend server:
uvicorn main:app --reload --host 0.0.0.0 --port 8000
The API will be available at
http://localhost:8000API documentation will be available athttp://localhost:8000/docs
-
Navigate to the frontend directory:
cd frontend -
Install dependencies:
npm install
-
Create a
.envfile in thefrontenddirectory with the following variables: -
Run the development server:
npm run dev
The frontend will be available at
http://localhost:8080
-
Set up environment variables:
- Create a
.envfile in the root directory - Create a
backend/.envfile with all required variables including:TRAEFIK_HOST=your-domain.com TRAEFIK_ACME_EMAIL=your-email@example.com
- Create a
-
Build and start the services:
docker-compose -f docker-compose-prod.yml up -d --build
-
The application will be available at:
- Frontend:
https://your-domain.com - Backend API:
https://your-domain.com/api
- Frontend:
| Variable | Description | Required |
|---|---|---|
AUTH0_DOMAIN |
Your Auth0 domain | Yes |
AUTH0_AUDIENCE |
Your Auth0 API audience | Yes |
ALLOWED_EMAIL_DOMAIN |
Email domain allowed to access the app | Yes |
FRONTEND_URL |
Frontend URL for CORS configuration | Yes |
TRAEFIK_HOST |
Domain name for Traefik routing (production) | Production only |
TRAEFIK_ACME_EMAIL |
Email for Let's Encrypt certificates (production) | Production only |
| Variable | Description | Required |
|---|---|---|
VITE_AUTH0_DOMAIN |
Your Auth0 domain | Yes |
VITE_AUTH0_CLIENT_ID |
Your Auth0 client ID | Yes |
VITE_AUTH0_AUDIENCE |
Your Auth0 API audience | Yes |
VITE_AUTH0_REDIRECT_URI |
Redirect URI after authentication | Yes |
VITE_API_BASE_URL |
Backend API URL | Yes |
.
├── backend/ # FastAPI backend
│ ├── app/
│ │ ├── auth/ # Authentication logic
│ │ ├── db/ # Database configuration and helpers
│ │ ├── routers/ # API routes
│ │ └── models.py # Database models
│ ├── main.py # FastAPI application entry point
│ └── requirements.txt # Python dependencies
│
├── frontend/ # React frontend
│ ├── src/
│ │ ├── components/ # React components
│ │ ├── pages/ # Page components
│ │ ├── lib/ # API and utility functions
│ │ └── hooks/ # Custom React hooks
│ └── package.json # Node dependencies
│
├── docker-compose-prod.yml # Production Docker Compose configuration
└── README.md # This file

