Skip to content

Repository files navigation

Skill Swap App

Flutter Dart License: MIT Platform

A Flutter mobile application that connects people who want to exchange skills. Users can discover others with complementary expertise, request skill-swap sessions, communicate via real-time chat, join live video sessions, and build a gamified profile with points and badges.


📑 Table of Contents


👥 Team Members

# Name
1 Israa Elhalaby
2 Abdulrahman Al-Jarhi
3 Mariam Eqdaih
4 Kawther Mousa
5 Aseel Awad
6 Nouran Almanama

✨ Features

Feature Description
Onboarding Guided onboarding flow to introduce the app and collect user preferences
Authentication Full sign-up, login, and session management
Home & Recommendations Personalised skill recommendations based on user interests
Skill Discovery Browse and search available skills by category
Requests Send, receive, accept, and decline skill-swap requests with status tracking
Real-Time Chat In-app messaging between matched users
Video Sessions Live video calls powered by Agora RTC Engine
Post-Session Feedback Rate and review sessions after completion
User Profile View and edit profile, uploaded avatar, timezone & language settings
Gamification Earn points and badges for completed swaps and community contribution
Localization Full English and Arabic support (LTR & RTL)
Responsive UI Adaptive layouts via ScreenUtil for all screen sizes

📸 Screenshots

Onboarding (Learner) Onboarding (Provider) Home Profile
My Requests Chat Room Session Room

📱 Supported Platforms

Platform Status
Android ✅ Supported
iOS ✅ Supported

🏗️ Architecture

The project follows a feature-first clean architecture with the BLoC / Cubit pattern for state management.

lib/
├── app/                  # App entry point, root widget & GoRouter configuration
├── core/                 # Shared infrastructure
│   ├── api/              # API client (Dio-based) & endpoint constants
│   ├── constants/        # App-wide constants
│   ├── cubit/            # Global cubits (e.g. locale)
│   ├── extensions/       # Dart extension methods
│   ├── Icons/            # Custom icon data
│   ├── services/         # Local storage & utility services
│   ├── theme/            # App theme & colour tokens
│   ├── utils/            # Helper utilities
│   └── widgets/          # Reusable UI components
├── features/             # Feature modules (see below)
│   ├── Authentication/   # Login, sign-up, auth state
│   ├── chat/             # Real-time messaging
│   ├── home/             # Home screen & recommendations
│   ├── main/             # Bottom navigation shell
│   ├── onboarding/       # First-launch onboarding
│   ├── postSession/      # Post-session feedback & reviews
│   ├── profile/          # User profile & gamification
│   ├── request_flow/     # Step-by-step request creation
│   ├── requests/         # Request listing & management
│   ├── session/          # Video session (Agora)
│   ├── skills/           # Skill browsing & categories
│   └── splash/           # Splash / loading screen
├── gen_l10n/             # Auto-generated localisation delegates
└── l10n/                 # ARB translation files (EN, AR)

Each feature module is self-contained with its own:

  • data/ — models, repositories, and services
  • cubit/ — BLoC / Cubit state management
  • presentation/ — screens and UI widgets

🛠️ Tech Stack

Layer Technology
Framework Flutter (Dart ^3.10.7)
State Management flutter_bloc (Cubit)
Routing go_router
Networking dio / http
Video Calls agora_rtc_engine
Local Storage shared_preferences
Localisation Flutter intl + ARB files
Responsive UI flutter_screenutil
Image Picker image_picker
SVG Rendering flutter_svg
Typography google_fonts

🚀 Getting Started

Prerequisites

  • Flutter SDK ≥ 3.10.7
  • Dart SDK ≥ 3.10.7
  • Android Studio / Xcode (for emulator or physical device)
  • An active internet connection for API calls

Installation

# 1. Clone the repository
git clone https://github.com/Israa-e/skill_swap_app.git
cd skill_swap_app

# 2. Install dependencies
flutter pub get

# 3. Generate localisation files
flutter gen-l10n

# 4. Run the app
flutter run

⚙️ Configuration

The app uses Agora RTC Engine for live video sessions. To enable this feature:

  1. Create a free account at Agora.io
  2. Create a new project and obtain your App ID
  3. Add your Agora credentials to the appropriate configuration file in the project

Note: The app requires an active API backend. Ensure the API base URL is correctly configured in lib/core/api/ before running.


▶️ Running the App

  • Android (ensure an emulator is running or a device is connected):

    flutter run
  • iOS (requires Xcode installed on macOS):

    flutter run

Build for Production

# Android APK
flutter build apk --release

# iOS
flutter build ios --release

🧪 Testing

# Run all unit & widget tests
flutter test

🌍 Localization

The app supports English and Arabic (with full RTL support). Translation files are located in lib/l10n/:

File Language
app_en.arb English (template)
app_ar.arb Arabic

Generating Translations

After updating .arb files, regenerate the localisation delegates:

flutter gen-l10n

To add a new locale, create a new app_<locale>.arb file and add the locale code to l10n.yaml.


📂 Assets

assets/
├── icons/    # SVG & PNG icons used across the app
└── images/   # Illustrations and image assets

🤝 Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

📄 License

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

About

Skill Swap App – Connect, learn, and teach! Explore new skills, share your expertise, and stay updated with real-time notifications in a simple, user-friendly platform.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages