Prerequisites
Before setting up the project, ensure you have the following installed:Java 21
Required for backend development
Node.js 20+
Required for frontend development
Docker & Docker Compose
Required for running PostgreSQL and services
Maven
Java build tool (included via Maven Wrapper)
Initial Setup
Configure environment variables
Create a
.env file in the project root with the following variables:For local development, you can use dummy values for Auth0 and Cloudinary if you’re not testing those features.
Start infrastructure services
Use Docker Compose to start PostgreSQL and pgAdmin:This starts:
- PostgreSQL (with PostGIS extension) on port
5432 - pgAdmin on port
5050(access athttp://localhost:5050)
pgAdmin credentials:
[email protected] / adminRun the backend
The backend uses Spring Boot with Maven:Or manually:The API will be available at
http://localhost:8080Development Workflow
Backend Commands
The project includes aMakefile with helpful commands:
Frontend Commands
Database Commands
API Documentation
Once the backend is running, you can access:- Swagger UI:
http://localhost:8080/swagger-ui.html - OpenAPI Spec:
http://localhost:8080/v3/api-docs
Code Quality
Backend
The project uses Spotless with Google Java Format for code formatting:Always run
make backend-format before committing to ensure consistent code style.Frontend
The frontend uses ESLint for linting:Testing
Backend Tests
The backend uses JUnit 5 and Testcontainers for integration testing:Troubleshooting
Database Connection Issues
If the backend can’t connect to PostgreSQL:- Ensure Docker containers are running:
make ps - Check database logs:
make logs-db - Verify environment variables in
.env - Try resetting the database:
make db-reset && make up
Port Conflicts
If ports5432, 8080, or 3000 are already in use:
- Stop conflicting services
- Or modify the port numbers in
.envanddocker-compose.yml
Maven Build Issues
If you encounter Maven build errors:Next Steps
Architecture
Learn about the hexagonal architecture
Tech Stack
Explore the technologies used