TickFlow is a lightweight task management REST API built with Spring Boot.
The project focuses on managing daily tasks through clean CRUD operations, Docker support, CI/CD pipeline integration, and cloud deployment.
Trello Board: https://trello.com
- Java 17
- Spring Boot
- Spring Data JPA
- Hibernate
- Maven
- MySQL
- PostgreSQL
- H2 Database
- Docker
- GitHub Actions
- Render
- Lombok
- Create, read, update, and delete tasks
- Task categorization using enums
- Input validation
- RESTful API architecture
- H2 integration testing
- Dockerized application
- CI/CD pipeline with GitHub Actions
- Cloud deployment with Render
The application contains a single core entity: Task.
Example fields:
- id
- title
- description
- status
- tag
- priority
- deadline
- created date
TickFlow/
├── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── RAR/TickFlow/
│ │ │ ├── controller/
│ │ │ │ └── TaskController.java
│ │ │ ├── dto/
│ │ │ │ ├── TaskRequestDTO.java
│ │ │ │ └── TaskResponseDTO.java
│ │ │ ├── entity/
│ │ │ │ └── Task.java
│ │ │ ├── enums/
│ │ │ │ ├── Priority.java
│ │ │ │ ├── Status.java
│ │ │ │ └── Tag.java
│ │ │ ├── exceptions/
│ │ │ │ ├── GlobalExceptionHandler.java
│ │ │ │ ├── InvalidTaskOperationException.java
│ │ │ │ └── TaskNotFoundException.java
│ │ │ ├── repository/
│ │ │ │ └── TaskRepository.java
│ │ │ ├── service/
│ │ │ │ └── TaskService.java
│ │ │ └── TickFlowApplication.java
│ │ └── resources/
│ │ ├── application.properties
│ │ ├── application-prod.properties
│ │ ├── application-test.properties
│ │ └── data.sql
│ └── test/
│ └── java/
│ └── RAR/TickFlow/
│ ├── TaskControllerTest.java
│ └── TickFlowApplicationTests.java
├── .dockerignore
├── .gitignore
├── docker-compose.yml
├── Dockerfile
├── mvnw
├── mvnw.cmd
├── pom.xml
├── README.md
└── Tick-Flow API_Documentation.md
To ensure a seamless integration and clear understanding of the backend services, this project utilizes Swagger (OpenAPI 3) for API documentation. It provides a visual interface that allows you to interact with the API's resources without having any implementation logic in place.
Once the application is running locally, you can access the interactive documentation at:
- Swagger UI: https://tick-flow.onrender.com/swagger-ui
- Start the Spring Boot application.
- Open your browser and navigate to the Swagger UI link provided above.
- From the dashboard, you can explore all available endpoints, see required request bodies, and test the API directly.
http://localhost:8080/api/tasks| Method | Endpoint | Description |
|---|---|---|
| GET | /api/tasks |
Get all tasks |
| GET | /api/tasks/{id} |
Get task by ID |
| POST | /api/tasks |
Create a new task |
| PUT | /api/tasks/{id} |
Update a task |
| DELETE | /api/tasks/{id} |
Delete a task |
git clone <repository-url>
cd TickFlowUpdate application.properties:
spring.datasource.url=jdbc:mysql://localhost:3306/tickflow
spring.datasource.username=root
spring.datasource.password=your_password
spring.jpa.hibernate.ddl-auto=update./mvnw spring-boot:runWindows:
mvnw spring-boot:runThe project uses H2 database for integration testing.
mvnw testRun the application and MySQL database:
docker compose up --buildGitHub Actions workflow:
.github/workflows/ci.ymlPipeline steps:
- Checkout repository
- Setup Java 17
- Cache Maven dependencies
- Run tests using
mvn clean verify
The project is developed collaboratively using a branch-based workflow.
Each contributor works on their own feature branch and creates pull requests before merging into the master branch.
The application is deployed on Render.
Deployed URL: https://tick-flow.onrender.com
Environment variables:
SPRING_PROFILES_ACTIVE=prod
DATABASE_URL=<render-database-url>- Authentication / Authorization
- Frontend application
The following individuals contributed to the development of this project:
- Ruzi Xancanov
- Revan Abushov
- Ayhan Aghayev
⭐ If you like this project, don't forget to give it a star!