A full-stack employee scheduling system for creating, managing, and optimizing shift plans.
- Project Overview
- Architecture
- Directory Structure
- Key Features
- Setup & Development
- Running the Application
- Database & Migrations
- Testing
- Logging & Diagnostics
- Contributing
- Additional Documentation
Schichtplan is a modern, full-stack employee scheduling system. It enables organizations to create, manage, and optimize shift plans with advanced features like automated assignment, employee group management, and customizable PDF exports.
- Frontend: TypeScript, React, Vite, Shadcn UI
- Backend: Python, Flask, SQLAlchemy, Alembic
- Database: SQLite
The frontend communicates with the backend via RESTful APIs. The backend handles business logic, scheduling algorithms, and database operations.
/src/frontend/
- React frontend application/src/backend/
- Flask backend application/src/instance/
- Application instance (database, migrations)/docs/
- Project documentation/logs/
- Application and scheduler logs
- Shift plan creation and management with versioning
- Define shifts and coverage needs
- Employee group management (VZ, TZ, GFB, TL)
- Automated shift assignment based on rules and preferences
- PDF export with customizable layouts
- Diagnostic tools for schedule generation
- Comprehensive test suite
- Node.js and npm
- Python 3.12+
- Virtualenv
-
Clone the repository
-
Set up Python environment:
python -m venv .venv source .venv/bin/activate # On Windows: .venv\Scripts\activate pip install -r requirements.txt
-
Install frontend dependencies:
npm install
-
Start the backend:
python src/backend/run.py
-
Start the frontend:
npm run dev
-
The application uses an SQLite database at
/src/instance/app.db
. -
To apply migrations:
flask db upgrade
-
For migration details, see
/src/instance/migrations/README.md
.
-
Backend: Use pytest or run provided test scripts.
-
Frontend: Run tests with:
npm test
- Scheduler and application logs are stored in
/logs/
. - For details, see
docs/README_LOGGING.md
. - Diagnostic tools for schedule generation are in
src/backend/tools/debug/
.
- Fork the repository and create a feature branch.
- Follow code style guidelines (Black/Ruff for Python, ESLint/Prettier for JS/TS).
- Write or update tests for your changes.
- Submit a pull request with a clear description.
For further questions, see the /docs
directory or open an issue.