A mobile application built with React Native and Expo that allows users to browse car brands and models using the FIPE API (Brazilian Vehicle Price Index).
- User authentication (login/logout)
- Browse car brands with search functionality
- View car models for each brand
- Responsive and user-friendly interface
- Efficient search with debounce implementation
![]() |
![]() |
|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
src/
├── components/ # UI components organized by atomic design
│ ├── atoms/ # Basic UI elements (buttons, inputs, text)
│ ├── molecules/ # Combinations of atoms (headers, search bars)
│ └── organisms/ # Complex UI components (forms, lists)
├── contexts/ # React Context providers
├── screens/ # App screens/pages
├── services/ # API service integration
└── utils/ # Utility functions and helpers
- React Native: Framework for building native apps
- Expo: Development platform for React Native
- TypeScript: For type safety and better developer experience
- React Navigation: Navigation and routing
- Axios: HTTP client for API requests
- React Hook Form: Form handling
- Styled Components: Component styling
- Expo Vector Icons: Icon library
- Node.js (v16 or newer)
- npm or yarn
- Expo CLI
- Android Studio or Xcode (for running on emulators)
-
Clone the repository:
git clone <repository-url> cd mobileapp
-
Install dependencies:
npm install # or yarn install -
Start the development server:
npm start # or yarn start -
Run on a device or emulator:
- Press
afor Android - Press
ifor iOS - Scan the QR code with the Expo Go app on your phone
- Press
The app uses two APIs:
- Authentication API: Custom auth service for user login
- FIPE API: Public API for car brands and models data in Brazil
- Atomic Design: Components are organized following the atomic design methodology
- TypeScript: Strong typing is used throughout the project
- Context API: Used for state management (authentication)
- Debounce: Implemented on search inputs to prevent excessive API calls
- Virtualized Lists: Used for efficient rendering of long lists
- Memoization: Used to prevent unnecessary re-renders
# Run TypeScript type checking
npx tsc --noEmit
# Run tests (to be implemented)
# npm test- Fork the repository
- Create a feature branch:
git checkout -b feature/my-feature - Commit your changes:
git commit -m 'Add my feature' - Push to the branch:
git push origin feature/my-feature - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- FIPE API for car data
- Expo for the development tools
- React Native community






