RacersClub API is a clean, modular backend service that manages a fictional racing club.
It provides CRUD operations for Racers, Cars, and Races, built with Spring Boot + Kotlin and following Domain-Driven Design (DDD) principles.
This project is designed as a practical study of clean backend architecture using modern Java/Kotlin technologies, while applying industry best practices.
This project follows the Domain-Driven Design (DDD) layered architecture:
src
└── main
├── domain # Entities, Value Objects, Domain Services
├── application # Use Cases (Services, DTOs)
├── infrastructure
│ ├── repository (JPA implementations)
│ ├── config (Spring configurations)
│ └── persistence (Postgres entities/mappings)
└── interfaces # Controllers (REST endpoints)✅ Domain logic is isolated from framework & infrastructure
✅ Clear separation of concerns for scalability and testability
- Language: Kotlin
- Framework: Spring Boot
- ORM & Persistence: Spring Data JPA + Hibernate
- Database: PostgreSQL (hosted on Neon)
- Hosting: Render
- Other dependencies:
- Lombok
- Spring Web (REST)
- Spring Security
- Spring Boot DevTools (optional)
- Validation (Jakarta)
- Java Mail Sender (email validation)
- 🔐 User Authentication with JWT and Email validation
- 📇 Manage Racers (create, read, update, delete)
- 🚗 Manage Cars assigned to Racers
- 🏁 Manage Races (scheduling, participants)
- 📦 RESTful API endpoints with JSON payloads
- 🛡️ Validation and error handling
- JDK 17+ (Temurin or OpenJDK)
- Gradle (or use the Gradle wrapper)
- PostgreSQL (local or Neon instance)
- VS Code / IntelliJ IDEA (with Kotlin & Spring plugins)
git clone https://github.com/DevDario/racersclub-api.gitcd racersclub-api- Create .env (or application-dev.yml) with your DB credentials:
SPRING_DATASOURCE_URL=jdbc:postgresql://localhost:5432/racersclub
SPRING_DATASOURCE_USERNAME=postgres
SPRING_DATASOURCE_PASSWORD=yourpassword./gradlew bootRun- Open:
http://localhost:8080/api/auth
http://localhost:8080/api/racers
http://localhost:8080/api/cars
http://localhost:8080/api/races-
Database is deployed on Neon (serverless PostgreSQL) 🌍
-
Backend is deployed on Render 🌍
-
Use Render’s Dockerfile or Build & Deploy from GitHub. Remember to add environment variables for DB URL, username, and password.
racersclub-api
├── build.gradle.kts
├── settings.gradle.kts
├── src
│ ├── main
│ │ ├── domain
│ │ ├── application
│ │ ├── infrastructure
│ │ └── interfaces
│ └── test
└── README.mdContributions, issues, and feature requests are welcome! Feel free to open an issue or submit a pull request.
This project is licensed under the MIT License
Author: Dário Silva
GitHub: @DevDario 😉