A lightweight, self-hosted vacation and absence planner for small teams. No cloud, no subscriptions — just Docker.
- Year overview — compact Gantt-style bars for all employees at a glance
- Detail calendar — day-by-day view split into two half-year columns
- Employee management — add/remove team members
- Custom categories — e.g. Vacation, Sick, Home Office (fully configurable with colors)
- German public holidays — Berlin holidays pre-configured (incl. Easter-based holidays)
- Persistent storage — SQLite database via Docker volume
- Works without backend too — falls back to localStorage automatically (e.g. for previews)
- Reverse proxy ready — works great behind Nginx Proxy Manager
services:
vacation:
image: ghcr.io/YOURUSERNAME/vacation-planner:latest
container_name: vacation
restart: unless-stopped
ports:
- "127.0.0.1:8084:8000"
volumes:
- vacation-data:/data
volumes:
vacation-data:git clone https://github.com/YOURUSERNAME/vacation-planner.git
cd vacation-planner
docker build -t vacation-planner:latest .
docker compose up -dThen open http://localhost:8084
- Add employees via the "+ Mitarbeiter" button
- Add categories via "Kategorien" (name + color)
- Click any cell in the detail calendar to add an entry
- Click an existing bar to edit or delete it
- Hover over any bar for a tooltip with details
- Export your data as JSON anytime
| Component | Technology |
|---|---|
| Backend | Python / FastAPI |
| Database | SQLite |
| Frontend | Vanilla HTML/CSS/JS |
| Container | Docker / Alpine |
If NPM and the vacation container share a Docker network:
- Forward Hostname:
vacation(container name) - Forward Port:
8000
All data is stored in a Docker volume at /data/vacation.db. To back it up:
docker cp vacation:/data/vacation.db ./vacation-backup.dbMIT — do whatever you want with it.
