DIVD Works Flutter & Dart Cloud Firestore Matching System

TheWorks

A modern internship matching platform built for DIVD Works that connects talented students with innovative companies via smart tag-relevance algorithms.

Project Overview

Flutter Firebase Auth Cloud Firestore Cross-Platform

TheWorks is a mobile application designed to modernize the internship search experience. Built with Flutter for seamless cross-platform performance on iOS and Android, the app acts as a bridge between ambitious tech students and pioneering companies.

The system relies on a real-time database architecture powered by Google Firebase to deliver instant project matching, dynamic search filtering, and live profile updates.

Skills Learned

Dart UX Design Firestore

During the engineering of TheWorks, I significantly expanded my mobile development expertise. I mastered the Dart programming language and Flutter state management techniques.

Additionally, I designed scalable data schemas in Google Firestore and crafted an intuitive User Experience (UX) tailored specifically to the needs of both job-seeking students and corporate recruiters.

Tag-Based Matching Algorithm

A cornerstone of the application is the custom matching algorithm that ranks available projects based on candidate skill tags. It expands user tags hierarchically (e.g., 'Front-end' implies 'HTML/CSS') and calculates a relevance score for optimal pairing.

matching_service.dart
Dart
List<(Project, int)> sortProjectsByTags(List projects, List userTags) {
  if (userTags.isEmpty) {
    return projects.map((p) => (p, 0)).toList();
  }

  final expandedUserTags = expandTags(userTags);
  final List<(Project, int)> matches = [];
  final List others = [];

  for (final project in projects) {
    int score = 0;
    for (final projectTag in project.tags) {
      if (expandedUserTags.contains(projectTag.toLowerCase())) {
        score++;
      }
    }
    if (score > 0) {
      matches.add((project, score));
    } else {
      others.add(project);
    }
  }

  matches.sort((a, b) => b.$2.compareTo(a.$2));
  return [...matches, ...others.map((p) => (p, 0))];
}

Secure Authentication

User credentials and access controls are secured using Firebase Authentication, providing encrypted sign-in, user registration, and automated password recovery flows.

auth_service.dart
Dart
class AuthService {
  final FirebaseAuth _auth = FirebaseAuth.instance;

  Future signIn({required String email, required String password}) async {
    return await _auth.signInWithEmailAndPassword(
        email: email, password: password);
  }

  Future createAccount({required String email, required String password, required String displayName}) async {
    var user = await _auth.createUserWithEmailAndPassword(
        email: email, password: password);
    user.user!.updateDisplayName(displayName);
    return user;
  }
}

Data Architecture

The app employs strongly typed Dart data models to ensure full type safety and seamless serialization between Cloud Firestore JSON documents and the Flutter UI layer.

project_model.dart
Dart
class Project {
  final String? id;
  final String name;
  final String description;
  final List tags;
  final String companyName;
  final String locationType;

  Project({
    this.id,
    required this.name,
    required this.description,
    required this.tags,
    required this.companyName,
    required this.locationType,
  });

  Map toMap() {
    return {
      'name': name,
      'description': description,
      'tags': tags,
      'companyName': companyName,
      'locationType': locationType,
      'searchTags': tags.map((t) => t.toLowerCase()).toList(),
    };
  }
}