Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

128 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Skillify Launcher

Skillify

Skills Exchange Platform

Trade knowledge through short, focused, real-time sessions β€” teach what you know, learn what you need.

License Portfolio Commercial Use


[!IMPORTANT]

πŸ”’ Copyright & Usage Notice

Skillify is published as a professional portfolio project. The source code is made publicly available strictly for viewing and technical evaluation purposes β€” this is not an open-source release.

Unless explicitly authorized in writing by the copyright holders, you may not:

  🚫  Copy or reuse any part of this project   🚫  Modify the code or create derivative works   🚫  Redistribute the source code, in whole or in part   🚫  Use the project for academic or commercial purposes


Β© 2026 Skillify Team β€” All Rights Reserved Mohamed IbrahimΒ β€’Β Mohamed AboGMΒ β€’Β Kerelos AissamΒ β€’Β Sohaib KhalifaΒ β€’Β Marwan Muhammad



Flutter Dart BLoC Feature--First Platform GetIt DI go_router

Stars Forks Issues Closed Issues Closed PRs

Repository Views

Presentation / Demo Site Β Β Β Β  Download APK


Skillify Poster

πŸ“‹ Table of Contents


πŸ”· 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

πŸ“¦ Resources

Section
πŸ”— Related Repositories Flutter Β· Backend
πŸ‘₯ Flutter Team 5 contributors
πŸ“„ License All Rights Reserved

πŸ“– About the Project

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

✨ Core Features

πŸ‘€ Onboarding & Profile

  • 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

πŸ” Skills, Search & Discovery

  • 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

🀝 Sessions, Credits & Escrow

  • 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 = 15 credit, 30 min = 30 credits, 60 min = 60 credits)
  • Credit escrow on acceptance with atomic dual-confirmation release on completion

⭐ Reputation & Communication

  • 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

πŸ— Architecture Overview

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   β”‚
                                      β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

State Management Philosophy

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.

  • equatable provides value equality for reliable, minimal-rebuild Cubit state comparisons.
  • Dartz (Either<Failure, Data>) provides type-safe, functional error handling at the repository layer.

Navigation

go_router handles all declarative routing and deep linking, supporting clean, predictable navigation stacks across iOS and Android.

Dependency Injection

get_it (Service Locator pattern) manages all singleton and factory allocations lazily at runtime, keeping features decoupled and independently initializable.


πŸ“ Project Structure

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

Feature Module Pattern

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

βš’ Tech Stack & Dependencies

Core

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

Networking & Connectivity

Package Purpose
dio HTTP client for API communication
connectivity_plus Network connectivity status monitoring

Storage

Package Purpose
shared_preferences Persistent storage for simple data
flutter_secure_storage Encrypted storage for sensitive data (tokens, keys)

UI & UX

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

Media & File Handling

Package Purpose
image_picker Selecting images from device library or camera

Integration & Real-Time

Package Purpose
zego_uikit_prebuilt_call Pre-built UI components for in-app audio & video calls

Utilities

Package Purpose
logger Extensible logger for clean console output
intl Internationalization, localization, date/number formatting
flutter_dotenv Load environment variables from a .env file

Environment Variables

Setup requires a .env file in the root directory (refer to .env.example).


🎬 Demo

πŸŽ₯ Watch the full app walkthrough (Google Drive)

Full app walkthrough β€” onboarding, skill setup, search & discovery, session booking, credit escrow, and in-app calls.


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

πŸ‘¨β€πŸ’» Flutter Team

The following contributors are responsible for the Flutter client application:

Mohamed Ibrahim
Mohamed Ibrahim
AboGM
AboGM
kerelos Aissam
kerelos Aissam
Sohaib Khalifa
Sohaib Khalifa
Marwan Muhammad
Marwan Muhammad

πŸ“„ License

All Rights Reserved Β© 2026 β€” Skillify Team

This project β€” including all source code, assets, branding, and documentation β€” is the intellectual property of the Skillify development team and is published for portfolio and technical-evaluation purposes only.

No part of this project may be copied, modified, redistributed, or used for academic or commercial purposes without prior written permission from the copyright holders.

See the Copyright & Usage Notice at the top of this document for full details.

Mohamed IbrahimΒ β€’Β Mohamed AboGMΒ β€’Β Kerelos AissamΒ β€’Β Sohaib KhalifaΒ β€’Β Marwan Muhammad


Made with ❀️ using Flutter

About

Skillify is a cross-platform Flutter application that enables people to exchange skills through short, focused one-on-one learning sessions, powered by a credit-based system, reputation, and real-time human interaction.

Topics

Resources

Stars

12 stars

Watchers

0 watching

Forks

Contributors

Languages