Skip to content
A cross platform mobile app for LumiNUS based on Flutter and luminus_api Dart package.
Branch: master
Clone or download
le0tan Merge pull request #63 from fluminus/feature__announcement
Enhancement to announcement page
Latest commit 5fcb702 Jul 1, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
android Fixed the location of GoogleService-Info.plist Jun 29, 2019
assets Configuration for first TestFlight build Jun 27, 2019
ios Fixed bugs preventing file page from working Jul 1, 2019
lib Fixed bugs preventing file page from working Jul 1, 2019
test Clean up and try to pass CI Jun 28, 2019
.gitignore Fixed a bug where folders and files can't be mixed Jun 11, 2019
.travis.yml Add missing files. Jun 26, 2019
LICENSE Add missing files. Jun 26, 2019 Update Jul 1, 2019

Fluminus App

Build Status Codemagic build status License

An overall much better LMS (Learning management system) experience on LumiNUS, and more to truly illuminate your learning path, written in Dart, built with Flutter, available on both iOS and Android.


Features implemented by milestone 2 are labeled with a ✔

  • A better LumiNUS mobile experience
    • push notifications powered by Firebase Cloud Messaging ✔
      • announcement
      • file upload
      • forum posts & reply //wonderful if we only receive “favourite” ones
      • web lecture update
    • offline file management (SQLite) ✔
    • gmail-like announcement management (schedule & archive announcements) ✔
  • A task management tool (todo-list)
    • Basic task management ✔
    • Intelligent suggestions (extract event and time info from announcements) ✔
    • Progress track (allow users to break one big task into baby steps, and track the progress)
  • A forum for module-related discussions ✔
    • share past year materials
    • more user-friendly forum experience than LumiNUS forums


Please look at our Project board for both finished features/bug fixes/enhancements and future plans.

Related work

fluminus the project that inspired this project, a library in Elixir to access the reverse-engineered LumiNUS API.

luminus_api a Dart library providing abstraction for LumiNUS's OpenID Connect authentication flow and API responses.

fluminus_server server-side application that currently mainly powers the push notification service.


Stats (by 01/07/2019)

  • Within Fluminus app itself, 3741 lines of Dart code is written under \lib folder.
    • Note that we abstracted out almost any repetitive UI element into \lib\widgets folder and any repetitive helper functions into \lib\db and \lib\util.dart respectively, and Flutter (or SwiftUI or any declarative frameworks) are much more concise compared with imperative implementations.
  • On the fluminus_app, from June 1, 2019 – July 1, 2019, excluding merges, 2 authors have pushed 69 commits to master and 85 commits to all branches. On master, 93 files have changed and there have been 4,369 additions and 668 deletions.

Development stack

Flutter, SQLite in Flutter, Express (A web framework written in NodeJS), Firebase

Fabric, Travis CI, Codemagic (CI/CD for Flutter)


Tan Yuanhong

  • Overall architecture of the Fluminus app
    • Kickstarter of Fluminus app by writing and maintaining luminus_api
    • Main writer of the file management and push notification sections
    • Maintainer of server-side applications (push notification service & forum)
  • iOS-side platform-specific optimization and distribution

Zhang Xiaoyu

  • Overall UI&UX design of the Fluminus app
    • Main writer of the announcement & task management sections
    • Introduces Redux as the complex state management method for the app
    • Abstracted UI elements into reusable widgets under \lib\widgets
  • Android-side platform-specific optimization and distribution


Raivat Shah

You can’t perform that action at this time.