RememberMe API is the backend of a full-stack task-management application currently being developed with Spring Boot (backend) and Angular (frontend). The goal of the system is to help users organize their personal tasks while also providing smart reminders through email and other notification mechanisms (coming soon).
This API handles:
- Secure user authentication using JWT
- Task creation, edition, deletion, and retrieval
- Isolation of user data (each user only accesses their own tasks)
- Database migrations via Flyway
Future planned capabilities include:
📧 Automated email reminders based on task due dates
🔔 Push notifications for upcoming tasks
🗓️ Calendar-based task visualization
👤 User settings and customization
This project is part of my portfolio and demonstrates my ability to design and build professional backend architectures.
- Java 21
- Spring Boot 3
- Spring Web
- Spring Security (JWT)
- Spring Data JPA
- MySQL
- Flyway
- Lombok
- User registration and authentication (JWT)
- Stateless API using Bearer tokens
- Create / update / delete personal tasks
- Each user only sees their own tasks
- Role system prepared (USER / ADMIN)
- Clean DTO separation (request & response)
- Database versioning with Flyway
- Ready to connect to an Angular front-end
src/main/java/com/zavattieri/RememberMe
├── controller # REST controllers
├── domain # Entities (User, Task)
├── dto # Request/response DTOs
├── repository # Spring Data repositories
├── security # JWT, filter, config
├── service # Business logic
└── RememberMeApplication.java- Clone the repository
git clone https://github.com/USERNAME/rememberme-api.git
cd rememberme-api
- Create the MySQL database
CREATE DATABASE rememberme;
- Create your application.properties
spring.application.name=RememberMe
server.port=8080
# JWT secret (comes from an environment variable)
api.security.jwt.secret=${JWT_SECRET}
# MySQL database connection
spring.datasource.url=jdbc:mysql://localhost:3306/rememberme
spring.datasource.username=root
spring.datasource.password=
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# Hibernate
spring.jpa.hibernate.ddl-auto=none
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true
spring.jpa.database-platform=org.hibernate.dialect.MySQL8Dialect
# Flyway migrations
spring.flyway.enabled=true
spring.flyway.locations=classpath:db/migration
spring.flyway.baseline-on-migrate=true
- Set the JWT environment variable
Windows (PowerShell):
setx JWT_SECRET "your_super_secret_key"
macOS/Linux:
export JWT_SECRET="your_super_secret_key"
- Run the application
mvn spring-boot:run
Authentication Endpoints:
POST /auth/register
POST /auth/login
Successful login returns:
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJSZW1lbWJlck1lIEFQSSIsInN1YiI6ImN6LnJlbWVtYmVyLm1lQGdtYWlsLmNvbSIsImV4cCI6MTc2NDkzNTQ1MX0.R9mGIAqbvaMx6tC9G6dJTdOChfNAUO2tD_GsiMdqUq0",
"name": "Carmem Zava",
"email": "cz.remember.me@gmail.com",
"role": "USER"
}
Use the token in all protected routes:
Authorization: Bearer <token>
Task Endpoints (Protected):
| Method | Route | Description |
|---|---|---|
| GET | /tasks | List user's tasks |
| GET | /tasks/{id} | Get task by ID |
| POST | /tasks/create | Create a task |
| PUT | /tasks/update/{id} | Update a task |
| DELETE | /tasks/delete/{id} | Delete a task |
Example body (create):
{
"title":"Christmas",
"description":"Dinner with friends",
"taskCategory":"FAMILY",
"dueDate":"2025-12-06T18:30:00"
}
Pull requests are welcome.
Please fork the project, create a branch, apply your changes, and submit a PR.
Carmem Zavattieri
Spring Boot • Angular • Full-stack development