Proiect DAW - cerințe
Proiectul individual reprezintă 40% din nota finală. Aplicație web full-stack: backend .NET + frontend Angular (sau alt framework SPA), construită peste semestru, în paralel cu laboratoarele.
Punctajele totalizează 50p; maximul scorabil e 40p. Task-urile required sunt obligatorii; din restul se completează până la 40p.
Backend (.NET) - 30p
ASP.NET Core Web API - 5p required · lab 8 · lab 2
- Minimum 5 controllers, design RESTful
- Endpoint-uri:
GET /api/items,GET /api/items/{id},POST /api/items,PUT /api/items/{id},DELETE /api/items/{id} - Status codes corecte: 200, 201 (cu
Locationheader), 204, 400, 401, 403, 404 (vezi tabelul din lab 2)
Entity Framework Core - 10p required · lab 4, lab 10
- Minimum 6 entități (User și Role se contorizează)
- Relații obligatorii: One-to-Many + Many-to-Many
- Migrations (
dotnet ef migrations add,dotnet ef database update)
Authentication & Authorization - 5p · lab 7
- ASP.NET Core Identity
- Roluri: minimum Admin + User
- Minimum 2 endpoint-uri restricționate la Admin
Exception Handling - 3p · lab 10
- Global exception middleware sau filter, răspunsuri JSON cu status code corespunzător (400, 403, 404, 500)
Logging - 2p · lab 10
ILogger<T>built-in sau Serilog, în service layer / controllers
Architecture - 5p · lab 6, lab 8
- DTOs (fără expunere directă de entități EF)
- Service Layer pentru business logic
- Repository Pattern pentru data access
- Dependency Injection prin
Program.cs
Frontend - 20p
Două abordări acceptate, ambele cu cerințele de mai jos:
- A. Hibrid (
default): MVC + Razor server-rendered (lab 4-9), plus minim o pagină / secțiune / widget pe framework SPA modern (Angular, React, Vue, Svelte) care consumă/api/*. - B. SPA stand-alone: frontend complet separat (Angular / React / Vue / Svelte) peste API-ul
/api/*(lab 11-12).
Vanilla JS / jQuery nu se contorizează ca framework SPA.
Minimum 5 pages - 5p required · A: lab 4-5 · B: lab 11
Login + Register se contorizează. Restul: Home, Detail, Create/Edit, Profile, etc. Pentru A, minim 1 din cele 5 pe framework SPA; pentru B, 5 components routed.
Authentication (login / register) - 4p · A: lab 7 · B: lab 12
Form de login + register conectat la backend.
Protected routes - 2p · A: lab 7 · B: lab 12
Pagini care necesită autentificare; redirect spre login pentru anonimi.
Forms cu validation - 2p · A: lab 4-5 · B: lab 12
Validare client-side + server-side, mesaje per câmp.
API integration - 2p required · lab 11, lab 12
/api/* consumat de un client JS framework: SPA complet (B) sau componentul SPA din varianta A face HttpClient/fetch cu handling de loading/error. Postman + Swagger UI nu satisfac singure această cerință.
Structura proiect - 5p · guest lecture - Clean Architecture, lab 6
Cod organizat clar (per feature sau per layer).
Notare
- Total task-uri: 50p
- Maximum scorabil: 40p
requiredobligatoriu; restul se completează până la 40p- Proiectul = 40% din nota finală
Punctajul final se ajustează în funcție de prezentare. Contează înțelegerea și stăpânirea proiectului și a conceptelor.
Bune practici (recomandat)
Nu se punctează, dar contează: proiectul rămâne în CV-ul vostru și îl veți reciti peste un an.
- Adăugați
bin/,obj/,.vs/,node_modules/în.gitignore- fără build-uri sau dependințe în repo. - Numiți repo-ul clar, nu “ProiectPAW” (ex:
event-booking-app). README.mdcu descriere scurtă, pași de rulare și câteva screenshot-uri.
Exemple de teme
Idei orientative; orice temă e acceptată.
Event Management System
Entități: User, Event, Ticket, Venue, Category, EventRegistration Features: creare evenimente, înregistrare participanți, gestiune venues + categorii, capacity limit
Online Course Platform
Entități: Course, Lesson, Instructor, Student, Enrollment, Review Features: enrollment, lecții în cadrul cursurilor, reviews / ratings, gestiune cursuri
Restaurant Reservation System
Entități: Restaurant, Table, Reservation, Menu, MenuItem, Category, Review Features: booking mese, gestiune rezervări, browsing meniu, reviews
Mapare cerințe -> laboratoare
Backend
| Cerință | Lab principal | Suport |
|---|---|---|
| Web API + REST | 8 | 2, 6 |
| EF Core + migrations | 4 | 5, 7, 10 |
| Relații 1-N | 4 | 5 |
| Relații N-N | 10 | |
| ASP.NET Core Identity | 7 | 8 |
| Roluri (Admin / User) | 7 | 8 |
[Authorize] admin-only |
7 | 8 |
| Exception middleware | 10 | |
| Logging (Serilog) | 10 | |
| DTOs | 8 | |
| Service Layer + Repository | 6 | 7, 8 |
| Dependency Injection | 6 |
Frontend
| Cerință | A. Hibrid | B. SPA |
|---|---|---|
| 5 pages | 4 Views Razor + 1 component SPA | 5 components routed |
| Auth login/register | 7 cookie + Identity | 12 JWT + interceptor |
| Protected routes | 7 [Authorize] |
12 CanActivate |
| Forms validation | 4-5 DataAnnotations + asp-for |
12 reactive forms |
API integration (required) |
11 HttpClient/fetch -> /api/* |
11 + 12 JWT interceptor |
| Folder structure | guest lecture Clean Architecture + 6 Controllers/Services/Repositories/Views | guest lecture + 11 components/services/guards |
Sursă: cerințele proiectului propuse de Mihai Gurau pentru cursul CTI Proiectarea Aplicațiilor Web 2025-2026.