Skip to content

Kevinbeltran123/DeporTur

Repository files navigation

DeporTur

Java Spring Boot React TypeScript PostgreSQL Auth0

Full-stack platform for managing tourist destinations, sports equipment inventory, and reservations with real-time analytics. React + Vite frontend backed by a Spring Boot 3 REST API on PostgreSQL (Supabase), secured with Auth0 JWT authentication.


Features

  • Reservations — Full lifecycle management with pricing policies, discounts, surcharges, and conflict detection
  • Equipment inventory — Track availability by type and destination with operational status
  • Admin dashboard — Real-time KPIs, charts (Nivo), and interactive maps (Leaflet) via React Query
  • Pricing policies — Configurable rules by season, duration, or customer loyalty tier
  • Auth0 security — JWT roles enforced on every endpoint; Axios injects tokens automatically
  • Testing — JUnit 5 + Mockito + MockMvc (backend), Vitest + Testing Library + MSW (frontend)

Tech Stack

Layer Technologies
Frontend React 19, Vite 5, TypeScript, Tailwind CSS, TanStack Query 5, Auth0 React SDK
Visualizations Nivo (charts), Leaflet + MarkerCluster (maps)
Backend Spring Boot 3.1, Java 21, Spring Data JPA, Auth0 Resource Server
Database PostgreSQL via Supabase
Auth Auth0 + JWT (roles embedded in token)

Quick Start

Prerequisites

  • Node.js >= 18, npm >= 9
  • Java 21 (Temurin/OpenJDK), Maven 3.9+
  • Supabase project or local PostgreSQL instance
  • Auth0 application configured

Setup

git clone https://github.com/Kevinbeltran123/DeporTur.git
cd DeporTur
cp .env.example .env   # Fill in Auth0 and Supabase credentials

Run

./start-backend.sh     # Spring Boot on http://localhost:8080/api
./start-frontend.sh    # Vite on http://localhost:5173

Project Structure

DeporTur/
├── backend/           # Spring Boot (controllers, services, repositories, DTOs)
├── frontend/          # React SPA (pages, components, hooks, services)
├── start-backend.sh
├── start-frontend.sh
└── Dockerfile         # Multi-stage build (optional)

Key API Endpoints

Endpoint Description
GET /api/dashboard/metricas KPIs: clients, reservations, revenue, status breakdown (cached 5 min)
GET /api/dashboard/equipos-por-tipo Equipment totals and availability by type
GET /api/dashboard/destinos-populares Destinations ranked by reservations
GET/POST /api/reservas Reservation CRUD with overlap validation
GET /api/equipos, GET /api/destinos Equipment and destination listings

Environment Variables

Variable Description
SUPABASE_DB_URL PostgreSQL JDBC connection string
AUTH0_DOMAIN Auth0 issuer domain
AUTH0_AUDIENCE API audience validated by the backend
VITE_AUTH0_CLIENT_ID Public client ID for the SPA
VITE_API_URL Backend base URL (default: http://localhost:8080/api)

Testing

cd backend && mvn clean test       # JUnit 5 + Mockito + JaCoCo coverage report
cd frontend && npm run test        # Vitest + Testing Library

About

Full-stack platform for managing tourist destinations, sports equipment inventory and reservations. React + Vite frontend, Spring Boot 3 backend, PostgreSQL (Supabase) and Auth0 authentication.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors