Giter Site home page Giter Site logo

orbital-rs-25's Introduction

Fluminus Mobile App

Proposed Level of achievement: Gemini

Mobile client for the Luminus app made for Orbital.

Made in React Native, with a flask backend server hosted on Heroku.

Work in progress.

Motivation

Luminus is one of the essential platforms for all National University of Singapore (NUS) personnel. It allows students to access their classes and their relevant information, such as announcement, lecture files, and reminders of events. Our team identified two drawbacks that we believe there exists room for improvement - 1. lack of clarity on upcoming important events, such as due dates, and 2. the lag users experience when a large number of students sign on at once.

To tackle the identified problems, we defined clear expectations for our proposed solution; the product must be intuitive, and fast. Intuitive so that users can easily view the information they require(such as test dates), and fast to reduce user frustration. Mobile phones will be our platform of choice as we believe crucial information such as test timings should always be within an arm's reach at any point in time.

Although there is a pre-existing APP for Luminus, its' UI is cluttered, and navigation is tedious. The APP also lacks basic features such as a file management system, making it even harder to use the APP. Thus there is merit in our solution to improve the convenience of NUS students.

Sketch of how the app works

flow

Demos

Logging in Timetable

Announcements Timetable

Tech stack

Front-end

Back-end

Database

Hosting

  • Heroku

This project relies on Pyfluminus for communications with FlumiNUS, and NUSMods API for timetable information.

Features

S/N Feature Function Achieved
1 Login Able to login to user account
2 Schedule Able to look at schedule to see upcomming events/ tests/ etc.
3 Module info Able to select modules and get relevant information (files, announcements).
4 Persistent login Able to set login once and forget feature

Legend: ✅ - Done ❌ - Under review / Not done

Click here for the API reference.

Problems encountered

  • Lack of proper data for testing
    • As it is summer break now, we don't have any active modules on LumiNUS (Special Term II mods are properly mounted as active mods)
    • The current data that we use for testing are retrieved from CS2100 (which was closed only at a later date), and OTH633 (non-academic, RC4 student life matters, never closed)
    • We saved the data we could retrieve in our database, and though we did prepare functions for getting such information from LumiNUS, we rely heavily on alternative functions that get pre-collected data from our own database instead (though the proper functions were also tested and were used for the initial collection of data, and they have the same function signatures as the alternative ones, so they can be swapped easily)
  • Problems with Jest with attempting to write tests
    • When trying to use Expo web framework and Cypress for end to end testing, one of the components used would not transpile, so we had to settle with manually testing it

Software Engineering

Type Description
Source control We practised source control for our code through git, with major changes or additions made on new branches that are subsequently merged to master branch only if they work and we both agree on the changes or additions
Abstraction With the cilent-server model, data from LumiNUS and NUSMods are processed on the server into nice chunks of JSON that follow a standard format, allowing the cilent to access the needed data easily.
Separation of concerns Screens do not depend on each other and are focused on doing a single task, so modifiying one page would not affect the functions of other pages.
UI Designed to make it simple to navigate through, with all the information easily accessible. Announcements and files are designed to resemble how they are presented on web LumiNUS to make it feel more intuitive to use.

Tests

Manual testing has been done with our actual LumiNUS accounts to ensure authentication and backend functions are working, and both real and demo accounts were used to test and ensure that the mobile client is functional.

Jest and React Native Testing library were used to conduct some unit testing, primarily on the login page.

Postman was used to test the API to ensure the expected.

orbital-rs-25's People

Contributors

li-s avatar w-yuchen avatar

Watchers

James Cloos avatar

Forkers

w-yuchen

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.