Skip to content

BASIS-mobile/app-backend

Repository files navigation

BASIS Vorlesungsverzeichnis App

App Backend

The unofficial app of the BASIS lecture directory of the University of Bonn.

version rating

Jetzt bei Google Play Jetzt bei Apple Store

Motivation

Hey! We, a team of students from the University of Bonn, know the struggle with the unwieldy and old-fashioned BASIS website. That's why we created the BASIS app - a simple, stylish and user-friendly solution to quickly navigate through the course catalog.

Quick overview

  • All the information you need, compact and no frills.

Always up to date

  • Choose your semester and keep an eye on all courses and events. No mess, no stress.

By students, for students

  • We built it ourselves because we know exactly what's annoying. Expect intuitive operation, clearly structured information and a design that doesn't come from the Stone Age.

About this repository

Our app is built with Flutter, a cross-platform framework for building mobile apps. This repository contains the source code of the app's backend, which is written in Dart. Until now, only the backend is open source, but we are planning to open source the frontend as well.

Project structure

A typical Flutter project roughly looks like this:

app_name/            (root project folder)
├── ios/             (iOS app configuration)
├── android/         (Android app configuration)
├── assets/          (Static files like images)
├── lib/             (Dart code)
└── pubspec.yaml     (Dependency and framework configuration file)

Now let's take a closer look at our lib/ folder:

lib/
└── main.dart               (Entry point of the app)
└── core/                   (Core logic of the app)
    ├── data/               (Data and storage models)
    │   ├── errors.dart     (Error models)
    │   └── storage.dart    (Storage models)
    ├── backend.dart        (Backend API)
    ├── basis_backend.dart  (BASIS HTML parser logic)
    └── basis.dart          (BASIS server communication logic)

Core logic

  • backend.dart:

    Because the BASIS website has no open API, we have to parse the HTML response from the BASIS server. In order to extract the data from the HTML response, the App needs to know the HTML selectors of the elements in the pages of the BASIS website of our interest. That's why we decided to host a API server that serves the latest HTML selector data (in JSON format).

    The Backend class is responsible of the communication between the App client and our API server.

Oh! This README seems to be incomplete! We are still working on this, thanks for your patience :)