A junior-friendly mobile application that lists GitHub repositories, supports authentication, and demonstrates clean state management with Apollo Client.
The app consumes a local GraphQL API (rate-repository-api) to fetch data, manage reviews, and securely store access tokens.
🌐 API Repo 💻 GitHub 👩💻 Author
Rate Repository App allows users to:
- Browse repositories with detailed stats (stars, forks, reviews, rating)
- View a single repository with paginated reviews
- Create reviews with validated forms
- Sign in and sign up with JWT-based authentication
- Sort repositories by latest, highest, or lowest rating
The app demonstrates mobile app architecture, Apollo Client integration, and auth-aware data fetching.
| Repository List | Single Repository | Sign Up | My Reviews |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
Mobile / Frontend
- React Native (Expo)
- React Router Native
- Apollo Client, GraphQL
- Formik + Yup
- AsyncStorage for token persistence
Backend
- Node.js + Koa
- Apollo Server (GraphQL)
- SQLite with Objection.js + Knex
- JWT authentication
- Cursor-based pagination
- Sign-in/sign-up forms store JWT in AsyncStorage
- Apollo Client automatically attaches Authorization header
- App bar and navigation respond dynamically to auth state
- Repositories and reviews fetched via GraphQL queries
- Cursor-based pagination enables infinite scrolling
- Sorting by latest, highest, or lowest rating using query variables
- Repository list and items split into reusable components
- Local UI state handled with React hooks
- Apollo cache ensures efficient data updates
- Formik handles form state and submission
- Yup validates input to prevent invalid entries
- Rating and text inputs validated for review creation
- Repository list with detailed stats
- Single repository view with reviews
- Create review form with validation
- Sign in / Sign up forms with JWT token storage
- Sorting & filtering repositories
- Auth-aware navigation and app bar
- Cursor-based pagination for smooth scrolling
Unit and integration tests for key components using React Native Testing Library ensure that repository lists render correctly and that sign-in forms submit valid credentials, focusing on pure components without directly testing Apollo Client or AsyncStorage.
- Expo-based React Native structure with routing
- Apollo Client integration and GraphQL queries/mutations
- JWT token persistence and auth-aware client configuration
- Clean UI composition and theming
- Cursor-based pagination and infinite scrolling
- Practical testing of React Native components
⭐ This project reflects a focus on mobile-first design, type-safe data handling, and clean architecture for junior-friendly learning.



