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! 📅✨