Skip to main content

Overview

Hub is built with modern, production-ready technologies focused on developer experience, performance, and scalability.

Backend Stack

Core Framework

Spring Boot

Version: 3.5.10Enterprise Java framework for building production-ready applications with minimal configuration.

Java

Version: 21Modern Java with records, pattern matching, and virtual threads support.

Web & API

TechnologyVersionPurpose
Spring Web3.5.10RESTful API development
Spring WebFlux3.5.10Reactive web client for external APIs
SpringDoc OpenAPI2.8.9API documentation (Swagger UI)
Spring Validation3.5.10Bean validation and request validation
Access API documentation at http://localhost:8080/swagger-ui.html when running the backend.

Data & Persistence

PostgreSQL: 16
PostGIS: 3.4 (Geospatial extension)
Key Features:
  • PostGIS: Geospatial queries for venue location search
  • Flyway: Version-controlled database migrations (db/migration)
  • Hibernate Spatial: JTS geometry types for coordinates
  • JPA Auditing: Automatic createdAt/updatedAt tracking

Security & Authentication

TechnologyVersionPurpose
Spring Security3.5.10Security framework
OAuth2 Resource Server3.5.10JWT token validation
Auth0ExternalIdentity provider (JWT issuer)
Security Configuration:
  • JWT-based authentication via Auth0
  • Role-based access control (RBAC)
  • Stateless session management
  • CORS configuration for frontend

External Services

Cloudinary

Version: 2.3.2Image upload, storage, and transformation service for venue photos and user avatars.

Brevo (Sendinblue)

API IntegrationTransactional email service for booking confirmations and notifications.

Utilities & Tools

TechnologyVersionPurpose
LombokLatestReduce boilerplate (getters, constructors, builders)
Caffeine CacheLatestIn-memory caching for performance
Spring Actuator3.5.10Health checks and monitoring endpoints
Thymeleaf3.5.10Email template rendering

Testing

JUnit 5: Latest
Spring Boot Test: 3.5.10
Mockito: Included in Spring Boot Test
Testing Strategy:
  • Unit Tests: Pure domain logic with no dependencies
  • Integration Tests: Use Testcontainers for real PostgreSQL
  • API Tests: Test controllers with @SpringBootTest

Build Tools

ToolVersionPurpose
Maven3.x (via wrapper)Dependency management and build
Maven WrapperIncludedEnsures consistent Maven version
Spotless3.2.1Code formatting (Google Java Format)
Google Java Format1.17.0Java code formatter
Build Commands:
./mvnw clean package      # Build JAR
./mvnw test              # Run tests
./mvnw spotless:apply    # Format code

Frontend Stack

Core Framework

Next.js

Version: 16.1.6React framework with server-side rendering, file-based routing, and API routes.

React

Version: 19.2.3Modern React with hooks, concurrent rendering, and server components.

UI & Styling

TechnologyVersionPurpose
Tailwind CSS4.2.0Utility-first CSS framework
Radix UILatestAccessible, unstyled UI primitives
shadcn/ui3.8.5Pre-built components based on Radix
Lucide React0.575.0Icon library
class-variance-authority0.7.1Component variants and styles
tailwind-merge3.5.0Merge Tailwind classes intelligently
Component Libraries Used:
  • Dialogs, Dropdowns, Tooltips (Radix UI)
  • Forms, Buttons, Cards (shadcn/ui)
  • Charts (Recharts)
  • Carousels (Embla Carousel)

Authentication

Auth0 Next.js SDK

Version: 4.15.0Official Auth0 SDK for Next.js with automatic session management and route protection.
Features:
  • Automatic token refresh
  • Protected API routes
  • Server-side session management
  • Role-based access control

Forms & Validation

TechnologyVersionPurpose
React Hook Form7.71.2Performant form library
Zod4.3.6TypeScript-first schema validation
@hookform/resolvers5.2.2Zod integration for React Hook Form
Example Usage:
const schema = z.object({
  email: z.string().email(),
  courtId: z.string().uuid(),
});

const form = useForm({
  resolver: zodResolver(schema)
});

Maps & Geolocation

Leaflet

Version: 1.9.4Open-source interactive maps for venue location display and search.

Country State City

Version: 3.2.1Location data for dropdowns and search filters.

UI Utilities

TechnologyVersionPurpose
next-themes0.4.6Dark mode support
date-fns4.1.0Date manipulation and formatting
sonner2.0.7Toast notifications
vaul1.1.2Drawer component for mobile
cmdk1.1.1Command palette (⌘K)
recharts3.7.0Charts for analytics

Development Tools

TypeScript: 5.9.3
@types/react: 19.2.14
@types/node: 20.19.33

Infrastructure

Docker & Containers

PostgreSQL: postgis/postgis:16-3.4
pgAdmin: dpage/pgadmin4
Backend: Custom Dockerfile
Containers:
  • hub-postgres: PostgreSQL 16 with PostGIS 3.4
  • hub-pgadmin: Database management UI
  • hub-backend: Spring Boot application (optional)

Database

FeatureTechnology
RDBMSPostgreSQL 16
GeospatialPostGIS 3.4
MigrationsFlyway
Connection PoolHikariCP
PostgreSQL Extensions:
  • postgis: Geospatial data types and functions
  • uuid-ossp: UUID generation (if needed)

Development Tools

pgAdmin

Web-based PostgreSQL managementAccess: http://localhost:5050

Swagger UI

Interactive API documentationAccess: http://localhost:8080/swagger-ui.html

Monitoring & Observability

Spring Actuator Endpoints

Enabled endpoints:
  • /actuator/health - Health check
  • /actuator/info - Application info
  • /actuator/mappings - Request mappings
Health details are hidden in production (show-details: never)

Caching Strategy

TechnologyUse Case
CaffeineIn-memory caching for frequently accessed data
Spring CacheDeclarative caching with @Cacheable

Key Configuration Files

FilePurpose
backend/pom.xmlMaven dependencies and plugins
backend/src/main/resources/application.yamlSpring configuration
docker-compose.ymlInfrastructure services
MakefileDevelopment commands
frontend/package.jsonnpm dependencies
frontend/tailwind.config.tsTailwind configuration
frontend/tsconfig.jsonTypeScript configuration

Version Summary

Backend Core

  • Java 21
  • Spring Boot 3.5.10
  • PostgreSQL 16
  • PostGIS 3.4

Frontend Core

  • Next.js 16.1.6
  • React 19.2.3
  • TypeScript 5.9.3
  • Tailwind CSS 4.2.0

External Services

  • Auth0 (cloud)
  • Cloudinary (cloud)
  • Brevo (cloud)

Next Steps

Setup Guide

Set up your development environment

Architecture

Learn about the hexagonal architecture

Build docs developers (and LLMs) love