Coder Social home page Coder Social logo

fachschaft07 / guide7 Goto Github PK

View Code? Open in Web Editor NEW
9.0 8.0 4.0 43.45 MB

App providing comfortable access to student services of the computer science department (07) of the Munich University of Applied Sciences.

Home Page: https://fs.cs.hm.edu/

License: MIT License

Java 37.31% Objective-C 0.13% Dart 62.49% Shell 0.07%
flutter android ios app munich university department07 student

guide7's Introduction

Build Status

Looking for some screenshots? Take a look in our GitHub pages!

Guide7

App for comfortable access of the student services for department 07 (computer science) at the Munich University for Applied Sciences.

App has been reworked using Flutter. The old android app can be found under the java-app folder.

For information about the app and its architecture take a look in the projects wiki!

Getting Started

Since this is a flutter app, the basics are described here. Just follow the provided steps - including installation - to get you started!

guide7's People

Contributors

bennyboer avatar cacaocow avatar gleydar avatar hmkrivoj avatar janneskretschmer avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

guide7's Issues

Privacy policy statement

I already added a view in the navigation view of the app for the privacy policy statement which we'll definitely need.

@LokiNightray @thomai You mentioned that the university has a pattern which we must use (in case the app is distributed by us and not over me), Can we get that?

Professor Browser

It is quiet common for students to search for a professor to write them an e-mail or seek more information about them (website, etc.). Normally you would end up here.

To make it more comfortable for students to find them and write them e-mails, it would be nice if there were a browser view within the app where you can easily search for profs.

Lost and Found

I remember that the old app had something like "Lost and found" where people could look if something they lost has been found.

Mealplan (Speiseplan)

Implement the mealplan. (See the old implementation in the java android Guide7 version).

On-the-fly translations for non-locale content

Once #24 is done there will be german and english available as languages. Nevertheless all the applications content like notice board entries, weekplan entries are written in german.

Google provides the Google Translator API which can even translate HTML (for the notice board entry content which is HTML (at least in case of the HTML crawler provider)).
The idea is to provide on-the-fly translations in the correct locale once the locale differs from the original content (german).

Services visible when logged out

Some services (public notice board, appointments, etc.) can be easily be made visible for non-logged-in users. People without ZPA login might want to use the public app services as well.

Tasks to do for completion:

  • Make login skippable (Smaller non-raised button below the login button)
    • Implement static method isLoggedIn() in another utility class ZPA which is checking the CredentialStorage for stored credentials. We can then call ZPA.isLoggedIn() from anywhere in the app.
  • Hide non-viewable items in the navigation(s) when not logged in
  • Implement public notice board for non-logged in users

Periodic background tasks | Refreshing notice board entries and notifications

In the old app we had a periodic pull for notice board entries and other resource data in order to check whether it changed.

People like me do not want to check the app and manually refresh the notice board everyday but rather be notified by the app about new notice board entries.

We will need a general way to support periodic background tasks. I did some research:
Currently Flutter does not directly support periodic background tasks but there are already plans to implement it in the future (See here). There is a plugin available which will do the job for android and iOS just fine: https://pub.dartlang.org/packages/background_fetch

The job is to create an abstraction around the used background_fetch plugin in order to replace it with the official Flutter implementation once it is ready. Create an example for fetching notice board entries every half an hour. Document the usage in the Wiki for developers to use it with ease.

Summing up:

  • Implement background_fetch in an own periodic background task abstraction
  • Create notice board entry refresh every 30 minutes
  • Document usage in the Wiki
  • Notification in case the notice board received new entries

Navigation view

Currently we only have the navigation bar and the floating action button for navigation. We will need the floating action button for example for creating custom events in the weekview. Thus we need another way to navigate. Create an additional view and navigation item in the bottom navigation bar ("More...") which will contain additional menu items.

Personal Schedule

Every once in a while I'd like to look at how my schedule actually is looking like, just like I can when using the ZPA. The week plan is good but does not give a good overview over your schedule.

It should be an actual schedule where you can overlook the whole week just like in ZPA.

Weekplan

Implement the ZPA weekplan. We will first need a widget to display the events. Maybe write an own one.

Scroll to current day

When using the week plan it automatically scrolls to the monday of the current week. It would be better if we could scroll to the current day of the current week and show the next week on, e.g. Sunday or Saturday

Add own entries to schedule

As a user I want to add my own entries to the schedule, as the ZPA does not always have all my subjects listed.

Login

We need a dialog to login into the ZPA to access student services.

  • Should show when opening the app for the first time
  • Should show when logged out
  • Should save credentials securely so that users will not need to enter credentials repeatedly on each app start

Appointments

Show appointments from here in a list. Use the iCalendar feed to get the data.

Add an additional background task to check whether an appointment is near (next day) and fire a notification if there is one.

Static Notification "Next lecture"

A static notification that shows the next lecture coming up would be helpful (optionally hide the notification until the next day, if the last lecture has passed etc.)

Weekplan Android Widget

The old app had an android widget which displayed the week plan events for the current day. To ensure that people won't miss it after the release we should provide it.

Continuous delivery to play store

It would be cool to provide continuous delivery to the play store via Travis builds.
This means that releases will automatically be delivered via the Google Play Store API to the Google Play Store on push to a specific branch (like alpha for alpha releases, beta for beta releases and master for production releases).

Unit testing

Goal of this task is to fire up unit testing capabilities within the apps processes.

  • Check unit tests continuously on Travis
  • Document in the GitHub wiki how the unit tests work and what parts of the app must be unit tested and what parts are optionally unit tested
  • Add unit tests for important parts of the app (Parsers, storages, database, etc.)
  • (OPTIONALLY) Try to unit test widgets

@hmkrivoj I'll assign this one to you if that is ok. Comment if you have something to add/change.

Background Fetch for iOS

See #34

For iOS we need to provide the setup for the background_fetch plugin once we have testing devices and a Mac!

The setup guide can be found in the plugin description here.

Adding dialog after login that app is preparing first start

The first retrieval of notice board entries after lookup will take a while because lecturer images are loaded from hm.edu and thus it takes about 5 - 10 seconds.

Don't do that in the notice board view but rather show a dialog or separate screen preparing the first app start and loading lecturer images. Otherwise the user will think the notice board entry lookup is slow, which we dont want since the app should make a fast impression.

Setup App Server with REST API + Database Server + Continuous deployment via branch

BLOCKED: Need to wait for server (VM)

We need a REST API in order to use firebase cloud notifications and target specific user groups.
Thus setup the server (VM) with a Java application server + database server.
Develop application which realizes the REST API.
Lastly setup continuous deployment of the REST API application to the application server via a GitHub branch which builds the application on Travis and deploys it to the application server.

(Optionally) Use Let's Encrypt to encrypt http connection of the server to the app.

Navigation and Routing

Provide a basic implementation of a navigation with routing to and from the individual navigation routes (views).

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.