A robust, production-ready Full Stack Application featuring a React frontend and a Node.js backend. It showcases Clean Architecture, TypeScript, PostgreSQL, Docker, and Nginx reverse proxying.
- React 19 & Vite: Fast, modern UI development.
- Tailwind CSS: Utility-first styling with "Glassmorphism" aesthetics.
- Time Tracking UI: Clean interface to manage work logs.
- Clean Architecture: Separation of concerns (Domain, Application, Infrastructure, Interface).
- Node.js & Express: Scalable server-side logic.
- PostgreSQL: Relational database with connection pooling.
- Flyway: Automated database migrations.
- Monorepo Structure: Separate
frontendandbackenddirectories. - Nginx Gateway: Serves static files and proxies API requests on port 80.
- Docker Compose: Orchestrates the entire stack (Frontend, Backend, DB, Migrations).
- Docker & Docker Compose
- Node.js (for local development)
Run the entire application stack:
docker-compose up --build- Web App: http://localhost (Nginx -> React)
- API: http://localhost/items (Nginx -> Node.js)
- DB:
localhost:5432
You can now manage both frontend and backend from the root directory using the centralized package.json.
-
Install Dependencies (Installs for both frontend and backend):
npm install
-
Start Applications:
- Frontend:
npm run start:frontend - Backend:
npm run start:backend
- Frontend:
-
Build Applications:
- Frontend:
npm run build:frontend - Backend:
npm run build:backend
- Frontend:
├── package.json # Root configuration & workspaces
├── backend/ # Node.js Application
│ ├── src/ # Source code (Clean Architecture)
│ ├── db/ # Database migrations
│ └── Dockerfile # Backend container
│
├── frontend/ # React Application
│ ├── src/ # UI Components
│ └── Dockerfile # Frontend + Nginx container
│
└── docker-compose.yml # Stack orchestration
Run all tests across the entire monorepo from the root:
npm test- Frontend:
npm run test --workspace=frontend - Backend:
npm run test --workspace=backend
Import backend/postman_collection.json into Postman.
The project uses a Jenkinsfile configured to build and deploy from the backend/ directory.
- Build: Compiles TypeScript.
- Deploy: Executes
run-hub.sh(located inbackend/) to pull/run Docker images.