Project: - Application for renting cars from owner to renter (Peer-to-Peer Car Rental App)
Project Goal:
Develop the backend part of the application, which will be based on Drupal 10. The backend should support all necessary functions for renters, owners, and administrators.
1. General Requirements
1.1. Programming Language: PHP
1.2. Framework: Drupal 10
1.3. Version Control: Git
1.4. Database Management System (DBMS): MySQL
1.5. Server: Nginx
Interaction via REST API (Drupal 10 PHP)
The project is delivered in a Docker container.
2. Functional Requirements
2.1. User Registration and Authentication
2.1.1. Registration: User registration (renters and owners) with data validation.
2.1.2. Authorization: Support JWT tokens for user authorization.
2.1.3. Simple OAuth: Configure for user authentication.
2.2. User Profile Management
2.2.1. Profile Editing: Users should be able to edit their profiles.
2.2.2. Password Change: Password change function for users.
2.3. Car Management
2.3.1. Add Car: Owners can add their cars, providing detailed information (brand, model, year, price, description, photos). Validation of data from the technical passport.
2.3.2. Edit Car: Managers can edit information about their cars.
2.3.3. Delete Car: Owners can delete their cars. They are not deleted from the database, only marked as deleted.
2.4. Car Rental
2.4.1. Car Search: Renters can search for cars based on various criteria (location, date, price, etc.).
2.4.2. Car Reservation: Renters can reserve cars for selected dates.
2.4.3. Booking Calendar: Visualization of available and booked dates for each car.
2.5. Booking Management
2.5.1. View Bookings: Users can view their bookings (past and future).
2.5.2. Cancel Booking: Renters can cancel their bookings.
2.6. Reviews and Ratings Management
2.6.1. Reviews: Users can leave reviews about rented cars, owners.
2.6.2. Ratings: Rating system for cars, renters, owners.
Points for owners and renters.
2.7. Administration Management
2.7.1. Administrator Panel: Administrators can view and manage users, cars, bookings, and reviews.
2.7.2. Content Moderation: Administrators can moderate added cars and reviews.
3. Non-Functional Requirements
3.1. Security:
- All API requests must be secured using JWT tokens.
- User passwords must be stored in encrypted form.
3.2. Performance:
- The system should handle at least 100 simultaneous requests.
- System response to user requests should not exceed 1 second.
3.3. Scalability:
- The system should support horizontal scaling to accommodate user and data growth.
4. Integrations
4.1. Payment Systems:
4.2. Geolocation Services:
5. Documentation
5.1. API Documentation:
- Document all API endpoints using OpenAPI (Swagger).
6. Testing Requirements
6.1. Unit Testing:
- Write unit tests for all core system functions.
6.2. Integration Testing:
- Conduct integration tests to ensure proper operation of all system components.
P.S. The project specification may be supplemented with design details.