JA
jakubkobus/university-db-car-rental
University database project
System Zarządzania Wypożyczalnią Samochodów
Projekt z kursu: Bazy danych i zarządzanie informacją
Stack technologiczny
Backend
- NestJS 11.x - Progresywny framework Node.js
- PostgreSQL 16 - Relacyjna baza danych
- Prisma 7.2 - Type-safe ORM
- Passport.js - Middleware uwierzytelniania (JWT + strategie lokalne)
- bcrypt - Hashowanie haseł
- Swagger/OpenAPI - Dokumentacja API
Frontend
- Next.js 16.1 - Framework React z App Router
- React 19.2 - Biblioteka UI
- Tailwind CSS 4.x - Framework CSS utility-first
- shadcn/ui - Biblioteka komponentów zbudowana na Radix UI
- React Hook Form - Zarządzanie formularzami
- Zod - Walidacja schematów
- Axios - Klient HTTP
DevOps
- Docker Compose - Orkiestracja kontenerów
- pnpm - Szybki, oszczędzający miejsce menedżer pakietów
- TypeScript - Rozwój z bezpieczeństwem typów
Struktura Projektu
university-db-car-rental/
├── apps/
│ ├── backend/ # Serwer API NestJS
│ │ ├── src/
│ │ │ ├── auth/ # Uwierzytelnianie i autoryzacja
│ │ │ ├── cars/ # Zarządzanie samochodami
│ │ │ ├── categories/ # Zarządzanie kategoriami
│ │ │ ├── features/ # Zarządzanie funkcjami
│ │ │ ├── maintenance/ # Rekordy konserwacji
│ │ │ ├── rentals/ # Zarządzanie wypożyczeniami
│ │ │ ├── reviews/ # System opinii
│ │ │ └── users/ # Zarządzanie użytkownikami
│ │ └── prisma/ # Schemat bazy danych i migracje
│ │
│ └── web/ # Frontend Next.js
│ └── src/
│ ├── app/ # Strony App Router
│ ├── components/ # Komponenty React
│ ├── context/ # React Context (Auth)
│ └── types/ # Typy TypeScript
│
├── docker-compose.yml # PostgreSQL + Adminer
└── pnpm-workspace.yaml # Konfiguracja monorepo
Wymagania Wstępne
- Node.js (v18 lub wyższy)
- pnpm (v10.25.0 lub wyższy)
- Docker i Docker Compose (dla bazy danych)
Pierwsze Kroki
1. Sklonuj Repozytorium
git clone <url-repozytorium>
cd university-db-car-rental2. Zainstaluj Zależności
pnpm install3. Skonfiguruj Zmienne Środowiskowe .env
4. Uruchom Bazę Danych
docker-compose up -d
# lub
docker compose up -dTo uruchamia:
- Bazę danych PostgreSQL na
localhost:5432 - Adminer (GUI bazy danych) na
http://localhost:8080
5. Uruchom Migracje Bazy Danych
cd apps/backend
npx prisma migrate dev
npx prisma generate6. Zseeduj bazę danych
Wypełnij bazę danych przykładowymi danymi:
npx prisma db seed7. Uruchom Backend
cd apps/backend
pnpm start:dev
# lub
pnpm --filter backend start:devAPI będzie dostępne pod adresem http://localhost:3000/v1
Dokumentacja API (Swagger): http://localhost:3000/docs
8. Uruchom Frontend
W nowym terminalu:
cd apps/web
pnpm dev
# lub
pnpm --filter web devAplikacja webowa będzie dostępna pod adresem http://localhost:3001
Endpointy API
Uwierzytelnianie
POST /v1/auth/login- Logowanie użytkownikaPOST /v1/auth/register- Rejestracja użytkownikaGET /v1/auth/profile- Pobranie profilu aktualnego użytkownikaPATCH /v1/auth/profile- Aktualizacja profilu użytkownika
Samochody (Publiczne)
GET /v1/cars- Lista wszystkich samochodówGET /v1/cars/:id- Szczegóły samochodu
Kategorie (Publiczne)
GET /v1/categories- Lista wszystkich kategoriiGET /v1/categories/:id- Szczegóły kategorii
Funkcje (Publiczne)
GET /v1/features- Lista wszystkich funkcjiGET /v1/features/:id- Szczegóły funkcji
Wypożyczenia (Wymagane uwierzytelnienie)
POST /v1/rentals- Utworzenie wypożyczeniaGET /v1/rentals/my- Pobranie wypożyczeń użytkownikaGET /v1/rentals- Lista wszystkich wypożyczeń (Admin/Pracownik)PATCH /v1/rentals/:id- Aktualizacja statusu wypożyczenia (Admin/Pracownik)
Opinie (Wymagane uwierzytelnienie)
GET /v1/reviews- Lista wszystkich opiniiPOST /v1/reviews- Utworzenie opiniiPATCH /v1/reviews/:id- Aktualizacja własnej opiniiDELETE /v1/reviews/:id- Usunięcie opinii (Admin)
Konserwacja (Admin/Pracownik)
GET /v1/maintenance- Lista rekordów konserwacjiPOST /v1/maintenance- Utworzenie rekordu konserwacjiPATCH /v1/maintenance/:id- Aktualizacja rekorduDELETE /v1/maintenance/:id- Usunięcie rekordu
Użytkownicy (Tylko Admin)
GET /v1/users- Lista wszystkich użytkownikówPOST /v1/users- Utworzenie użytkownikaGET /v1/users/:id- Szczegóły użytkownikaPATCH /v1/users/:id- Aktualizacja użytkownikaDELETE /v1/users/:id- Usunięcie użytkownika
Pełna dokumentacja API jest dostępna w Swagger UI pod adresem http://localhost:3000/docs gdy backend jest uruchomiony.
Schemat Bazy Danych
System używa PostgreSQL z Prisma ORM. Kluczowe encje obejmują:
- User - Użytkownicy systemu z rolami (USER, ADMIN, EMPLOYEE)
- Car - Inwentarz pojazdów ze specyfikacjami
- Category - Kategorie samochodów (SUV, Sedan, Hatchback, itp.)
- Feature - Funkcje samochodów (GPS, AC, Bluetooth, itp.)
- Rental - Transakcje wypożyczeń ze śledzeniem statusu
- Review - Opinie i oceny klientów
- Maintenance - Rekordy konserwacji pojazdów
Zobacz Diagram Encji-Związków w /apps/backend/ERD.png dla wizualnej reprezentacji.
Role Użytkowników
System implementuje kontrolę dostępu opartą na rolach (RBAC) z trzema rolami:
- USER - Zwykli klienci (mogą przeglądać samochody, tworzyć wypożyczenia, pisać opinie)
- EMPLOYEE - Członkowie personelu (zarządzają samochodami, wypożyczeniami i konserwacją)
- ADMIN - Administratorzy systemu (pełny dostęp włącznie z zarządzaniem użytkownikami)
Dostęp do Bazy Danych
Adminer
Dostęp do GUI bazy danych pod adresem http://localhost:8080:
- System: PostgreSQL
- Serwer: db
- Użytkownik: user
- Hasło: password
- Baza danych: car_rental
Prisma Studio
cd apps/backend
npx prisma studioOn this page
Languages
TypeScript95.6%CSS2.6%PLpgSQL1.0%JavaScript0.8%
Contributors
Created January 8, 2026
Updated February 14, 2026