Technical task (TT) for Frontend React Native developer
Project Description
Mobile application for car rental that connects car owners (lessors) with renters based on a peer-to-peer model. The application should have a flexible design that looks good on different mobile devices and supports the main iOS and Android platforms.
Goal
Develop the frontend of the application using React Native, which will include functionality for renters, lessors, and design managers based on the Figma template.
Main Requirements
- Platforms: iOS and Android
- Programming Language: JavaScript/TypeScript
- Framework: React Native
- State Management: Redux or Context API
- Navigation: React Navigation
- HTTP Requests: Fetch API
- Validation Form: Formik with Yup
- Backend: Interaction via REST API (Drupal 10 PHP)
Description of main screens and functions (Designer TT)
Add/Edit Car
Car Rental
Review for Car, Lessor, Renter
Rental History
User Profile (Lessor/Renter)
Manager functionality (add, edit, delete - cars, lessors, renters). Chat between managers, lessors, renters.
Chat between lessors and renters.
Testing Requirements
- Testing on different devices: Support for major iOS and Android models.
- Automated Testing: Use of Jest and React Native Testing Library.
- Manual Testing: Checking basic functionality and usability.
Additional Requirements
- Security: User authentication and authorization using SMS, FindgerPrint
- Performance: App optimization for fast loading and operation.
- Documentation: Detailed code documentation and deployment instructions.
Integration with Backend
- API Requests: Use of Axios or Fetch API for backend interaction.
- Authorization: Support for JWT tokens for authorization.
- Error Handling: Displaying user-friendly error messages.
Development Stages
- Project Preparation
- Setting up Docker development environment.
- Project initialization.
- Navigation setup.
- UI Components Development
- Creating basic components.
- Integration of styles and themes.
- API Integration
- Setting up HTTP client.
- Interaction with backend.
- Testing and Debugging
- Conducting testing.
- Fixing errors.
- Final Edits and Optimization
- Performance optimization.
- Preparing for release.