Skip to content

A Flutter mobile app for location-based job matching in Malaysia, using Firebase, Google Auth, Firestore, Riverpod, and interactive maps.

Notifications You must be signed in to change notification settings

Developed-by-Mo/QuickHire

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

4 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

QHReleaseGraphic

QuickHire

Static Badge Static Badge Static Badge

πŸš€ Bridging the Gap Between Job Seekers and Employers in Malaysia

QuickHire is a comprehensive mobile application designed to revolutionize the job market in Malaysia by connecting job seekers with employers through location-based job posting and real-time applications. The app empowers employers to post jobs with precise locations, manage applications efficiently, and communicate directly with candidates. Job seekers can discover opportunities near them, apply with personalized messages, and track their application status in real-time. With Firebase integration for seamless authentication and data management, Google Sign-in for quick access, and map-based job search functionality, QuickHire provides an intuitive platform that caters to both casual job seekers and professional recruiters. This application is developed with a focus on user experience, creating a valuable resource that streamlines the hiring process for the Malaysian job market.

✨ Features

πŸ‘” For Employers

  • Post detailed job listings with location-based mapping and job categories
  • Manage incoming applications with accept/reject functionality and employer messages
  • View comprehensive application analytics and candidate information
  • Real-time messaging with potential candidates
  • Job posting management with active/inactive status controls

πŸ‘€ For Job Seekers

  • Browse and search jobs by location, category, and salary range
  • Apply to jobs with personalized application messages
  • Track application status with real-time updates and notifications
  • Location-based job discovery using interactive maps
  • View detailed job information and employer profiles

πŸ”§ General Features

  • Firebase Authentication with Google Sign-in integration
  • Real-time notifications for application updates
  • Interactive map-based location selection and job search
  • Comprehensive search and filtering system
  • In-app messaging between employers and job seekers
  • Responsive design optimized for mobile devices

πŸ–ΌοΈ Screenshots

QHSC1 QHSC2 QHSC3

πŸ“ How to Build

Prerequisites

Setup Instructions

To build the app, follow these steps:

# Ensure Flutter is installed and properly configured
flutter doctor

# Clone the repository
git clone https://github.com/Developed-by-Mo/QuickHire.git

# Navigate to the project directory
cd QuickHire

# Run 'flutter pub get' to get dependencies
flutter pub get

# Set up Firebase:
# 1. Create a new Firebase project at https://console.firebase.google.com
# 2. Enable Authentication with Google Sign-in provider
# 3. Create a Firestore database in production mode
# 4. Add Android and iOS apps to your Firebase project with these package names:
#    - Android: com.example.quickhire (or change in android/app/build.gradle.kts)
#    - iOS: com.example.quickhire (or change in ios/Runner.xcodeproj)
# 5. Download and place the configuration files:
#    - Download google-services.json and place it in android/app/
#    - Download GoogleService-Info.plist and place it in ios/Runner/
# 6. Run the FlutterFire CLI to generate firebase_options.dart:
#    dart pub global activate flutterfire_cli
#    flutterfire configure --project=your-firebase-project-id

# Generate splash screen
dart run flutter_native_splash:create

# Build and run the project
flutter run

Firestore Security Rules

Don't forget to set up proper Firestore security rules in the Firebase console. Here's a basic example:

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    // Users can read/write their own user document
    match /users/{userId} {
      allow read, write: if request.auth != null && request.auth.uid == userId;
    }
    
    // Job listings are readable by all authenticated users
    match /job_listings/{document} {
      allow read: if request.auth != null;
      allow write: if request.auth != null && request.auth.uid == resource.data.poster_uid;
    }
    
    // Applications are readable by applicant and job poster
    match /job_applications/{jobId}/applications/{applicationId} {
      allow read, write: if request.auth != null && 
        (request.auth.uid == resource.data.applicantUid || 
         request.auth.uid == resource.data.employerUid);
    }
  }
}

πŸ”§ Troubleshooting

Common Issues:

  1. Firebase configuration errors:

    • Ensure google-services.json and GoogleService-Info.plist are in the correct locations
    • Verify package names match between Firebase console and your app configuration
    • Run flutterfire configure if you're getting Firebase initialization errors
  2. Flutter build errors:

    • Run flutter clean && flutter pub get to clean dependencies
    • Check that your Flutter version matches the SDK requirements in pubspec.yaml
    • Ensure all required development tools are installed with flutter doctor
  3. Google Sign-in issues:

    • Verify Google Sign-in is enabled in Firebase Authentication
    • Check that the SHA-1 fingerprint is added to your Firebase Android app (for Android)
    • Ensure proper URL schemes are configured (for iOS)
  4. Location permissions:

    • The app requires location permissions for map functionality
    • Grant location permissions when prompted on first launch

Need help? Feel free to open an issue if you encounter any problems!

πŸ—οΈ Project Structure

lib/
β”œβ”€β”€ core/                    # Core utilities and shared components
β”‚   β”œβ”€β”€ model/              # Data models (JobListing, LocationData, etc.)
β”‚   β”œβ”€β”€ services/           # Core services (AuthService, JobService, etc.)
β”‚   β”œβ”€β”€ theme/              # App theming and color palette
β”‚   └── views/              # Shared widgets and components
β”œβ”€β”€ features/               # Feature-based modules
β”‚   β”œβ”€β”€ auth/               # Authentication (login, registration)
β”‚   β”œβ”€β”€ home/               # Home screens for employers and employees
β”‚   β”œβ”€β”€ job/                # Job viewing and details
β”‚   β”œβ”€β”€ job_application/    # Application management system
β”‚   β”œβ”€β”€ job_posting/        # Job creation and posting
β”‚   β”œβ”€β”€ messaging/          # In-app messaging system
β”‚   β”œβ”€β”€ notifications/      # Push notifications
β”‚   β”œβ”€β”€ onboarding/         # App onboarding flow
β”‚   β”œβ”€β”€ profile/            # User profile management
β”‚   └── search/             # Job search and filtering
└── firebase_options.dart   # Firebase configuration

🀝 Contributing

Contributions to the QuickHire app are welcomed. If you would like to contribute to the development, please follow these guidelines:

  1. Fork the repository.

  2. Create a new branch for your feature or bug fix.

  3. Make your changes and commit them with descriptive messages.

  4. Push your changes to your fork.

  5. Submit a pull request to the main repository.

Dependencies used

Core Dependencies

  • flutter_riverpod - State management
  • go_router - Navigation and routing
  • firebase_core - Firebase initialization
  • firebase_auth - Authentication
  • cloud_firestore - Database
  • google_sign_in - Google authentication

UI & Animation

  • smooth_page_indicator - Page indicators
  • lottie - Lottie animations
  • flutter_native_splash - Splash screen
  • skeletonizer - Loading skeletons

Location & Maps

  • flutter_map - Interactive maps
  • latlong2 - Latitude/longitude utilities
  • geolocator - Location services

Utilities

  • connectivity_plus - Network connectivity
  • http - HTTP requests
  • image_picker - Image selection
  • url_launcher - URL launching
  • timeago - Time formatting
  • shared_preferences - Local storage

Support

If you find this project useful, please consider giving it a star on GitHub. Your support is greatly appreciated!

Buy Me A Coffee

License

About

A Flutter mobile app for location-based job matching in Malaysia, using Firebase, Google Auth, Firestore, Riverpod, and interactive maps.

Topics

Resources

Stars

Watchers

Forks

Sponsor this project

Languages