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\]