Informatii generale
- Categorie: Utilitar
- Judetul: Teleorman
- Surse: GitHub - horizonsnt/FitBuddy_App: Repository for https://replit.com/@alexjay3/FitBuddy-Clone · GitHub, fit-buddy-clone–alexjay3.replit.app
Descriere
FitBuddy este o aplicație web full-stack modernă, inspirată din MyFitnessPal, care ajută utilizatorii să-și monitorizeze alimentația zilnică, să-și logheze antrenamentele și să-și atingă obiectivele de sănătate — totul într-un singur loc.
Tehnologii
Stack: TypeScript end-to-end, monorepo gestionat cu pnpm workspaces.
Frontend (artifacts/fitbuddy) — React 19 + Vite 7, Tailwind CSS 4, shadcn/ui, TanStack Query 5, Recharts, Framer Motion, Wouter (routing).
Backend (artifacts/api-server) — Node.js 24, Express 5, PostgreSQL 16 + Drizzle ORM, validare Zod v4, logging Pino, build cu esbuild.
Autentificare — Clerk (email/parolă + Google SSO). Token Bearer Clerk transmis pe fiecare request API; middleware requireAuth pe toate rutele protejate; provisioning JIT al utilizatorului în baza proprie de date.
Arhitectură contract-first — Contractul API este definit o singură dată în lib/api-spec/openapi.yaml. Orval generează automat din el hook-uri React Query tipizate (folosite de frontend) și scheme Zod (folosite atât de client, cât și de server), eliminând discrepanțele de tipuri.
Baza de date — 9 tabele: users, foods, diary_entries, exercises, weight_entries, goals, friendships, food_favorites, achievements_unlocked.
AI — endpoint /api/ai/scan-food trimite imaginea redimensionată în browser (max 1280px, JPEG recomprimat) către OpenAI Vision care returnează numele alimentului și valorile nutriționale estimate.
Routing — un reverse proxy global rutează traficul: /api/* → serverul Express (port 8080), / → Vite SPA (port 23201).
Internaționalizare — română / engleză, comutare instantă, stocată în localStorage, sincronizată și cu UI-ul Clerk.
Cerinte sistem
Pentru utilizatori (acces la aplicație)
Cerință Detalii
Browser Chrome 90+, Firefox 88+, Safari 14+, Edge 90+
Conexiune internet Necesară (aplicație web)
JavaScript Activat obligatoriu
Notificări browser Opțional — necesare pentru reminder-uri de mese/cântărire
Cameră Opțional — necesară pentru scanarea fotografiilor cu AI
Dispozitive Desktop, tabletă, telefon (interfață responsivă)
Pentru rularea/dezvoltarea aplicației (server)
Cerință Detalii
Node.js 24+
pnpm 9+ (managerul de pachete al monorepo-ului)
PostgreSQL 16+
Variabilă de mediu DATABASE_URL — connection string PostgreSQL
Clerk Cont Clerk activ (chei CLERK_PUBLISHABLE_KEY și CLERK_SECRET_KEY)
OpenAI Cheie API OpenAI pentru funcția de scanare AI a fotografiilor
Porturi 8080 (API Express), 23201 (Vite frontend)
OS Linux / macOS / Windows (cu WSL recomandat)
Resurse minime recomandate (server)
Resursă Minim
RAM 512 MB
CPU 1 vCPU
Stocare 1 GB (aplicație + bază de date)
Rețea HTTPS recomandat în producție
Realizatori
Alexandru Ionescu
- Scoala: Liceul teoretic “Alexandru D. Ghica” Alexandria
- Clasa: 10
- Judet: Teleorman
- Oras: Alexandria
Screenshots


