Skip to content

arsh-bansal/UNEXP

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

5 Commits
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

UNEXP - Monash University Unit Explorer

UNEXP is an iOS application designed for Monash University students to browse, search, and explore university units (courses). The app provides detailed information about units including assessments, prerequisites, learning outcomes, and more.

Features

πŸ” Unit Discovery

  • Browse by Faculty: Navigate through different faculties to discover units
  • Search Units: Quick search functionality to find specific units
  • Unit Details: Comprehensive unit information including:
    • Unit code, title, and synopsis
    • Credit points and unit level
    • Assessments with weights
    • Learning outcomes
    • Prerequisites and requisites
    • Semester offerings and locations
    • Direct links to official unit handbooks

πŸ“š Bookmarking

  • Save Units: Bookmark your favorite units for quick access
  • Cloud Sync: Bookmarks are synced across devices using Firebase
  • Offline Access: Bookmarks are stored locally using Core Data

πŸ‘€ User Authentication

  • Google Sign-In: Secure authentication using Google accounts
  • Guest Mode: Browse units without creating an account
  • User Profiles: Manage your profile and preferences

🎨 User Experience

  • Modern UI: Clean and intuitive interface
  • Personalized Welcome: Customized greeting based on user profile
  • Smooth Navigation: Tab-based navigation with gesture support
  • Responsive Design: Optimized for both iPhone and iPad

Technical Details

Architecture

  • Language: Swift 5.0
  • Framework: UIKit with Storyboards
  • Minimum iOS Version: iOS 18.6
  • Deployment Target: iPhone and iPad

Dependencies

  • Firebase: Authentication and Firestore database
    • Firebase Auth
    • Firebase Firestore
    • Google Sign-In
  • Core Data: Local data persistence for bookmarks
  • User Notifications: Push notification support

Project Structure

UNEXP/
β”œβ”€β”€ ViewController/          # View controllers for each screen
β”‚   β”œβ”€β”€ HomeViewController.swift
β”‚   β”œβ”€β”€ LoginViewController.swift
β”‚   β”œβ”€β”€ SignUpViewController.swift
β”‚   β”œβ”€β”€ ProfileViewController.swift
β”‚   β”œβ”€β”€ facultyTableViewController.swift
β”‚   β”œβ”€β”€ UnitSearchTableViewController.swift
β”‚   β”œβ”€β”€ UnitDetailViewController.swift
β”‚   β”œβ”€β”€ BookmarkTableViewController.swift
β”‚   └── ...
β”œβ”€β”€ Cell/                    # Custom table view cells
β”‚   β”œβ”€β”€ FacultyTableViewCell.swift
β”‚   β”œβ”€β”€ UnitTableViewCell.swift
β”‚   └── BookmarkTableViewCell.swift
β”œβ”€β”€ Database/                # Database and data management
β”‚   β”œβ”€β”€ FirebaseController.swift
β”‚   β”œβ”€β”€ BookmarkDataManager.swift
β”‚   β”œβ”€β”€ BookmarkStore.swift
β”‚   └── DatabaseProtocol.swift
β”œβ”€β”€ DataModel/               # Data models and Core Data
β”‚   β”œβ”€β”€ UnitModels.swift
β”‚   β”œβ”€β”€ UnitBookmark+CoreDataClass.swift
β”‚   └── CoreData.xcdatamodeld/
β”œβ”€β”€ Utilities/               # Helper utilities
β”‚   └── ImageLoader.swift
└── Assets.xcassets/         # App icons and images

Setup Instructions

Prerequisites

  • Xcode 15.0 or later
  • iOS 18.6 SDK or later
  • CocoaPods or Swift Package Manager (for Firebase dependencies)
  • Firebase project with Authentication and Firestore enabled
  • Google Sign-In configuration

Installation

  1. Clone the repository

    git clone https://github.com/arsh-bansal/UNEXP.git
    cd UNEXP/unexp
  2. Install Dependencies

    • If using CocoaPods:
      pod install
    • Open UNEXP.xcworkspace (not .xcodeproj)
  3. Configure Firebase

    • Add your GoogleService-Info.plist to the project
    • Ensure Firebase is properly configured in your Firebase Console
    • Enable Authentication (Email/Password and Google Sign-In)
    • Set up Firestore database
  4. Configure Google Sign-In

    • Update the GIDClientID in Info.plist with your Google Sign-In client ID
    • Configure URL schemes in Info.plist
  5. Build and Run

    • Select your target device or simulator
    • Build and run the project (⌘R)

API Integration

The app connects to a backend API hosted on Railway:

  • Base URL: https://web-production-06b27.up.railway.app/units/
  • The API provides unit information including details, assessments, prerequisites, and offerings

Core Data Model

The app uses Core Data to store bookmarked units locally:

  • Entity: UnitBookmark
  • Stores unit code, title, and other relevant information
  • Syncs with Firebase Firestore for cloud backup

Firebase Configuration

Required Services

  1. Firebase Authentication

    • Email/Password authentication
    • Google Sign-In provider
  2. Cloud Firestore

    • Stores user bookmarks
    • Collection structure: users/{userId}/bookmarks/{bookmarkId}

Security Rules

Ensure your Firestore security rules allow authenticated users to read/write their own bookmarks:

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /users/{userId}/bookmarks/{bookmarkId} {
      allow read, write: if request.auth != null && request.auth.uid == userId;
    }
  }
}

Features in Detail

Unit Search

  • Real-time search functionality
  • Filters units by code, title, or keywords
  • Displays search results with unit codes and titles

Unit Details View

  • Overview Tab: Unit synopsis, credit points, and general information
  • Prerequisites Tab: Required units and prerequisites
  • Assessments Tab: Assessment breakdown with weights
  • Handbook Link: Direct link to official Monash unit handbook

Bookmark Management

  • Add/remove bookmarks from unit detail screens
  • View all bookmarks in a dedicated tab
  • Automatic sync with Firebase when signed in
  • Offline access to bookmarked units

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

This project is created for educational purposes as part of Monash University coursework.

Author

Arsh Bansal

Acknowledgments

  • Monash University for unit data and resources
  • Firebase for backend services
  • Railway for API hosting

Note: This app is designed specifically for Monash University students and requires access to the Monash unit database API.

About

No description, website, or topics provided.

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages