Trade knowledge through short, focused, real-time sessions — teach what you know, learn what you need.
🔷 Overview
| Section | ||
|---|---|---|
| 📖 | About the Project | Overview |
| ✨ | Core Features | Highlights |
| 🎬 | Demo | Coming Soon |
⚙️ Technical
| Section | ||
|---|---|---|
| 🏗 | Architecture Overview | Feature-First · BLoC |
| 📁 | Project Structure | lib/ tree |
| ⚒ | Tech Stack & Dependencies | Packages & Plugins |
| 🚀 | Getting Started | Setup Guide |
📦 Resources
| Section | ||
|---|---|---|
| 🔗 | Related Repositories | Flutter · Backend |
| 👥 | Flutter Team | 5 contributors |
| 📄 | License | All Rights Reserved |
Skillify is a mobile-only skill-exchange platform that enables people to trade any type of skill or knowledge through short, focused, and interactive real-time sessions. The platform connects users who need practical help with those who can provide it — across all domains, including technology, design, business, languages, academic subjects, and personal development.
Unlike AI tools, documentation, or long-form courses, Skillify targets users who already understand the basics but need practical, real-time human guidance to overcome specific, contextual challenges. Real people understand the exact situation, ask follow-up questions, identify hidden mistakes, and provide tailored, actionable solutions — something generic tools cannot replicate.
The platform creates a structured and fair ecosystem for Learners and Helpers alike through:
- Secure authentication with mandatory profile completion
- A predefined skill-categorisation system with custom sub-skills
- Search & discovery filtered by skill, rating, and language
- Bidirectional session request & offer flows with accept/decline/re-offer
- A credit-based exchange system — no real-money transactions
- A credit escrow mechanism with dual-confirmation release
- Post-session ratings, written reviews, and an automatic badge/reputation system
- In-app real-time audio & video calls for session delivery
- Registration and login with mandatory full-profile completion before accessing any feature
- Profile setup collecting role, skills offered/needed, profile picture, bio, and spoken languages
- Full profile editing at any time, reflected immediately on the public profile
- Predefined main skill categories (e.g. Programming, Design, Marketing, Languages, Business, Fitness) with unlimited user-defined sub-skills
- Skill-based search plus filtering by minimum rating and spoken language
- Result cards showing name, primary skills, average rating, and completed session count
- Session requests and offers with topic, fixed duration (15 / 30 / 60 min), schedule, and problem description
- Accept, decline, and re-offer/counter-propose flows with push notifications at every state change
- Fixed, non-negotiable credit mapping (15 min = 1 credit, 30 min = 2 credits, 60 min = 4 credits)
- Credit escrow on acceptance with atomic dual-confirmation release on completion
- Mandatory post-session numeric rating (1.0–5.0) with optional written review
- Automatic average-rating calculation and reverse-chronological review listing on profile
- Automatic badge awarding based on session count, rating, and helping-behaviour milestones
- In-app real-time audio & video calls, accessible only during accepted sessions' scheduled window
This Flutter application strictly follows a Feature-First Architecture closely aligned with Clean Architecture principles, combined with BLoC/Cubit state management and the Repository Pattern for full data-source abstraction and unit testability.
┌──────────────────────────────────────────────────────────────────────┐
│ FLUTTER CLIENT (This Repo) │
│ │
│ ┌─────────────────┐ ┌──────────────────┐ ┌──────────────────┐ │
│ │ Feature-First │ │ Cubit/Bloc State│ │ Secure/Shared │ │
│ │ Architecture │ │ Management │ │ Storage │ │
│ └─────────────────┘ └──────────────────┘ └──────────────────┘ │
│ │
│ ┌─────────────────┐ ┌─────────────────┐ ┌──────────────────┐ │
│ │ go_router │ │ Dio + Custom │ │ GetIt DI │ │
│ │ Declarative Nav │ │ Interceptors │ │ Service Locator │ │
│ └─────────────────┘ └─────────────────┘ └──────────────────┘ │
└──────────────────────────────────┬───────────────────────────────────┘
│ REST API (Dio)
▼
┌─────────────────────────────────┐
│ Backend API │
│ Auth · Sessions · Credit Escrow│
└──────────────┬──────────────────┘
│
┌──────────────┴──────────────────┐
│ Audio/Video Call Service │
│ Zego UIKit Prebuilt Call │
└─────────────────────────────────┘
Business logic is fully separated from the UI layer using Cubit (from the Bloc ecosystem). Each feature owns its own Cubits, ensuring predictable, testable state transitions with no cross-feature coupling.
equatableprovides value equality for reliable, minimal-rebuild Cubit state comparisons.Dartz(Either<Failure, Data>) provides type-safe, functional error handling at the repository layer.
go_router handles all declarative routing and deep linking, supporting clean, predictable navigation stacks across iOS and Android.
get_it (Service Locator pattern) manages all singleton and factory allocations lazily at runtime, keeping features decoupled and independently initializable.
lib/
├── app/ # Application root configuration and setup
│
├── core/ # App-wide shared resources
│ ├── common/ # Shared models or entities
│ ├── constants/ # App constants (colors, themes, api keys)
│ ├── di/ # Dependency Injection (GetIt) setup
│ ├── errors/ # Error handling, failures, and exceptions
│ ├── functions/ # Helper functions
│ ├── logging/ # Logger setup
│ ├── routes/ # Routing configuration (GoRouter)
│ ├── services/ # Third-party or core services (Network, Storage)
│ ├── utils/ # General utilities
│ ├── validators/ # Input validators
│ └── widgets/ # Shared/reusable UI components
│
└── features/ # Independent, self-contained feature modules
├── auth/ # Authentication feature
├── complete_profile/ # Profile completion flow
├── explore/ # Explore/Search feature
├── main/ # Main dashboard/navigation
├── notification/ # Notifications feature
├── profile/ # User profile management
├── sessions/ # Session/Calls management
├── settings/ # App settings
├── splash/ # Splash screen
└── wallet/ # Wallet/Payments feature
Every feature strictly follows the same internal structure to ensure consistency and discoverability:
feature_name/
├── data/
│ ├── models/ # DTOs (Data Transfer Objects) & JSON parsers
│ └── repos/ # Repository implementations (data source abstraction)
└── presentation/
├── view_models/ # Business logic (Cubits / Blocs)
└── views/ # UI screens & feature-specific widgets
| Package | Purpose |
|---|---|
flutter |
Cross-platform UI framework (iOS & Android) |
flutter_bloc |
Bloc/Cubit state management |
equatable |
Value equality for Bloc/Cubit state comparisons |
go_router |
Declarative routing & deep linking |
get_it |
Dependency injection (Service Locator) |
dartz |
Functional programming: Either<L, R> types |
| Package | Purpose |
|---|---|
dio |
HTTP client for API communication |
connectivity_plus |
Network connectivity status monitoring |
| Package | Purpose |
|---|---|
shared_preferences |
Persistent storage for simple data |
flutter_secure_storage |
Encrypted storage for sensitive data (tokens, keys) |
| Package | Purpose |
|---|---|
google_fonts |
Custom typography |
flutter_svg |
SVG asset rendering |
lottie |
Advanced animations |
google_nav_bar |
Modern bottom navigation bar |
gap |
Simplified spacing inside Flex widgets (Column/Row) |
cupertino_icons / line_icons |
Icon sets |
fluttertoast |
Toast notifications |
| Package | Purpose |
|---|---|
image_picker |
Selecting images from device library or camera |
| Package | Purpose |
|---|---|
zego_uikit_prebuilt_call |
Pre-built UI components for in-app audio & video calls |
| Package | Purpose |
|---|---|
logger |
Extensible logger for clean console output |
intl |
Internationalization, localization, date/number formatting |
flutter_dotenv |
Load environment variables from a .env file |
Setup requires a .env file in the root directory (refer to .env.example).
Before you begin, ensure you have the following installed:
- Flutter SDK
>=3.x - Dart SDK
>=3.x - Android Studio / Xcode (for mobile targets)
1. Clone the repository
git clone https://github.com/mohamed-dev-404/skillify.git
cd skillify2. Clean any previous build artifacts
flutter clean3. Install dependencies
flutter pub get4. Configure environment variables
cp .env.example .env
# then fill in the required values5. Run the application
# Run on connected mobile device or emulator
flutter run
# Build a release APK
flutter build apk --releaseGIFs coming soon.
This Flutter app is the client layer of a two-part system:
| Repository | Description | Link |
|---|---|---|
| Flutter Client (this repo) | Cross-platform mobile application (iOS · Android) | Current Repository |
| Backend API | Auth · Sessions · Credit Escrow · Ratings & Badges | AhmedMohamed-1/SkillifyAPI |
The following contributors are responsible for the Flutter client application:
![]() Mohamed Ibrahim |
![]() AboGM |
![]() kerelos Aissam |
![]() Sohaib Khalifa |
![]() Marwan Muhammad |
Copyright © 2026 Skillify Team.
All Rights Reserved.
This project and all its source code, assets, and documentation are the intellectual property of the Skillify development team. No part of this project may be reproduced, distributed, or transmitted in any form or by any means without the prior written permission of the authors.
Made with ❤️ using Flutter




