Project Time Tracker is a simple web application to manage and track project times, developed by Thomas Vannier.
It allows you to:
- Add, edit, and delete projects
- Track active and finished projects
- Assign researchers and engineers
- Record time automatically with a timer or manually
- Visualize project distribution with charts
- Save and persist your work on the server
The app runs inside a Docker container with a Node.js/Express backend that stores data in a projects.json file.
It is served behind a Caddy reverse proxy.
- Dynamic front-end (HTML + JavaScript + Chart.js)
- Backend API to persist data (
/api/projects) - Projects stored in JSON for simplicity
- Dockerized deployment (easy to run anywhere)
- Reverse proxy compatible (tested with Caddy)
The app requires a password to be set before running. A template file named password.setup.env is provided in the repository.
Steps:
- Rename
password.setup.envtopassword.env:
mv password.setup.env password.env- Open
password.envand set your password and session secret:
PASSWORD=your_password
SESSION_SECRET=put_a_long_random_string_here_min_32_charsImportant: The
password.envfile is not tracked by Git (it is listed in.gitignore). Never commit it to the repository.
Clone the repository and run:
docker-compose build
docker-compose up -dThe app will be available at:
http://localhost:4020
(or your reverse proxy domain if configured with Caddy).
GET /api/projectsReturns all stored projects as JSON.
POST /api/projectsSaves the given projects array to projects.json.
Request body example:
[
{
"id": 1,
"title": "Example Project",
"researchers": ["Alice"],
"engineers": ["Thomas Vannier"],
"institute": "IBDM",
"submissionDate": "2025-09-22",
"startDate": "2025-09-22",
"endDate": "",
"totalHours": "02:30:00",
"lastUpdate": "2025-09-22",
"category": "Bioinformatics",
"status": "active"
}
].
├── Dockerfile # Node.js + Express server
├── docker-compose.yml # Deployment configuration
├── server.js # Backend server logic
├── index.html # Front-end (HTML + JS)
├── projects.json # Data persistence file
└── README.md # Project documentationDeveloped by Thomas Vannier.