Flutter Dart Firebase Android iOS
A comprehensive freelance and job management platform connecting businesses with skilled workers
- Features
- Screenshots
- Architecture
- Tech Stack
- Getting Started
- Project Structure
- Key Components
- API Integration
- State Management
- Contributing
- License
- π 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
- π 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
- π 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
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)
- Flutter 3.x - Cross-platform UI framework
- Dart - Programming language
- BLoC Pattern - State management
- Get_It - Dependency injection
- Auto Route - Navigation management
- HTTP/REST APIs - Backend communication
- Firebase - Authentication & Push notifications
- Stringee - Video/Voice calling integration
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
- Flutter SDK (3.0.0 or higher)
- Dart SDK (2.17.0 or higher)
- Android Studio / VS Code
- iOS development setup (for iOS builds)
-
Clone the repository
git clone https://github.com/username/wflow.git cd wflow -
Install FVM (Flutter Version Management)
dart pub global activate fvm fvm install fvm use
-
Install dependencies
fvm flutter pub get
-
Setup environment
cp .env.example .env # Edit .env with your configuration -
Run the application
# Development fvm flutter run --flavor dev # Production fvm flutter run --flavor prod
# Android APK make build-apk # Android Bundle make build-appbundle # iOS make build-ios
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
PostUseCase- Job posting operationsContractUseCase- Contract managementUpPostBloc- Job posting state management
AuthenticationsBloc- ID verification logicAuthenticationUseCase- Verification business logic
// lib/common/injection.dart final GetIt instance = GetIt.instance;
// lib/common/localization.dart AppLocalization localization = instance.get<AppLocalization>(); String text = localization.translate('key');
// 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 for business logos, CVs, etc. final response = await fileUseCase.uploadFile( request: UploadFileRequest( folder: 'Business', file: selectedFile, ), );
// 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 } }
class UpPostState { final List<String> tasks; final bool isLoading; final String? error; const UpPostState({ this.tasks = const [], this.isLoading = false, this.error, }); }
- π 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
- π»π³ Vietnamese (vi)
- πΊπΈ English (en)
Text(instance.get<AppLocalization>().translate('welcome') ?? 'Welcome')
# Run unit tests flutter test # Run integration tests flutter test integration_test/ # Generate coverage report flutter test --coverage
| Platform | Status | Version |
|---|---|---|
| π€ Android | β Supported | API 21+ |
| π iOS | β Supported | iOS 11+ |
| π§ Linux | π§ In Development | - |
| πͺ Windows | π§ In Development | - |
| π₯οΈ macOS | π§ In Development | - |
We welcome contributions! Please see our Contributing Guide for details.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- π§ Email: support@wflow.com
- π Website: wflow.site
- π Documentation: docs.wflow.com
Made with β€οΈ by the WFlow Team