Projekt: - Aplikacja do wynajmu samochodów od właściciela do najemcy (Aplikacja do wynajmu samochodów typu Peer-to-Peer)
Cel projektu:
Stworzenie części backendowej aplikacji opartej na Drupal 10. Backend powinien obsługiwać wszystkie niezbędne funkcje dla najemców, właścicieli oraz administratorów.
1. Ogólne wymagania
1.1. Język programowania: PHP
1.2. Framework: Drupal 10
1.3. Zarządzanie wersjami: Git
1.4. System zarządzania bazą danych (DBMS): MySQL
1.5. Serwer: Nginx
Komunikacja poprzez REST API (Drupal 10 PHP)
Projekt dostarczany w kontenerze Docker.
2. Wymagania funkcjonalne
2.1. Rejestracja i uwierzytelnianie użytkowników
2.1.1. Rejestracja: Rejestracja użytkowników (najemców i właścicieli) z walidacją danych.
2.1.2. Uwierzytelnianie: Obsługa tokenów JWT do uwierzytelniania użytkowników.
2.1.3. Simple OAuth: Konfiguracja do uwierzytelniania użytkowników.
2.2. Zarządzanie profilem użytkownika
2.2.1. Edycja profilu: Użytkownicy powinni mieć możliwość edycji swojego profilu.
2.2.2. Zmiana hasła: Funkcja zmiany hasła dla użytkowników.
2.3. Zarządzanie samochodami
2.3.1. Dodawanie samochodu: Właściciele mogą dodawać swoje samochody, podając szczegółowe informacje (marka, model, rok, cena, opis, zdjęcia). Sprawdzanie danych z dowodu rejestracyjnego.
2.3.2. Edycja samochodu: Menadżerowie mogą edytować informacje o swoich samochodach.
2.3.3. Usuwanie samochodu: Właściciele mogą usuwać swoje samochody. Z bazy danych nie są usuwane, tylko oznaczane jako usunięte.
2.4. Wynajem samochodów
2.4.1. Wyszukiwanie samochodów: Najemcy mogą wyszukiwać samochody według różnych kryteriów (lokalizacja, data, cena itp.).
2.4.2. Rezerwacja samochodu: Najemcy mogą rezerwować samochody na wybrane daty.
2.4.3. Kalendarz rezerwacji: Wizualizacja dostępnych i zarezerwowanych dat dla każdego samochodu.
2.5. Zarządzanie rezerwacjami
2.5.1. Przegląd rezerwacji: Użytkownicy mogą przeglądać swoje rezerwacje (minione i przyszłe).
2.5.2. Anulowanie rezerwacji: Najemcy mogą anulować swoje rezerwacje.
2.6. Zarządzanie opiniami i ocenami
2.6.1. Opinie: Użytkownicy mogą dodawać opinie o wynajętych samochodach, właścicielach.
2.6.2. Oceny: System ocen dla samochodów, najemców, właścicieli.
Punkty dla właścicieli i najemców.
2.7. Zarządzanie administracją
2.7.1. Panel administratora: Administratorzy mogą przeglądać i zarządzać użytkownikami, samochodami, rezerwacjami i opiniami.
2.7.2. Moderacja treści: Administratorzy mogą moderować dodane samochody i opinie.
3. Wymagania niefunkcjonalne
3.1. Bezpieczeństwo:
- Wszystkie żądania API muszą być zabezpieczone za pomocą tokenów JWT.
- Hasła użytkowników muszą być przechowywane w formie zaszyfrowanej.
3.2. Wydajność:
- System musi obsługiwać co najmniej 100 równoczesnych żądań.
- Odpowiedź systemu na żądanie użytkownika nie powinna przekraczać 1 sekundy.
3.3. Skalowalność:
- System musi obsługiwać skalowanie horyzontalne w celu obsługi wzrostu użytkowników i danych.
4. Integracje
4.1. Systemy płatności:
4.2. Usługi geolokalizacji:
5. Dokumentacja
5.1. Dokumentacja API:
- Udokumentować wszystkie punkty końcowe API za pomocą OpenAPI (Swagger).
6. Wymagania dotyczące testowania
6.1. Testy jednostkowe:
- Napisać testy jednostkowe dla wszystkich głównych funkcji systemu.
6.2. Testy integracyjne:
- Przeprowadzić testy integracyjne w celu zapewnienia poprawnego działania wszystkich komponentów systemu.
P.S. Specyfikacja może być uzupełniona o projekt graficzny.