1. Demo Proiect: E-Shop Cloud Native
Arhitectură modernă, complet distribuită în Cloud folosind servicii Free Tier.
☁️ Infrastructure Stack
- Frontend Host Netlify
- Backend Host Render (Docker)
- Database Neon (Serverless Postgres)
- Caching Upstash (Redis)
- Realtime Chat Firebase Firestore
2. Cerințe & Punctaj
Structura de notare pentru proiectul final.
Nivel Basic
Nota 8"Setup Cloud Complet & Securitate"
- ✓ Full Deployment: Aplicația trebuie să fie publică (Frontend pe Netlify conectat la Backend pe Render).
- ✓ Cloud Services: Backend-ul trebuie să comunice cu Neon (Postgres), Upstash (Redis) și Firebase.
-
✓
Role Management: Implementare 2 tipuri de useri:
CUSTOMER: Vede produse, are acces la Chat.ADMIN: Poate adăuga/șterge produse (CRUD).
Nivel Avansat
Nota 10"Logic & Validation & Optimization"
- Userii noi primesc automat rolul
CUSTOMER. - Validare Unicitate: Dacă emailul există deja, backend-ul NU crapă cu eroare 500, ci returnează
400 Bad Requestsau409 Conflictcu mesajul JSON:{ "message": "Email already exists" }. - Frontend-ul prinde eroarea și afișează un mesaj user-friendly (Toast/Alert), nu eroarea tehnică.
Folosește @Valid în Controller și DTO. Trebuie să returneze 400 Bad Request cu mesaje specifice pentru fiecare încălcare:
- "Email-ul este invalid."
- "Parola trebuie să aibă minim 8 caractere."
- "Parola trebuie să conțină o majusculă și un număr."
Optimizare SQL: Produsele cu stock = 0 sunt considerate inactive.
Creează un Partial Index în PostgreSQL care indexează doar produsele unde stock > 0.
CREATE INDEX ... WHERE stock > 0;
✨ Bonus Points: AI Integration +1p Extra
Integrează un LLM (HuggingFace / OpenRouter / Groq) pentru o funcționalitate utilă.
Use Case: "AI Description"
În formularul de "Add Product" (Admin), lângă câmpul Descriere, adaugă un buton "✨ Generate with AI".
- Adminul scrie titlul: "Laptop Gaming ASUS ROG Strix".
- Apasă butonul. Backend-ul trimite un request securizat către un API AI.
- Prompt Backend: "Write a 2-sentence catchy sales pitch for a product named {title}.".
- Textarea-ul din React se completează automat cu textul generat.
Detalii Tehnice
HuggingFace sau OpenRouter.ai Inference API (Ambele au Free Tier).
Cheia API NU trebuie să fie expusă în Frontend. Apelul către AI se face din Spring Boot (Backend).
Auth: Bearer sk-or-v1-...
Body: { "model": "mistralai/mistral-7b-instruct", ... }