Tasks
π A backend Task Application built with Java 21 and Spring Boot 3.5, featuring User Authentication, Secure REST APIs, and database version control with Liquibase. This project demonstrates core backend development skills such as API design, authentication/authorization, database schema migrations, CI/CD readiness, and deployment.
Install / Use
/learn @engripaye/TasksREADME
π Todo App (Spring Boot + PostgreSQL + JWT + Liquibase)
A backend Todo application built with Java 21 and Spring Boot 3.5, featuring user authentication, secure REST APIs, and database version control with Liquibase. This project demonstrates core backend development skills such as API design, authentication/authorization, database schema migrations, CI/CD readiness, and deployment.
π Features
- π User Authentication & Authorization with JWT (register & login)
- ποΈ CRUD APIs for managing Todos (per authenticated user)
- π οΈ Spring Boot 3.5 (REST Controllers, Services, Repositories)
- ποΈ PostgreSQL Database with schema migrations via Liquibase
- β±οΈ Cron Jobs Ready (extendable for scheduled tasks)
- π GitLab CI/CD Ready for automated build & deploy
- βοΈ Deployable on Render / Railway / Heroku
π Tech Stack
- Backend: Java 21, Spring Boot 3.5
- Database: PostgreSQL
- Migrations: Liquibase (SQL format)
- Security: Spring Security + JWT
- Build Tool: Maven
- Version Control: Git + GitLab/GitHub
- Deployment: Render / Railway
βοΈ Project Structure
src/main/java/com/example/todo/
βββ TodoApp.java # Main entry point
βββ config/SecurityConfig.java # Spring Security setup
βββ controller/ # REST API controllers
βββ dto/ # Data transfer objects
βββ exception/ # Custom exception handling
βββ model/ # Entities (User, Todo)
βββ repository/ # Spring Data JPA Repos
βββ security/ # JWT util & filters
βββ service/ # Business logic
π οΈ Setup Instructions
1. Clone Repository
git clone https://github.com/your-username/todo-app.git
cd todo-app
2. Configure Database
Create a PostgreSQL database and update application.yml:
spring:
datasource:
url: jdbc:postgresql://localhost:5432/tododb
username: postgres
password: yourpassword
jpa:
hibernate:
ddl-auto: validate
show-sql: true
liquibase:
change-log: classpath:db/changelog/db.changelog-master.xml
3. Run Locally
./mvnw spring-boot:run
or
mvn clean package
java -jar target/todo-app-0.0.1-SNAPSHOT.jar
4. Test APIs with Postman
- POST
/api/auth/registerβ Register new user - POST
/api/auth/loginβ Get JWT token - POST
/api/todosβ Create todo (JWT required) - GET
/api/todosβ List userβs todos - PUT
/api/todos/{id}β Update todo - DELETE
/api/todos/{id}β Delete todo
π¦ Deployment (Render Example)
-
Push code to GitHub.
-
Create a PostgreSQL instance on Render.
-
Add environment variables in Render dashboard:
SPRING_DATASOURCE_URLSPRING_DATASOURCE_USERNAMESPRING_DATASOURCE_PASSWORDJWT_SECRET
-
Deploy the service β Test with your deployed URL.
π§ͺ Example API Requests (cURL)
# Register User
curl -X POST http://localhost:8080/api/auth/register \
-H "Content-Type: application/json" \
-d '{"username":"john","password":"123456"}'
# Login User
curl -X POST http://localhost:8080/api/auth/login \
-H "Content-Type: application/json" \
-d '{"username":"john","password":"123456"}'
# Create Todo
curl -X POST http://localhost:8080/api/todos \
-H "Authorization: Bearer <JWT_TOKEN>" \
-H "Content-Type: application/json" \
-d '{"title":"Finish Spring Boot Project"}'
π Roadmap
- [ ] Add scheduled cron jobs (e.g., daily todo reminders)
- [ ] Add frontend UI (React or Angular)
- [ ] Deploy with Docker & Kubernetes for scalability
π¨βπ» Author
Babatunde Olabowale Full Stack Backend Developer | Java | Spring Boot | PostgreSQL | DevOps
β‘ This project highlights backend engineering skills for building secure, scalable, and production-ready APIs.
