An open API service indexing awesome lists of open source software.

https://github.com/voltkraft/chronos

Development of the duty roster and vacation tools Chronos
https://github.com/voltkraft/chronos

docker-compose microservice microservices microservices-architecture planning

Last synced: about 1 month ago
JSON representation

Development of the duty roster and vacation tools Chronos

Awesome Lists containing this project

README

          

### Chronos
### Intelligent Shift & Vacation Planning System

[![License: AGPL-3.0-only](https://img.shields.io/badge/License-AGPL--3.0--only-blue.svg)](./LICENSE)
[![CLA Required](https://img.shields.io/badge/CLA-Required-orange.svg)](./CLA.md)
![Status: In Development](https://img.shields.io/badge/Status-In%20Development-yellow)
![Platform: Linux-first](https://img.shields.io/badge/Platform-Linux--first-lightgrey)

---

## ๐Ÿงญ Overview

**Chronos** is a modern, web-based planning and scheduling
system designed as a replacement for:

- manual Excel-based duty planning
- paper-based vacation & approval processes
- non-transparent scheduling procedures

Chronos provides:

- โœ” Digital approval workflows
- โœ” Transparent, auditable planning
- โœ” Fair, constraint-aware scheduling
- โœ” A Linux-first, open source-friendly architecture
- โœ” Modular frontend & backend components
- โœ” A foundation for future automation and optimization

---

## ๐Ÿ“š Documentation

Project documentation is kept in the `docs/` directory:

- **Customer Requirements Specification**
`docs/customer-requirements-specification.md`

- **Functional Specification**
`docs/functional-specification.md`
Key sections: [Interfaces & OpenAPI](docs/functional-specification.md#6-interfaces) ยท [Deployment & 12-Factor](docs/functional-specification.md#8-deployment--operations)

- **Architecture (Phase 1)**
`docs/architecture.md`

- **Authentication (Phase 1)**
`docs/authentication.md`

More design and architecture documents will follow as the project grows.

---

## ๐Ÿ— Architecture Overview (Phase 1)

Phase 1 runs as a small set of containers: reverse-proxy, frontend, middleware/api, scheduler/worker, and Postgres. The API is OpenAPI-first and authentication uses session cookies (internal users only).

```mermaid
flowchart LR
Client -->|HTTPS /api/*| RP
RP -->|HTTP| FE -->|HTTP /api/*| API
RP -->|HTTP /api/*| API -->|SQL| DB
API -.->|job trigger| Worker -->|SQL| DB
```

See `docs/architecture.md` and `docs/authentication.md` for details.

---

## ๐Ÿ”ง Development Setup

Phase 1 runs as a single `docker compose` stack. Dev defaults are committed in `infrastructure/docker/.env.dev`; production secrets live in `infrastructure/docker/.env.prod` which is **gitignored**.

```bash
git clone https://github.com/VoltKraft/Chronos.git
cd Chronos/infrastructure/docker

# Build + start all five services (Traefik, frontend, api, worker, db)
./up.sh up --build

# Create the first admin (prompted for password)
docker compose -f compose.dev.yaml --env-file .env.dev exec api \
python -m app.cli create-admin --email admin@chronos.local

# Verify
curl -i http://localhost/healthz
```

Once the stack is up, the SPA is at . Traefik routes `/api/*`, `/auth/*`, `/healthz`, `/readyz` to the API; everything else goes to the frontend.

For the full inventory of containers, images, and endpoints see [`docs/architecture.md`](docs/architecture.md#implementation-status-phase-1).

---

## ๐Ÿ‘ฅ Contributing & Contributor License Agreement (CLA)

Contributions are welcome and encouraged!

To maintain long-term legal clarity and ensure the project can evolve,
**all contributors must agree to the project's Contributor License Agreement (CLA)**.

By signing the CLA, you:

- assign copyright of your contributions to the Project Owner
- allow the project to be relicensed in the future
- ensure all historical versions remain under **AGPL-3.0-only**

Please see:

- [`CLA.md`](./CLA.md)
- [`CONTRIBUTING.md`](./CONTRIBUTING.md)

for details on contribution workflow and legal requirements.

---

## ๐Ÿ›ก License

This project is owned by **Jan Paulzen (VoltKraft)**.
The source code is licensed under the:

**GNU Affero General Public License v3.0 (AGPL-3.0-only)**

This ensures the project:

- remains free and open source
- protects user freedoms in networked environments
- prevents proprietary forks
- requires public access to source code when deployed as a service

For full license text, see:
โžก๏ธ [`LICENSE`](./LICENSE)

---

## ๐Ÿงฉ Project Goals (Roadmap Snapshot)

- [ ] Full shift planning workflow
- [ ] Vacation request workflow
- [ ] Approval chains (representative โ†’ team lead โ†’ HR)
- [ ] Rule-based scheduling engine
- [ ] Employee preferences & constraints
- [ ] Audit logs for all actions
- [ ] Multi-tenant support
- [ ] OpenID Connect (OIDC) integration
- [ ] Docker-based deployment
- [ ] Kubernetes-ready architecture

*(Roadmap will move into GitHub Projects later.)*

---

## ๐Ÿ’ฌ Contact & Community

Issues and feature requests are welcome via GitHub Issues.
Pull Requests are accepted once the [`CLA.md`](./CLA.md) is accepted.

---

## โญ Support the Project

If you find Chronos useful, consider leaving a star on GitHub โญ
It helps visibility and supports continued development.