This is a React Native Expo project developed as an assignment app.
It demonstrates authentication, beer listing with pagination, and beer details.
The app is built with TypeScript, reusable components, and uses external APIs for data handling.
- Framework: React Native with Expo
- Language: TypeScript
- Navigation: React Navigation + Expo Router
- Networking: Axios
- UI & Theming: Custom
Themefile,SafeAreaView, responsive font sizes (react-native-responsive-fontsize) - Toast Notifications: expo-toast (Expo-compatible)
- API Handling: Service layer using Axios
- State Management: React Hooks (
useState,useEffect) - Icons: @expo/vector-icons
We used two external APIs:
- Login API →
POST https://api.escuelajs.co/api/v1/auth/login - Register API →
POST https://api.escuelajs.co/api/v1/users
- Beer List with Pagination →
GET https://punkapi.online/v3/beers?page=${pageNumber} - Beer Details →
GET https://punkapi.online/v3/beers/${productId}
- ✅ User Authentication (Login & Registration using Platzi Fake Store API)
- ✅ Beer Listing with infinite scroll pagination
- ✅ Beer Details with product info
- ✅ Reusable Components (Button, Loader, BeerCard, CommonHeader)
- ✅ Custom Toast Notifications for error/success messages
- ✅ Responsive UI across devices
- ✅ API Integration with Axios
-
Clone the repository:
git clone https://github.com/ShRavan-Variya/beer-assignment-app.git cd beer-assignment-app -
Install dependencies:
npm install
-
Start the Expo project:
npx expo start
-
Open the project in Expo Go app (iOS/Android) by scanning the QR code.
- Clean & Minimal UI: Kept layout simple and easy to navigate.
- Reusable Components: Created common components for consistency (Button, Loader, BeerCard).
- Toast Handling: Used expo-toast for showing feedback to users.
- Network Handling: Used @react-native-community/netinfo to detect internet connectivity.
- Pagination: Implemented lazy loading for beer list using FlatList.
- Name: Shravan Variya
- Role: React Native Developer
This project is for demo/assignment purposes only. APIs are publicly available and used for learning.