Skip to content

V1shal-dev/career_connect

Repository files navigation

CareerConnect

A modern Flutter job-board app that connects recruiters and job seekers. Recruiters post jobs and manage applicants; job seekers browse jobs and apply with a resume and cover letter. Built with Firebase (Auth + Firestore) and Cloudinary for resume storage.


Features

For Recruiters

  • Post jobs — Title, company, location, type, salary range, description
  • Manage jobs — Edit, delete, and view your listings
  • View applicants — See all applications per job with cover letter and contact info
  • View resumes — One tap opens the applicant’s PDF in your browser or default PDF app
  • Update application status — Mark applicants as Reviewed, Accepted, or Rejected
  • Dashboard — Quick stats (posted jobs, total applicants)

For Job Seekers

  • Browse jobs — Search and filter by location, job type, salary
  • Job details — Full description and apply in one tap
  • Apply with resume — Upload PDF/DOC/DOCX (stored on Cloudinary) and add a cover letter
  • My applications — Track status of all your applications

General

  • Role-based auth — Sign up as Recruiter or Job Seeker; separate flows after login
  • Firebase Authentication — Email/password sign-in and registration
  • Firestore — Jobs, applications, and user data in real time
  • Responsive UI — Animations, shimmer, and consistent theming

Tech Stack

Area Technology
Framework Flutter (Dart 3.x)
State management Provider
Routing go_router
Backend / Auth Firebase (Core, Auth, Firestore)
File storage Cloudinary (raw upload for resumes)
Networking Dio, http
UI Material 3, flutter_animate, Lottie, google_fonts

Prerequisites


Setup

1. Clone and install

git clone https://github.com/YOUR_USERNAME/career_connect.git
cd career_connect
flutter pub get

2. Firebase

  1. Create a Firebase project and enable Authentication (Email/Password) and Cloud Firestore.

  2. Register your app (Android / iOS / Web) in the Firebase console and download config files if needed.

  3. Install FlutterFire CLI and generate/configure options:

    dart pub global activate flutterfire_cli
    flutterfire configure
  4. Ensure lib/firebase_options.dart is generated and that main.dart uses DefaultFirebaseOptions.currentPlatform when calling Firebase.initializeApp().

3. Cloudinary

  1. Create a Cloudinary account and get your Cloud name.

  2. Create an unsigned upload preset (e.g. career_connect_resumes) and set Resource type to Raw (for PDFs).

  3. In the project, set your config in lib/core/constants/cloudinary_config.dart:

    • cloudName — your cloud name
    • uploadPreset — your unsigned preset name
  4. Optional: adjust maxFileSize and allowedExtensions (default: PDF, DOC, DOCX; max 3MB).

4. Run the app

flutter run

Use a device or emulator; for web, ensure Firebase and Cloudinary are allowed for your origins.


Project Structure

lib/
├── main.dart                 # Entry: Firebase init, providers, MaterialApp.router
├── firebase_options.dart     # Generated by FlutterFire (do not commit secrets)
├── core/
│   ├── constants/            # Colors, strings, Cloudinary config
│   ├── routes/               # go_router routes
│   ├── theme/                # App theme
│   ├── screens/              # All screens
│   │   ├── auth/             # Role selection, login, signup
│   │   ├── recruiter/        # Recruiter home, add/manage jobs, applicants
│   │   └── jobseeker/        # Job seeker home, job details, apply, my applications
│   └── utils/                # Helpers, validators
├── models/                   # User, Job, Application
├── providers/                # Auth, Job, Application (Provider)
└── services/                 # Auth, Firestore, Cloudinary

Resume Viewing (Recruiters)

When a recruiter taps View Resume on an applicant:

  1. The app uses the preview Cloudinary URL (raw, no fl_attachment) so the PDF opens correctly.
  2. The resume opens in the device browser or default PDF app for reliable viewing.
  3. If it can’t open automatically, a dialog offers Copy link and Open in browser so the recruiter can still access the PDF easily.

Configuration Summary

Config file / env Purpose
firebase_options.dart API keys and project IDs (FlutterFire)
cloudinary_config.dart Cloud name, upload preset, file size/type

Do not commit real API keys or secrets to the repo; use environment variables or CI secrets for production.


License

This project is provided as-is. Use it for learning or as a base for your own job-board app.


Contributing

  1. Fork the repo.
  2. Create a branch (git checkout -b feature/your-feature).
  3. Commit changes (git commit -m 'Add some feature').
  4. Push to the branch (git push origin feature/your-feature).
  5. Open a Pull Request.

CareerConnect — Connect talent with opportunity.

About

CareerConnect is a full-stack job portal mobile application built with Flutter and Firebase, featuring two distinct user panels: Recruiter Panel: Post, manage, and track job listings with applicant management Job Seeker Panel: Browse, search, and apply for jobs with resume uploads

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors