Project Overview

A quick overview about the project.

Agile Software Development

The development process is loosely based on the scrum process. It should be considered as a raw guideline. You can find more information here: Scrum

We have Sprint Meetings. The work to be performed in the Sprint is planned at the sprint meeting. Also, this meeting is there to showcase your work in the last sprint. Usually, there is a meeting every 1 to 2 weeks. Important to notice, every meeting is to be recorded in a protocol. You can find templates in the common repository.

Teams are independent. It is recommended that all teams should set up internal meetings for discussions regularly.

System Scope

The app is not only for students, it is for any people working, living or visiting the university ulm. It should be considered as a campus companion app. Makes your campus life smarter and easier by supporting you with campus relevant informations, like public transit schedules, canteen meal plans, indoor navigation, FAQ’s and much more.

The system won’t have log-in mechanics nor information about grade-related or exam-related topics.

Project Structure

The UniApp project aims at providing support for everybody in touch with Ulm University. To make this support easily available, it was decided to implement a mobile app offering fast support and information about important aspects on the campus.

At the start of the project, cross-platform development tools were already a thing. However, it was decided to implement natively for both Android and iOS for teaching reasons. Additional to the two apps the project needed a central point of information so both apps would operate with the same data. For this, it was decided to provide a Backend with a RESTful API from which both apps would get their data. To ensure that the provided data on both platforms is actually the same, the Android and the iOS application get their data from the same REST API.

Component Model of the Uniapp System.

The backend acts as the single point of truth and provides all needed data for both apps. This also includes data retrieved from external sources, such as the DING service.

The apps use local caches to provide offline usability.

Further details for each platform can be found in the corresponding development documentation (Android, iOS, Backend).

Repository Descriptions

Todo

check if links refers to right resources and possibly give more information

Name and description of all Git repositories

Repository

Description

Common

A private repository which contains this documentation, meeting minutes, and other media which is important for the developers or the participating students.

Android

Source code of the Android client of the UniApp. Check out following documentations to contribute:

iOS

Source code of the iOS client of the UniApp. Check out following documentations to contribute:

Laravel Backend

Source code for the main backend of the UniApp. The features FAQ, News & Events, Canteens, Bulletin Board, Public Transit and Feedback are located here. Check out following documentations to contribute:

Map API

Source code for the Map API. This API handles all request regarding map provisioning or navigation.

Operations

The configurations and auto-deployment of operation software is versioned in this repository. Check out System Administration for more information.

Issue Web Frontend

Once this was a frontend for ticket management. The frontend is not supported by the backend at the moment.

osmtoimdf

Is the source code for a converter tool. Map data from OpenStreetMaps is downloaded in .osm format. To handle the map data in iOS, we convert that map data into Apple’s IMDF format using this converter. This is a forked repository. The original repository is located on Github.

Sentry Onpremise

Is a preconfigured fork of Sentry Onpremise <> to simplify and automize deployment.

VTM

Is a fork of VTM. VTM is a Java library for vector-tile rendering in context of maps. This fork provides a fixed version of the VTM library for the build process of the Android client.