Yalla Learn is a comprehensive mobile application designed to create a vibrant campus marketplace where students can buy, sell, and share educational resources. The platform facilitates knowledge exchange through product listings and service offerings, fostering a collaborative learning environment.
- π Product Marketplace: Buy and sell textbooks, electronics, and educational materials
- π€ Service Exchange: Offer and find tutoring, mentoring, and skill-sharing services
- π Smart Discovery: Browse and filter listings with advanced search capabilities
- π± Cross-Platform: Native mobile experience for iOS and Android
- π Web Integration: Seamless web platform integration
- π Real-time Updates: Live refresh and synchronization
- π€ User Profiles: Comprehensive user management system
- Framework: React Native 0.76.9 with Expo 52.0.43
- Language: TypeScript 5.3.3
- Navigation: Expo Router 4.0.20
- UI Library: Gluestack UI with NativeWind
- Styling: TailwindCSS 3.4.17 with NativeWind 4.1.23
- State Management: Redux Toolkit 2.7.0 with Redux Persist 6.0.0
- Forms: React Hook Form 7.55.0 with Yup/Zod validation
- Icons: Lucide React Native 0.509.0, Expo Vector Icons 14.0.2
- Package Manager: npm
- Code Quality: ESLint with Expo preset
- HTTP Client: Axios 1.9.0
- Storage: AsyncStorage 2.1.2
- Image Handling: Expo Image Picker 16.0.6
- Web View: React Native WebView 13.12.5
- Animations: Reanimated 3.16.1, Legend Motion 2.4.0
- Node.js (LTS version recommended)
- npm or yarn
- Expo CLI
- iOS Simulator (for iOS development)
- Android Studio & Android SDK (for Android development)
-
Clone the repository
git clone https://github.com/KhaledSaeed18/yalla-learn-app.git cd yalla-learn-app
-
Install dependencies
npm install
-
Start the development server
npm start
# iOS Development
npm run ios
# Android Development
npm run android
# Web Development
npm run web
yalla-learn-app/
βββ app/ # App router pages and layouts
β βββ (tabs)/ # Tab-based navigation pages
β β βββ index.tsx # Home page
β β βββ listings.tsx # Listings page
β β βββ services.tsx # Services page
β βββ _layout.tsx # Root layout
βββ components/ # Reusable UI components
β βββ ui/ # UI component library
β βββ heading/ # Heading components
β βββ text/ # Text components
β βββ button/ # Button components
β βββ listing-card/ # Product listing cards
β βββ service-card/ # Service cards
βββ services/ # API service layer
βββ types/ # TypeScript type definitions
βββ assets/ # Static assets (images, fonts)
βββ styles/ # Global styles and themes
The project uses Expo's managed workflow with the following key configurations:
- App Configuration:
app.json
- Expo app settings - Tailwind Configuration:
tailwind.config.js
- Styling configuration - Gluestack Configuration:
gluestack-ui.config.json
- UI component settings
# Start development server
npm start
# Lint code
npm run lint
# Reset project (development utility)
npm run reset-project
The application follows a consistent design system powered by:
- Gluestack UI: Component library with native performance
- TailwindCSS: Utility-first CSS framework
- Custom Color Palette: Primary, secondary, success, error, warning, info themes
- Typography System: Consistent heading and text styles
- Responsive Design: Adaptive layouts for different screen sizes
Script | Description |
---|---|
npm start |
Start Expo development server |
npm run ios |
Start iOS development build |
npm run android |
Start Android development build |
npm run web |
Start web development build |
npm test |
Run test suite in watch mode |
npm run lint |
Run ESLint code analysis |
We welcome contributions! Please see our Contributing Guidelines for details.
- Fork the repository
- Create a feature branch:
git checkout -b feature/your-feature-name
- Make your changes following our coding standards
- Run linting:
npm run lint
- Commit your changes with clear messages
- Push to your fork and submit a pull request
- Follow TypeScript best practices
- Use ESLint configuration provided
- Maintain consistent component structure
- Write meaningful commit messages
- Add comments for complex logic
This project is licensed under the MIT License - see the LICENSE file for details.
- Bug Reports: GitHub Issues