A cross-platform React Native mobile application designed to facilitate mentoring relationships with separate interfaces for mentees and mentors. Built with TypeScript, task management, progress tracking, and interactive learning tools.
- Features
- Tech Stack
- Prerequisites
- Installation
- Running the App
- Project Structure
- Development
- Contributing
- Troubleshooting
- Dashboard: Overview of assignments, tasks, and progress
- Assignment Management: View and complete assignments with detailed information
- Leaderboard: Track progress against peers
- Problem Tracking: Report and track problems with mentor feedback
- Progress Visualization: Visual representation of learning progress
- Doubts Resolution: Post questions for mentor review
- Mentee Management: View and manage list of mentees
- Task Assignment: Create and assign tasks to mentees
- Progress Monitoring: Track mentee progress with detailed analytics
- Poll Creation: Create polls to gather feedback and engagement
- Questions Management: Manage question banks for assessments
- Doubts Response: Review and respond to mentee doubts
- Authentication: Secure login and signup
- User Profiles: Customizable user profiles
- Navigation: Tab-based and drawer navigation for easy access
- Real-time Updates: Live data synchronization
- Offline Support: Async storage for offline access
- Responsive Design: Optimized for various screen sizes
- Framework: React Native (v0.84.1)
- Language: TypeScript (v5.8.3)
- State Management: Zustand (v5.0.12)
- Navigation: React Navigation (v7.x)
- Bottom Tabs Navigation
- Drawer Navigation
- Native Stack Navigation
- HTTP Client: Axios (v1.13.6)
- UI Components:
- React Native Vector Icons (v10.3.0)
- React Native SVG (v15.15.4)
- React Native Reanimated (v4.3.0) for animations
- Storage: React Native Async Storage (v1.23.1)
- Styling: Custom theme system with colors and typography
- Testing: Jest (v29.6.3) with React Test Renderer
- Code Quality: ESLint (v8.19.0), Prettier (v2.8.8)
- Build Tools: Metro Bundler, Babel (v7.25.2)
Before you begin, ensure you have the following installed:
- Node.js: >= 22.11.0
- npm or yarn package manager
- Git: For version control
- Android Development:
- Android Studio or Android SDK
- JDK 11 or higher
- Android SDK API level 24 or higher
- iOS Development (macOS only):
- Xcode 12 or higher
- CocoaPods
- Ruby (for pod installation)
For detailed setup instructions, refer to the React Native Environment Setup Guide.
git clone <repository-url>
cd mobilenpm installOr if using Yarn:
yarn install# Install Ruby dependencies
bundle install
# Install CocoaPods
bundle exec pod installNo additional setup required if Android SDK is configured correctly.
First, start the Metro JavaScript bundler (keep this running in a separate terminal):
npm startOr:
yarn startIn a new terminal window:
npm run androidOr:
yarn androidIn a new terminal window (macOS only):
react-native run-iosOr use Xcode directly:
open ios/mobile.xcworkspaceThen build and run from Xcode.
src/
├── components/ # Reusable UI components
│ ├── atoms/ # Basic components (Badge, Button, Input, etc.)
│ ├── layout/ # Layout wrappers (ScreenWrapper)
│ └── molecules/ # Composite components (Cards, Rows, etc.)
├── navigation/ # Navigation configurations
│ ├── AuthNavigator.tsx
│ ├── RootNavigator.tsx
│ ├── MenteeNavigator.tsx
│ └── MentorNavigator.tsx
├── screens/ # Screen components
│ ├── auth/ # Authentication screens (Login, Signup)
│ ├── mentee/ # Mentee-specific screens
│ ├── mentor/ # Mentor-specific screens
│ └── dev/ # Development/testing screens
├── services/ # API and service layer
│ ├── api/ # API client and interfaces
│ ├── live/ # Live API endpoints
│ └── mock/ # Mock data for testing
├── store/ # Zustand state stores
│ ├── authStore.ts
│ ├── menteeStore.ts
│ └── mentorStore.ts
├── theme/ # Design system
│ ├── colors.ts
│ ├── typography.ts
│ └── index.ts
├── types/ # TypeScript type definitions
├── utils/ # Utility functions
│ ├── animations.ts
│ ├── formatters.ts
│ └── toast.ts
└── styles/ # Global styles and constants
Run ESLint to check code quality:
npm run lintFormat code with Prettier:
npx prettier --write src/Run Jest tests:
npm testWatch mode for development:
npm test -- --watch- Hot Reload: Make changes to TypeScript/React files and they'll automatically reload
- Debugging: Use React Native Debugger or Chrome DevTools
- Component Gallery: Visit the
ComponentGalleryScreento see all available UI components - State Management: Use Zustand stores in
src/store/for global state - Type Safety: Always define proper TypeScript types in
src/types/
We welcome contributions! Please follow these guidelines:
- Fork the repository and clone your fork locally
- Create a feature branch from
main:git checkout -b feature/your-feature-name
- Make your changes and commit with clear messages:
git commit -m "feat: add new feature description"
- Use TypeScript for all new code (no
.jsfiles) - Follow the existing code structure and naming conventions
- Use functional components with React hooks
- Write meaningful component names that describe their purpose
- Keep components small and reusable
- Add proper type annotations for props and state
Follow the Conventional Commits format:
<type>(<scope>): <subject>
<body>
<footer>
Types: feat, fix, docs, style, refactor, test, chore
Examples:
feat(mentee): add assignment completion trackingfix(auth): resolve login error handlingdocs: update README with setup instructions
- Ensure code quality:
npm run lint npm test - Test on both platforms (Android and iOS if possible)
- Write a clear pull request description explaining:
- What changes were made
- Why they were made
- How to test them
- Link related issues if applicable
- Request review from maintainers
- All tests pass:
npm test - Code is properly formatted:
npm run lint - No console warnings or errors
- Changes work on both Android and iOS
- TypeScript types are properly defined
- Components are documented with JSDoc comments
# Clear Metro cache
npm start -- --reset-cache# Clean Android build
cd android && ./gradlew clean && cd ..
npm run android# Remove and reinstall pods
rm -rf ios/Pods ios/Podfile.lock
bundle exec pod installIf Metro bundler fails to start:
# Kill process on port 8081
# On macOS/Linux:
lsof -ti:8081 | xargs kill -9
# On Windows (PowerShell):
Get-Process -Id $(Get-NetTCPConnection -LocalPort 8081).OwningProcess | Stop-Process# Clear npm cache and reinstall
npm cache clean --force
rm -rf node_modules package-lock.json
npm install- React Native Debugger: Download from here
- Chrome DevTools: Press
din Metro bundler console - Android Studio Logcat: View device logs with
adb logcat - Xcode Console: View iOS logs in Xcode
This project is licensed under the MIT License - see the LICENSE file for details.
For questions or issues, please:
- Check the Troubleshooting section
- Search existing GitHub issues
- Create a new issue with detailed information
For more information, please visit CocoaPods Getting Started guide.
# Using npm
npm run ios
# OR using Yarn
yarn iosIf everything is set up correctly, you should see your new app running in the Android Emulator, iOS Simulator, or your connected device.
This is one way to run your app — you can also build it directly from Android Studio or Xcode.
Now that you have successfully run the app, let's make changes!
Open App.tsx in your text editor of choice and make some changes. When you save, your app will automatically update and reflect these changes — this is powered by Fast Refresh.
When you want to forcefully reload, for example to reset the state of your app, you can perform a full reload:
- Android: Press the R key twice or select "Reload" from the Dev Menu, accessed via Ctrl + M (Windows/Linux) or Cmd ⌘ + M (macOS).
- iOS: Press R in iOS Simulator.
You've successfully run and modified your React Native App. 🥳
- If you want to add this new React Native code to an existing application, check out the Integration guide.
- If you're curious to learn more about React Native, check out the docs.
If you're having issues getting the above steps to work, see the Troubleshooting page.
To learn more about React Native, take a look at the following resources:
- React Native Website - learn more about React Native.
- Getting Started - an overview of React Native and how setup your environment.
- Learn the Basics - a guided tour of the React Native basics.
- Blog - read the latest official React Native Blog posts.
@facebook/react-native- the Open Source; GitHub repository for React Native.