Grade Tracker iOS Application

iOS Application Development, Firebase, Firestore, Storage, Cloud Function, CRUD

Project Description

An iOS mobile application for tracking weighted course grades at Rose-Hulman Institute of Technology. The app enables students to monitor academic performance in real-time without waiting for professors to update online grade portals.

System Architecture

graph TB
    subgraph iOS["iOS Application<br/>Swift + Storyboard"]
        UI[User Interface<br/>UIKit Views]
        LOGIC[Business Logic<br/>Grade Calculations]
        AUTH[Authentication<br/>Firebase Auth]
    end

    subgraph Backend["Firebase Backend"]
        FIRESTORE[Firestore Database<br/>Grade Data]
        STORAGE[Firebase Storage<br/>User Files]
        FUNCTIONS[Cloud Functions<br/>Server Logic]
    end

    UI --> LOGIC
    LOGIC --> AUTH
    AUTH --> FIRESTORE
    AUTH --> STORAGE
    LOGIC --> FIRESTORE
    FIRESTORE --> FUNCTIONS
    FUNCTIONS --> FIRESTORE

    style UI fill:#e1f5ff
    style FIRESTORE fill:#fff4e1
    style LOGIC fill:#d4edda

Application Features

flowchart TD
    START([Launch App]) --> LOGIN[User Login<br/>Firebase Auth]
    LOGIN --> DASHBOARD[Course Dashboard]

    DASHBOARD --> ADD_COURSE[Add New Course]
    DASHBOARD --> VIEW_COURSE[View Course Details]

    ADD_COURSE --> DEFINE_WEIGHTS[Define Grade Categories<br/>Weights & Percentages]
    DEFINE_WEIGHTS --> SAVE_COURSE[Save to Firestore]

    VIEW_COURSE --> ADD_GRADE[Add Assignment Grade]
    ADD_GRADE --> CALC[Calculate Weighted Average]
    CALC --> UPDATE[Update Display]
    UPDATE --> VIEW_COURSE

    SAVE_COURSE --> DASHBOARD

    style LOGIN fill:#e1f5ff
    style CALC fill:#fff4e1
    style UPDATE fill:#d4edda

Key Features:

  • User Authentication: Secure login with Firebase Authentication
  • CRUD Operations: Create, Read, Update, Delete courses and assignments
  • Weighted Grade Calculation: Automatic computation of course grades based on category weights
  • Cloud Sync: Real-time data synchronization across devices via Firestore
  • Persistent Storage: All data backed up to Firebase Cloud Storage

Result

Three-Tier Architecture

The application follows a clean three-layer architecture pattern:

graph TB
    subgraph Presentation["Presentation Layer"]
        VIEWS[UIKit Views & Storyboards]
        VC[View Controllers]
    end

    subgraph Business["Business Logic Layer"]
        MODELS[Data Models<br/>Course, Assignment, Category]
        CALC[Grade Calculation Engine]
        MANAGERS[Service Managers]
    end

    subgraph Data["Data Layer"]
        LOCAL[Local Cache<br/>UserDefaults]
        FIREBASE[Firebase Services<br/>Firestore + Auth + Storage]
    end

    VIEWS --> VC
    VC --> MANAGERS
    MANAGERS --> MODELS
    MANAGERS --> CALC
    CALC --> MODELS
    MANAGERS --> LOCAL
    MANAGERS --> FIREBASE

    style VIEWS fill:#e1f5ff
    style CALC fill:#fff4e1
    style FIREBASE fill:#d4edda

Original architecture diagram:

Technical Stack

  • Frontend: Swift, UIKit, Storyboard
  • Backend: Firebase (Firestore, Authentication, Cloud Storage, Cloud Functions)
  • Architecture Pattern: MVC (Model-View-Controller)
  • Data Persistence: Firestore (cloud) + UserDefaults (local cache)
  • Networking: Firebase SDK

Grade Calculation Algorithm

The weighted grade calculation follows this formula:

\[\text{Final Grade} = \sum_{i=1}^{n} \left( \text{Category}_i \times \text{Weight}_i \right)\]

Where each category grade is computed as:

\[\text{Category}_i = \frac{\sum_{j=1}^{m} \text{Score}_{ij}}{\sum_{j=1}^{m} \text{MaxScore}_{ij}} \times 100\]