
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.
- 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
- 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
- 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



- Flutter SDK (3.7.2 or higher)
- Android Studio or Xcode for mobile development
- Firebase account for backend services
- Git for version control
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
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);
}
}
}
Common Issues:
-
Firebase configuration errors:
- Ensure
google-services.json
andGoogleService-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
- Ensure
-
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
- Run
-
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)
-
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!
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
Contributions to the QuickHire app are welcomed. If you would like to contribute to the development, please follow these guidelines:
-
Fork the repository.
-
Create a new branch for your feature or bug fix.
-
Make your changes and commit them with descriptive messages.
-
Push your changes to your fork.
-
Submit a pull request to the main repository.
- flutter_riverpod - State management
- go_router - Navigation and routing
- firebase_core - Firebase initialization
- firebase_auth - Authentication
- cloud_firestore - Database
- google_sign_in - Google authentication
- smooth_page_indicator - Page indicators
- lottie - Lottie animations
- flutter_native_splash - Splash screen
- skeletonizer - Loading skeletons
- flutter_map - Interactive maps
- latlong2 - Latitude/longitude utilities
- geolocator - Location services
- connectivity_plus - Network connectivity
- http - HTTP requests
- image_picker - Image selection
- url_launcher - URL launching
- timeago - Time formatting
- shared_preferences - Local storage
If you find this project useful, please consider giving it a star on GitHub. Your support is greatly appreciated!
- Please reach out to me at mostafasalama.my@gmail.com for further information.