Skip to content

KhaledSaeed18/yalla-learn-app

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Yalla Learn - Mobile App

Yalla Learn Logo

Your campus marketplace for knowledge and resources

Connect. Learn. Thrive.

React Native Expo TypeScript

πŸ“– Overview

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.

🎯 Key Features

  • πŸ“š 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

πŸ› οΈ Tech Stack

Frontend

  • 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

Development Tools

  • Package Manager: npm
  • Code Quality: ESLint with Expo preset

Core Dependencies

  • 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

πŸš€ Quick Start

Prerequisites

  • Node.js (LTS version recommended)
  • npm or yarn
  • Expo CLI
  • iOS Simulator (for iOS development)
  • Android Studio & Android SDK (for Android development)

Installation

  1. Clone the repository

    git clone https://github.com/KhaledSaeed18/yalla-learn-app.git
    cd yalla-learn-app
  2. Install dependencies

    npm install
  3. Start the development server

    npm start

Platform-Specific Commands

# iOS Development
npm run ios

# Android Development  
npm run android

# Web Development
npm run web

πŸ“± Project Structure

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

πŸ”§ Configuration

Environment Setup

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

Development Scripts

# Start development server
npm start

# Lint code
npm run lint

# Reset project (development utility)
npm run reset-project

🎨 UI/UX Design System

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

πŸ“‹ Available Scripts

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

🀝 Contributing

We welcome contributions! Please see our Contributing Guidelines for details.

Development Workflow

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature/your-feature-name
  3. Make your changes following our coding standards
  4. Run linting: npm run lint
  5. Commit your changes with clear messages
  6. Push to your fork and submit a pull request

Code Style

  • Follow TypeScript best practices
  • Use ESLint configuration provided
  • Maintain consistent component structure
  • Write meaningful commit messages
  • Add comments for complex logic

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ“ž Support

🌐 Visit Our Website

Experience Yalla Learn in your browser!