Skip to main content

ulaskelas-frontend - Documentation

Document Status
Document OwnerProduct Engineering 2026Product Engineering 2026
Contributors
Project Linkshttps://github.com/ristekoss/ulaskelas-frontendhttps://github.com/ristekoss/ulaskelas-frontend
Project Linkshttps://ulaskelas-rfhsl14cq-webdev-uiacid.vercel.app/enhttps://ulaskelas-rfhsl14cq-webdev-uiacid.vercel.app/en
Project Links[Monitoring Dashboard][Monitoring Dashboard]
Project Links[API Documentation][API Documentation]
Project Links[Other Related Doc/Link][Other Related Doc/Link]
TeamTheodore Kevin Himawantheodore.kevin@ristek.cs.ui.ac.id
TeamAri Darrell Muljonodarrell@ristek.cs.ui.ac.id
TeamGrace Karinagracekarin@ristek.cs.ui.ac.id
TeamYeshua Marco G. Manurungmarco@ristek.cs.ui.ac.id

πŸ”Ž Background

Overview​

This repository contains the Flutter frontend for the UlasKelas experience. The application provides course discovery, reviews, calculator flows, leaderboard features, and profile management while integrating with backend APIs and client-side caching to support the main user journey.

Stakeholders​

  • Users: UI students
  • Upstream Dependencies: Backend service
  • Downstream Consumers: End users

Scope & Boundaries​

  • In Scope: Frontend pages, state management, platform-specific build configuration
  • Out of Scope: Backend business logic

βš™οΈ Architecture & Design

System Diagram​

Architecture Decisions (ADRs)​

  • Language/Framework: Flutter, dart
  • Database: firebase
  • Communication: Synchronous via HTTP call

πŸ’»Technical Specifications

API Documentation​

Data Model/Schema​

Project Structure​

lib/                                # main Flutter application source
β”œβ”€β”€ app.dart # root MaterialApp setup and analytics
β”œβ”€β”€ app_wrapper.dart # splash, version check, and startup routing gate
β”œβ”€β”€ authentication_page.dart # login entry screen before SSO
β”œβ”€β”€ main_page.dart # main bottom-navigation shell
β”œβ”€β”€ onboarding_page.dart # onboarding flow for first install
β”œβ”€β”€ core/ # shared app foundation used across features
β”‚ β”œβ”€β”€ bases/ # base states, enums, entities, and reusable widgets
β”‚ β”œβ”€β”€ client/ # dio request helpers and API call wrappers
β”‚ β”œβ”€β”€ constants/ # app-wide constants, route names, asset names
β”‚ β”œβ”€β”€ environment/ # flavor config, endpoints, and package settings
β”‚ β”œβ”€β”€ error/ # failures and error handling helpers
β”‚ β”œβ”€β”€ extension/ # shared Dart/response extensions
β”‚ └── theme/ # colors, fonts, and theme definitions
β”œβ”€β”€ documentation/ # supporting technical docs
β”‚ └── data_and_backend.md # frontend-backend communication notes
β”œβ”€β”€ features/ # feature modules grouped by business domain
β”‚ β”œβ”€β”€ home/ # home dashboard, review history, current semester data
β”‚ β”œβ”€β”€ kalkulator/ # calculator pages, states, models, and component flows
β”‚ β”œβ”€β”€ leaderboard/ # leaderboard ranking, tags, guideline, and states
β”‚ β”œβ”€β”€ matkul/ # course-related features
β”‚ β”‚ β”œβ”€β”€ bookmarks/ # bookmarked course flow
β”‚ β”‚ β”œβ”€β”€ detail/ # course detail page and review listing
β”‚ β”‚ β”œβ”€β”€ form/ # review submission form and tag selection
β”‚ β”‚ β”œβ”€β”€ main/ # shared course repository and datasource layer
β”‚ β”‚ └── search/ # course search, filters, and search results
β”‚ β”œβ”€β”€ profile/ # user profile retrieval and account actions
β”‚ └── sso/ # SSO webview and authentication progress state
└── services/ # shared device and persistence services
β”œβ”€β”€ versioning/ # app version check helpers
β”œβ”€β”€ file_service.dart # local file read/write helper
β”œβ”€β”€ hive_db_service.dart # Hive persistence wrapper
β”œβ”€β”€ launch_service.dart # external URL/browser launcher
β”œβ”€β”€ pref_service.dart # shared preferences helper
└── share_service.dart # native share helper

assets/ # static UI assets
β”œβ”€β”€ icons/ # SVG and icon assets
└── images/ # illustrations, logos, and images

android/ # Android-specific build and flavor config
ios/ # iOS-specific project files
web/ # web entry files, manifest, and icons
macos/ # macOS runner configuration
linux/ # Linux runner configuration
windows/ # Windows runner configuration
test/ # widget and automated test files
pubspec.yaml # Flutter dependencies and asset registration
firebase.json # Firebase hosting configuration
README.md # repository readme and technical documentation
CONTRIBUTING.md # contribution guidelines
pull_request_template.md # pull request template

Components​

LayerPathsResponsibility
App Shellapp.dart, app_wrapper.dart, main_page.dart, authentication_page.dart, onboarding_page.dartBootstraps application-wide concerns and determines the initial screen.
Navigation Layerlib/core/bases/states/navigation_state.dartEncapsulates route transitions using a centralized navigation state object.
Global Reactive State (GlobalState, AuthState, ThemeState, ProfileState, BookmarkState, SearchCourseState, LeaderboardState, CalculatorState, ComponentFormState)β€”Registers long-lived reactive models shared across multiple screens.
Theme & Design Systemlib/core/theme/..., lib/core/bases/widgets/...Defines shared UI elements including colors, typography, reusable components, and integration with ristek_material_component.
Authentication & SSOfeatures/sso/presentation/pages/sso_web_page.dart, features/sso/presentation/states/progress_webview_state.dart, authentication_page.dartHandles login entry points and manages the SSO webview authentication flow.
Home Experience (HomePage, HomeCourseListPage, HomeDaftarUlasanPage, CurrentTermCourseState, ReviewHistoryState)β€”Provides the landing page and quick access to course lists and user reviews.
Course Catalog Corefeatures/matkul/main/domain/..., features/matkul/main/data/...Defines core data contracts and repository infrastructure for course-related features.
Course Search & FilterSearchCoursePage, FilterPage, SearchCourseState, FilterState, search_list_view.dart, card_course.dartSupports course search functionality including keyword search, filtering, pagination, and search result presentation.
Course Detail & ReviewsDetailMatkulPage, AllReviewMatkulPage, ReviewMatkulPage, CourseDetailState, review_card.dart, title_and_bookmark.dart, star_rating.dartDisplays detailed course information, review summaries, full review lists, and bookmark interactions.
Review SubmissionReviewMatkulFormPage, AddReviewMatkulTagPage, SuccessFormPage, ReviewCourseFormState, SearchTagState, ReviewCourseState, form_rating_component.dart, guideline_card.dartHandles user input for reviews, including tagging, rating, form submission, and success feedback.
BookmarksBookmarksPage, BookmarkState, card_bookmark.dartRetrieves and displays bookmarked courses for quick access.
CalculatorCalculatorPage, SearchCourseCalculator, CalculatorComponentPage, ComponentFormPage, EditComponentPage, CalculatorState, ComponentState, ComponentFormState, card_calculator.dart, card_component.dartAllows users to create grade calculators, manage score components, and compute final scores.
LeaderboardLeaderboardPage, GuidelinePage, LeaderboardState, leaderboard_card.dart, leaderboard_tag.dart, skeleton_card_leaderboard.dartDisplays ranking data, leaderboard categories, and supporting UI components.
ProfileProfilePage, ProfileState, profile_data.dart, keluar_button.dartManages user profile display and logout functionality.
Data Access Layerdata/datasources, data/repositories, data/modelsHandles communication with APIs and maps responses into application models.
Shared Infrastructurelib/core/client/..., lib/services/...Provides shared utilities such as networking, storage, date/time helpers, version control, and external integrations.

☁️ Operational Playbook

Infrastructure​

Environment Variables​

KeyDescriptionDefault (Dev)Sensitive?
BASE_URL_DEVURL backend developmenthttps://api-ulaskelas-stg.ristek.cs.ui.ac.idNo
BASE_URL_PRODURL backend productionhttps://api-ulaskelas.ristek.cs.ui.ac.idNo

πŸ™‹Questions

πŸ—’ List of frequently asked questions or question that need to be answered that is related to this initiative ..