Worklog Manager is a full-stack productivity and time tracking application for software developers and small teams.
It provides a practical workspace for managing organizations, clients, projects, tasks, daily worklog entries, and effort reports. The project also includes Excel-based import/export workflows, scheduled export configuration, JWT-based authentication, and Docker Compose support for running the full local stack.
The application is built as a Spring Boot REST API, a React/Vite frontend, and a PostgreSQL database. It is intended as an enterprise-style pet project that demonstrates common full-stack application patterns without adding unnecessary infrastructure complexity.
Create, edit, select, and delete organizations used as the top-level scope for clients, projects, tasks, and worklog entries.
Manage clients within organizations, including visibility settings used by the worklog and task management workflows.
Create and maintain projects linked to organizations and clients. Projects can be marked as completed and filtered in the UI.
Manage development tasks with project, client, organization, software product, estimates, completion status, task links, and comments. Task details include related worklog entries.
Track daily worklog entries by organization, client, task, date, hours, and comments. The UI includes daily and monthly summaries.
Generate work effort reports for selected date ranges and review totals grouped by client and task.
Import full application data from Excel files using the administration page. The application validates import files before applying data.
Export full application data to Excel for backup or migration purposes.
Configure scheduled full data exports, including export folder, run time, retention period, and manual run-now execution.
Run PostgreSQL, the Spring Boot backend, and the React/Vite frontend served through Nginx using Docker Compose.
- Java 21
- Spring Boot
- Spring Security
- JWT Authentication
- Spring Data JPA
- PostgreSQL
- React
- Vite
- Axios
- Docker
- Docker Compose
- Nginx
Browser
↓
Nginx / React UI
↓
Spring Boot REST API
↓
PostgreSQL
- Docker
- Docker Compose
From the project root:
docker compose up -d --buildOpen the application:
http://localhost
The first startup on an empty database creates a demo user and sample data automatically.
Email: example@gmail.com
Password: 123
Docker Compose starts three services:
postgres- PostgreSQL database on port5432backend- Spring Boot API on port8080frontend- Nginx-served React application on port80
The frontend proxies /api/ requests to the backend service through Nginx.
The backend uses local development defaults from backend/src/main/resources/application.yml.
For Docker Compose, datasource settings are provided through environment variables:
SPRING_DATASOURCE_URL=jdbc:postgresql://postgres:5432/dev_platform
SPRING_DATASOURCE_USERNAME=postgres
SPRING_DATASOURCE_PASSWORD=postgresJWT tokens are signed with the JWT_SECRET environment variable. If it is not provided, the application uses a demo default suitable for local development:
JWT_SECRET=my-super-secret-key-my-super-secret-keyFor non-demo deployments, set a strong custom JWT_SECRET.
JWT_SECRETcan be provided through an environment variable.- If
JWT_SECRETis not set, the backend falls back to the demo default fromapplication.yml. - The default JWT secret is suitable only for local/demo usage.
- Do not publish real
.envfiles, database dumps, Excel exports, backup files, or local machine paths.
.
+-- backend/ # Java Spring Boot backend
+-- frontend/ # React + Vite frontend
+-- docker-compose.yml # PostgreSQL, backend, frontend stack
+-- README.md
cd backend
mvn test
mvn spring-boot:runBy default, the backend expects PostgreSQL at:
jdbc:postgresql://localhost:5432/dev_platform
cd frontend
npm install
npm run devThe Vite dev server proxies /api requests to http://localhost:8080.
Build and start all services:
docker compose up -d --buildView running containers:
docker compose psView logs:
docker compose logs -fStop services:
docker compose downStop services and remove the database volume:
docker compose down -v- Multi-user support
- Cloud backup
- Advanced reporting
- Notifications
- More granular roles and permissions
This project is licensed under the MIT License. See LICENSE.


