Schedulo is an open-source work tracking application built with modern web technologies and containerized with Docker. It features a React frontend powered by Vite, a Django REST API backend, and a PostgreSQL database.
- Docker and Docker Compose
- Git
-
Clone the repository
git clone https://github.com/kinneyan/schedulo.git cd schedulo -
Configure environment variables
Copy the example environment files and configure them:
For development:
cp .env.dev.example .env.dev
For production:
cp .env.prod.example .env.prod
Edit the
.env.devor.env.prodfile with your actual configuration values, especially:- Database credentials
- API URLs
- Any other environment-specific settings
-
Run the application
docker compose up -d --build
The application will be available at:
- Frontend: http://localhost:5173 (development) or http://localhost:5000 (production)
- Backend API: http://localhost:8000
- Database: localhost:5432
# Run the entire application (development)
docker compose up -d --build
# Rebuild a specific service
docker compose up -d --build --no-deps <APP_NAME>
# View running containers
docker ps
# Stop the application
docker compose down# Execute commands inside containers
docker exec -it <CONTAINER_NAME> <COMMAND>
# Examples:
docker exec -it django python manage.py migrate
docker exec -it postgres psql -U postgres -d postgres# Generate Django migrations
python manage.py makemigrations
# Apply migrations (automatically done on container rebuild)
docker exec -it django python manage.py migrateThe project includes comprehensive test coverage with both unit and integration tests.
# Run all tests
python manage.py test api.tests --settings=server.settings.tests
# Run only integration tests
python manage.py test api.tests.integration --settings=server.settings.tests
# Run only unit tests
python manage.py test api.tests.unit --settings=server.settings.tests
# Run specific integration test areas
python manage.py test api.tests.integration.auth --settings=server.settings.tests
python manage.py test api.tests.integration.roles --settings=server.settings.testsschedulo/
├── client/ # React frontend
├── server/ # Django backend
│ ├── api/ # Django API app
│ ├── server/ # Django project settings
│ │ └── settings/ # Environment-specific settings
│ └── manage.py
├── docker-compose.yml # Development configuration
├── Dockerfile # Multi-stage build for frontend and backend
├── server/pyproject.toml # Python package metadata and dependencies
├── .env.dev.example # Development environment template
├── .env.prod.example # Production environment template
└── README.md
DJANGO_ENV=developmentREACT_ENV=developmentREACT_PORT=5173- Database configuration
VITE_API_URL=http://localhost:8000
DJANGO_ENV=productionNODE_ENV=productionREACT_ENV=productionREACT_PORT=5000- Production database configuration
VITE_API_URL=https://your-domain.com
The Django REST API provides endpoints for:
- User authentication and authorization
- Work tracking functionality
- Data management
API endpoints are available at http://localhost:8000/api/ when running locally.