Skip to content

xaprier/codenight

Repository files navigation

SaglikCell

Docker Java 21 React TypeScript Spring Boot PostgreSQL

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.


Architecture Overview

                          ┌─────────────────────────────────────────┐
                          │              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            │
               └────────────────────────────┘  └──────────────────────────────┘

Tech Stack

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)

Quick Start

# 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.html

Note: The first build may take a few minutes as Docker pulls base images and compiles the application.


Available Make Commands

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

Domain Modules

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

Project Structure

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

Contributing

Branch Naming

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)

Pull Request Process

  1. Branch off main using the naming convention above.
  2. Write tests for new business logic.
  3. Fill in the PR template completely.
  4. Request a review from at least one team member.
  5. Squash-merge after approval.

Team

Developed by a team of 3 developers for Turkcell CodeNight 2026.

About

Turkcell Codenight

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors