Spring Boot 3.5.6 + React 19 + PostgreSQL 17.6 + Vite + TypeScript + shadcn/ui
- ✅ JWT Authentication (Login/Register)
- ✅ Spring Security with custom login
- ✅ PostgreSQL database
- ✅ React + Vite + TypeScript
- ✅ shadcn/ui components
- ✅ Left sidebar navigation
- ✅ Protected routes
- ✅ Database health check
- ✅ Docker containerization
- ✅ Single-command startup
- ✅ Hot reloading (backend with Spring DevTools)
- Docker and Docker Compose
- Git
- Clone the repository
- Run the start script:
./start.sh
The script will:
- Build all Docker images
- Start PostgreSQL, Backend, and Frontend
- Wait for all services to be healthy
- Display access points
- Frontend: http://localhost:3000
- Backend API: http://localhost:8080
- Health Check: http://localhost:8080/actuator/health
- PostgreSQL: localhost:5432
Spring DevTools is enabled for hot reloading. Changes to Java files will automatically reload the application.
For faster frontend development without Docker:
cd frontend
npm install
npm run dev
Access at http://localhost:5173
docker-compose logs -f
View specific service:
docker-compose logs -f backend
docker-compose logs -f frontend
docker-compose logs -f postgres
docker-compose down
To remove volumes (database data):
docker-compose down -v
fullstack-app/
├── backend/ # Spring Boot application
│ ├── src/
│ │ └── main/
│ │ ├── java/ # Java source code
│ │ └── resources/# Configuration files
│ ├── Dockerfile
│ └── build.gradle
├── frontend/ # React application
│ ├── src/
│ │ ├── features/ # Feature-based organization
│ │ └── shared/ # Shared components & utils
│ ├── Dockerfile
│ └── package.json
├── docker-compose.yml
└── start.sh
DB_HOST
: PostgreSQL hostDB_PORT
: PostgreSQL portDB_NAME
: Database nameDB_USER
: Database userDB_PASSWORD
: Database passwordJWT_SECRET
: JWT secret keyPORT
: Backend server port
VITE_API_URL
: Backend API URL
Check logs: docker-compose logs
Ensure PostgreSQL is healthy: docker inspect fullstack-postgres
Change ports in docker-compose.yml
Restart backend container: docker-compose restart backend