Skip to content
/ wflow Public

A comprehensive freelance and job management platform connecting businesses with skilled workers

Notifications You must be signed in to change notification settings

Vanhoai/wflow

Folders and files

NameName
Last commit message
Last commit date

Latest commit

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

Repository files navigation

πŸš€ WFlow - Freelance & Job Management Platform

Flutter Dart Firebase Android iOS

Version License Build Status

A comprehensive freelance and job management platform connecting businesses with skilled workers

πŸ“‹ Table of Contents

✨ Features

🏒 For Businesses

  • πŸ“ Job Posting: Create and manage job postings with detailed requirements
  • πŸ‘₯ Candidate Management: Review and manage job applications
  • πŸ“Š Excel Integration: Bulk upload tasks via Excel files
  • πŸ’Ό Contract Management: Create, sign, and track contracts
  • πŸ’° Payment System: Secure payment processing with balance management
  • πŸ“ˆ Progress Tracking: Monitor project progress with visual indicators

πŸ‘· For Workers

  • πŸ” Job Search: Advanced search and filtering capabilities
  • πŸ“„ CV Management: Upload and manage multiple CVs
  • ⭐ Bookmark Jobs: Save interesting job opportunities
  • πŸ’¬ Real-time Chat: Communicate with employers
  • πŸŽ™οΈ Voice Messages: Send voice recordings in chat
  • πŸ“± Identity Verification: AI-powered ID and face verification

🌟 General Features

  • 🌐 Multi-language Support: Vietnamese and English localization
  • πŸ” Secure Authentication: OAuth integration with Google Sign-In
  • πŸ“² Push Notifications: Real-time notifications via Firebase
  • 🎨 Modern UI/UX: Material Design with custom theming
  • πŸ“± Cross-platform: Native iOS and Android support

πŸ“± Screenshots

Home Screen Job Search Chat Interface Profile
Home Search Chat Profile

πŸ—οΈ Architecture

WFlow follows Clean Architecture principles with BLoC Pattern for state management:

lib/
β”œβ”€β”€ 🎯 core/           # Core utilities and shared components
β”œβ”€β”€ πŸ“Š common/         # Common services (DI, localization, etc.)
β”œβ”€β”€ βš™οΈ configuration/  # App configuration and constants
β”œβ”€β”€ 🧩 modules/        # Feature modules
β”‚   β”œβ”€β”€ πŸ” auth/       # Authentication module
β”‚   β”œβ”€β”€ πŸ“– introduction/ # Onboarding module
β”‚   └── 🏠 main/       # Main app features
β”‚       β”œβ”€β”€ πŸ“‘ data/   # Data layer (repositories, models)
β”‚       β”œβ”€β”€ 🎯 domain/ # Business logic (entities, use cases)
β”‚       └── 🎨 presentation/ # UI layer (screens, widgets, BLoC)

πŸ› οΈ Tech Stack

Frontend

  • Flutter 3.x - Cross-platform UI framework
  • Dart - Programming language
  • BLoC Pattern - State management
  • Get_It - Dependency injection
  • Auto Route - Navigation management

Backend Integration

  • HTTP/REST APIs - Backend communication
  • Firebase - Authentication & Push notifications
  • Stringee - Video/Voice calling integration

Key Packages

dependencies:
  flutter_bloc: ^8.1.3 # State management
  get_it: ^7.6.4 # Dependency injection
  cached_network_image: ^3.3.0 # Image caching
  file_picker: ^6.1.1 # File selection
  flutter_screenutil: ^5.9.0 # Responsive design
  voice_message_package: ^2.1.3 # Voice messaging
  stringee_flutter_plugin: ^0.8.8 # Video calls

πŸš€ Getting Started

Prerequisites

  • Flutter SDK (3.0.0 or higher)
  • Dart SDK (2.17.0 or higher)
  • Android Studio / VS Code
  • iOS development setup (for iOS builds)

Installation

  1. Clone the repository

    git clone https://github.com/username/wflow.git
    cd wflow
  2. Install FVM (Flutter Version Management)

    dart pub global activate fvm
    fvm install
    fvm use
  3. Install dependencies

    fvm flutter pub get
  4. Setup environment

    cp .env.example .env
    # Edit .env with your configuration
  5. Run the application

    # Development
    fvm flutter run --flavor dev
    
    # Production
    fvm flutter run --flavor prod

Build Commands

# Android APK
make build-apk

# Android Bundle
make build-appbundle

# iOS
make build-ios

πŸ“ Project Structure

wflow/
β”œβ”€β”€ πŸ“± android/                 # Android-specific code
β”œβ”€β”€ 🍎 ios/                     # iOS-specific code
β”œβ”€β”€ 🐧 linux/                   # Linux desktop support
β”œβ”€β”€ πŸͺŸ windows/                 # Windows desktop support
β”œβ”€β”€ πŸ–₯️ macos/                   # macOS desktop support
β”œβ”€β”€ πŸ“¦ assets/                  # Static assets
β”‚   β”œβ”€β”€ 🎨 icons/              # App icons
β”‚   β”œβ”€β”€ 🌍 languages/          # Localization files
β”‚   └── 🎬 anim/               # Lottie animations
β”œβ”€β”€ βš™οΈ configs/                 # Configuration files
β”œβ”€β”€ πŸ“œ scripts/                 # Build and deployment scripts
└── πŸ“š lib/                     # Main application code

πŸ”‘ Key Components

🏠 Main Features

Job Management

Messaging System

Identity Verification

πŸ”§ Core Services

Dependency Injection

// lib/common/injection.dart
final GetIt instance = GetIt.instance;

Localization

// lib/common/localization.dart
AppLocalization localization = instance.get<AppLocalization>();
String text = localization.translate('key');

🌐 API Integration

HTTP Client Configuration

// Base URL configuration
const String baseUrl = 'https://api.wflow.com';

// Request/Response models
class UpgradeBusinessRequest {
  final String email;
  final String phone;
  final String name;
  // ... other fields
}

File Upload

// File upload for business logos, CVs, etc.
final response = await fileUseCase.uploadFile(
  request: UploadFileRequest(
    folder: 'Business',
    file: selectedFile,
  ),
);

🎯 State Management

BLoC Pattern Implementation

// Example: Job posting BLoC
class UpPostBloc extends Bloc<UpPostEvent, UpPostState> {
  final PostUseCase postUseCase;

  UpPostBloc({required this.postUseCase}) : super(UpPostState()) {
    on<UpPostAddTaskEvent>(_addTask);
    on<UpPostSubmitEvent>(_submitPost);
  }

  Future<void> _addTask(UpPostAddTaskEvent event, Emitter emit) async {
    // Task addition logic
  }
}

State Classes

class UpPostState {
  final List<String> tasks;
  final bool isLoading;
  final String? error;

  const UpPostState({
    this.tasks = const [],
    this.isLoading = false,
    this.error,
  });
}

πŸ”’ Security Features

  • πŸ” JWT Token Management - Secure authentication
  • πŸ“± Device Token Verification - Device-based security
  • πŸ†” AI-powered ID Verification - Face matching and document validation
  • πŸ”’ Secure Storage - Encrypted local data storage

🌍 Internationalization

Supported Languages

  • πŸ‡»πŸ‡³ Vietnamese (vi)
  • πŸ‡ΊπŸ‡Έ English (en)

Usage

Text(instance.get<AppLocalization>().translate('welcome') ?? 'Welcome')

πŸ§ͺ Testing

# Run unit tests
flutter test

# Run integration tests
flutter test integration_test/

# Generate coverage report
flutter test --coverage

πŸ“± Platform Support

Platform Status Version
πŸ€– Android βœ… Supported API 21+
🍎 iOS βœ… Supported iOS 11+
🐧 Linux 🚧 In Development -
πŸͺŸ Windows 🚧 In Development -
πŸ–₯️ macOS 🚧 In Development -

🀝 Contributing

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

Development Workflow

  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.

πŸ“ž Support


Made with ❀️ by the WFlow Team

GitHub stars GitHub forks

About

A comprehensive freelance and job management platform connecting businesses with skilled workers

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •