A full-stack web application for schedule planning with modern REST API and intuitive user interface.
- FastAPI - Modern Python web framework
- SQLAlchemy - ORM for database operations
- Alembic - Database migration system
- Pydantic - Data validation and serialization
- SQLite/PostgreSQL - Database
- Uvicorn - ASGI server
- React - User interface library
- Vite - Build tool and development server
- Shadcn UI - Styling
- React Big Calendar - Calendar
- Docker & Docker Compose - Containerization
- Git - Version control system
schedule-planner/
βββ π backend/ # Server-side (FastAPI)
β βββ π app/ # Main application code
β β βββ π models/ # Database models (SQLAlchemy)
β β β βββ __init__.py
β β β βββ user.py # User model
β β β βββ schedule.py # Schedule model
β β β βββ lesson.py # Lesson/class model
β β β βββ room.py # Room model
β β β βββ subject.py # Subject model
β β β βββ group.py # Group model
β β β βββ faculty.py # Faculty model
β β β βββ ... # Other models
β β βββ π schemas/ # Pydantic schemas for API
β β β βββ __init__.py
β β β βββ user.py
β β β βββ schedule.py
β β β βββ lesson.py
β β β βββ ...
β β βββ π routes/ # API routes
β β β βββ __init__.py
β β β βββ auth.py # Authentication
β β β βββ schedule.py # Schedule API
β β β βββ user.py # User API
β β β βββ ...
β β βββ π repositories/ # Data access layer
β β βββ π services/ # Business logic
β β βββ π utils/ # Utilities
β β βββ config.py # Application configuration
β β βββ database.py # Database setup
β β βββ dependencies.py # FastAPI dependencies
β βββ π migrations/ # Alembic migrations
β β βββ π versions/ # Migration files
β β βββ env.py # Alembic configuration
β β βββ ...
β βββ main.py # Application entry point
β βββ requirements.txt # Python dependencies
β βββ alembic.ini # Alembic configuration
β βββ Dockerfile # Backend Docker image
β βββ entrypoint.sh # Startup script with migrations
β βββ .env.example # Environment variables example
βββ π frontend/ # Client-side
β βββ π src/ # Source code
β β βββ π components/ # React components
β β βββ π pages/ # Application pages
β β βββ π hooks/ # Custom hooks
β β βββ π contexts/ # React contexts
β β βββ π lib/ # Utilities and libraries
β β βββ π assets/ # Static resources
β β βββ App.jsx # Main component
β β βββ main.jsx # Entry point
β β βββ index.css # Global styles
β βββ π public/ # Public files
β βββ package.json # Node.js dependencies
β βββ vite.config.js # Vite configuration
β βββ Dockerfile # Frontend Docker image
β βββ .env.example # Environment variables example
βββ docker-compose.yml # Container orchestration
βββ .gitignore # Git ignored files
βββ LICENSE # Project license
βββ README.md # Project documentation
- User registration and login
- JWT tokens for secure authentication
- Role-based access control
- Manage faculties, directions and study forms
- Create and edit student groups
- Manage subjects and assignments
- Manage personal users information
- Track teacher contracts and workloads
- Create and manage academic years and semesters
- Manage classrooms and their characteristics
- Create and edit schedules
- Manage lessons and classes
- Assign rooms and teachers
- Export schedules in Excel and PDF formats
- Detect and resolve various types of scheduling conflicts
- Monitor and prevent workload hour limit violations
- Docker Desktop for Windows
- Git for repository cloning
git clone https://github.com/Nikitossik/schedule-planner.git
cd schedule-planner# Backend environment
copy backend\.env.example backend\.env
# Edit backend/.env with your settings# Build and start all services
docker-compose up --build
# Or run in background
docker-compose up -d --build
# View logs
docker-compose logs -fThe application will be available at:
- Frontend: http://localhost:5173
- Backend API: http://localhost:8000
- API Documentation: http://localhost:8000/docs
cd backend
# Create virtual environment
python -m venv .venv
# Activate virtual environment (Windows)
.\.venv\Scripts\Activate.ps1
# Install dependencies
pip install -r requirements.txt
# Setup environment
copy .env.example .env
# Edit .env file with your database settings
# Run database migrations
alembic upgrade head
# Start development server
uvicorn main:app --reload --host 0.0.0.0 --port 8000cd frontend
# Install dependencies
npm install
# Start development server
npm run dev# Security & Authentication
ACCESS_SECRET_KEY=your-access-secret-key-here
REFRESH_SECRET_KEY=your-refresh-secret-key-here
ALGORITHM=HS256
ACCESS_TOKEN_EXPIRE_MINUTES=15
REFRESH_TOKEN_EXPIRE_DAYS=7
# Database
SQLALCHEMY_DATABASE_URL=sqlite:///data.db
# Initial Admin User
INITIAL_ADMIN_EMAIL=admin@example.com
INITIAL_ADMIN_PASSWORD=your-secure-password
# Database reset and populate with initial data (if you need)
RESET_DB_ON_START=trueThe application uses Alembic for database migrations:
- Automatic migrations: Run automatically in Docker
- Manual migrations: Use
alembic upgrade headfor local development - Create migration:
alembic revision --autogenerate -m "description" - Migration files: Stored in
backend/alembic/versions/
- Swagger UI: http://localhost:8000/docs
- ReDoc: http://localhost:8000/redoc
- Fork the repository
- Create feature branch (
git checkout -b feature/amazing-feature) - Commit changes (
git commit -m 'Add amazing feature') - Push to branch (
git push origin feature/amazing-feature) - Open Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
If you encounter any issues or have questions:
- Check the API documentation
- Review the logs:
docker-compose logs -f - Open an issue on GitHub
- Check existing issues for solutions
- Mobile application
- Email notifications
- Advanced reporting
- Multi-language support
Happy Scheduling! π β¨