SaglikCell is a modern, production-structured personal health tracking platform built for Turkcell CodeNight 2026. It enables users to log and analyze daily health metrics, set personal goals, monitor progress through rich analytics, receive smart notifications, and personalize their experience — all powered by a modular monolith backend designed for future microservice extraction without premature distributed complexity.
┌─────────────────────────────────────────┐
│ Browser │
└───────────────────┬─────────────────────┘
│ HTTPS
┌───────────────────▼─────────────────────┐
│ Frontend (React + Vite) │
│ TailwindCSS · shadcn/ui · Zustand │
│ TanStack Query · Framer Motion │
└───────────────────┬─────────────────────┘
│ REST /api/v1
┌───────────────────▼─────────────────────┐
│ Backend API (Spring Boot) │
│ Modular Monolith · JWT Auth · JPA │
│ auth · users · metrics · goals · │
│ analytics · notifications · │
│ subscriptions · admin │
└──────────────┬──────────┬───────────────┘
│ │
┌─────────────────────────▼──┐ ┌───▼─────────────────────────┐
│ PostgreSQL 16 │ │ Redis 7 │
│ Primary data store │ │ Sessions · caching · │
│ UUID PKs · migrations │ │ token blacklist │
└────────────────────────────┘ └──────────────────────────────┘
| Layer | Technology |
|---|---|
| Frontend | React 18, TypeScript, Vite, TailwindCSS, shadcn/ui, Framer Motion |
| TanStack Query, Zustand, React Hook Form, Zod, i18next, Recharts | |
| Backend | Java 21, Spring Boot, Spring Security, Spring Data JPA |
| PostgreSQL 16, Redis 7, JWT (access + refresh tokens) | |
| Infra | Docker, Docker Compose, Nginx (reverse proxy + static file serving) |
# 1. Clone the repository
git clone https://github.com/your-org/codenight.git
cd codenight
# 2. Create your local environment file
cp .env.example .env
# Edit .env and set secure values for all secrets
# 3. Start the full stack
make up
# Services will be available at:
# Frontend: http://localhost:3000
# Backend API: http://localhost:8080/api/v1
# Swagger UI: http://localhost:8080/swagger-ui/index.htmlNote: The first build may take a few minutes as Docker pulls base images and compiles the application.
| Command | Description |
|---|---|
make help |
Print all available commands |
make up |
Build images and start all services (detached) |
make down |
Stop and remove all containers |
make build |
Build Docker images without starting |
make logs |
Stream logs from all services |
make backend-logs |
Stream logs from the backend service only |
make frontend-logs |
Stream logs from the frontend service only |
make db-shell |
Open a psql shell inside the postgres container |
make redis-cli |
Open a redis-cli shell inside the redis container |
make test-backend |
Run the backend test suite |
make clean |
Remove containers, volumes, and orphan containers |
The backend is organized as a modular monolith with the following bounded contexts:
| Domain | Description |
|---|---|
auth |
JWT authentication, token issuance, rotation, refresh, and secure logout |
users |
User profiles, preferences, theme, language, and dashboard personalization |
metrics |
Daily health metric entry, time-series storage, and daily aggregation |
goals |
Goal creation, progress tracking, streak calculation, and achievement logic |
analytics |
Weekly/monthly averages, trend analysis, BMI calculations, comparisons |
notifications |
In-app and real-time notifications via WebSocket/SSE, reminder scheduling |
subscriptions |
Free vs. Premium plan management, feature gating, and upgrade flow |
admin |
User management, system monitoring, and admin-only operations |
codenight/
├── apps/
│ ├── backend/ # Spring Boot application (Java 21)
│ └── frontend/ # React + Vite application (TypeScript)
├── infrastructure/
│ └── nginx/ # Nginx reverse proxy configuration
├── .github/
│ └── PULL_REQUEST_TEMPLATE.md
├── docker-compose.yml # Full stack orchestration
├── .env.example # Environment variable template
├── Makefile # Developer convenience commands
├── .editorconfig # Consistent editor settings
├── .gitignore # Ignored files
└── CLAUDE.md # AI-assisted development context
| Prefix | Use case |
|---|---|
feature/ |
New features (e.g. feature/goal-streaks) |
fix/ |
Bug fixes (e.g. fix/token-expiry) |
chore/ |
Maintenance, deps, config (e.g. chore/update-deps) |
- Branch off
mainusing the naming convention above. - Write tests for new business logic.
- Fill in the PR template completely.
- Request a review from at least one team member.
- Squash-merge after approval.
Developed by a team of 3 developers for Turkcell CodeNight 2026.