Skip to content
Anmeldung & Administration für den digitalen Ferienpass der Stadt Weimar
Java Vue JavaScript Other
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
backend
docs
frontend
.gitignore
.travis.yml
LICENSE
Procfile
README.md
app.json
docker-postgres.sh
pom.xml

README.md

Ferienpass

Build Status Coverage Status License

Historie

Dieses Projekt führt im Rahmen eines Hackatons die Ergebnisse eines Studentenprojekts weiter. Das Projekt fand innerhalb eines Projektseminars an der Bauhaus-Universität Weimar von 2017-10 bis 2018-04 statt. Das Ziel war die Digitalisierung des Anmeldeprozesses für Kinder der Stadt Weimar in Thüringen für Sommerferien-Aktivitäten im Rahmen des gemeinnützigen Ferienpass-Projektes.

Über das Projekt wurde mehrfach berichtet: Lokale Presse Thüringer Allgemeine 2018-01-17 & Thüringische Landeszeitung 2018-01-17 & BAUHAUS.JOURNAL ONLINE 2018-01-16 & Focus Online & codecentric.de & final celebration, Focus Online

Die Ergebnisse des Projektes sind in den folgenden zwei Microservices abgebildet:

https://github.com/digital-bauhaus/Ferienpass-Anmeldung

https://github.com/digital-bauhaus/Ferienpass-Admin

Das vorliegende Projekt möchte die Ergebnisse des Studenten-Projektes, dass in einer Alpha-Phase 2018 getestet wurde, nun produktionsreif machen und in 2019 den Kindern zur Verfügung stellen.

Nutzung

Die Anmeldungsseite steht direkt auf der Startseite zur Verfügung (lokal http://localhost:8088/) , die Administrationsfunktionen liegen tiefer und finden sich ab http://localhost:8088/login

Login

Der Login unter https://ferienpass.herokuapp.com/login ist nun abgesichert - die Credentials werden lokal über die application.properties konfiguriert, im PR bzw. Produktivdeployment über Umgebungsvariablen in Heroku:

# application.properties
spring.security.user.name=test
spring.security.user.password=foo

# Heroku Environment Variables
SPRING_SECURITY_USER_NAME=xyz
SPRING_SECURITY_USER_PASSWORD=xyz

Bestätigungsmails

Die Mails für die erfolgreiche Anmeldung werden nun mit Hilfe des Heroku-Addons Sendgrid verschickt. Im genutzten Free-Tier sind 12.000 freie Mails inbegriffen pro Monat.

Der Test dafür benötigt lokal eine manuell zu setzende Umgebungsvariable SENDGRID_API_KEY=korrekterKey mit dem korrekten Key (den Key am besten aus der Heroku-Configvar beziehen!) - z.B. innerhalb der Run Configurations der IDE.

Innerhalb von TravisCI wird auch die Environment Variable benötigt.

Der Inhalt der Mail wird über die Datei mailtext.txt beschrieben.

Contribute

Aufbau

Die bisherige Microservice-Struktur wird zugunsten einer vereinfachten Weiterentwicklung und Wartung aufgegeben und in einen Mini-Monolithen bzw. Microlithen überführt.

+-------------------+   +--------------------+
|                   |   |                    |
|                   |   |                    |
|                   |   |                    |
|     Anmeldung     |   |     Verwaltung     |
|     (Vue.js)      |   |      (Vue.js)      |
|                   |   |                    |
|                   |   |                    |
+-------------------+   +--------------------+
          |                       |
+---------v-----------------------v----------+
|                                            |
|                                            |
|                                            |
|      Spring Boot Backend (REST API)        |
|                                            |
|                                            |
|                                            |
+--------------------------------------------+
                      |
                      v
        +---------------------------+
        |                           |
        |    Postgres-DB            |
        |    (lokal H2 in-memory)   |
        |                           |
        +---------------------------+

Prerequisites

  • Maven
  • Java
  • NPM (optional)

MacOS

> brew cask install java
> brew install maven
> brew install npm

Windows

> choco install jdk
> choco install maven
> choco install npm

Linux

> apt-get install jdk
> apt-get install maven
> apt-get install npm

Local Setup

build project

> mvn clean install

run project

> mvn --projects backend spring-boot:run

check following links

http://localhost:8088/#/

http://localhost:8088/#/Veranstaltungen/

http://localhost:8088/swagger-ui.html

Continuous Integration and Deployment

Tests werden automatisch bei jedem Push auf den Feature-Branches oder den master durch TravisCI ausgeführt und es finded ein automatischer Deploy auf Heroku statt, wenn der TravisCI build erfolgreich durchgelaufen ist.

Entwickelt werden soll mit Hilfe von Feature-Branches und Pull-Requests - der master-Branch ist als "Produktions-ready" immer baufähig zu halten.

Dev-Workflow
  • Clone: lokal das Repository clonen per git clone https://github.com/digital-bauhaus/Ferienpass.git
  • No Merge Commits: lokal das Erstellen von Merge-Commits unterbinden mit der Einstellung: git config --global pull.rebase preserve
  • Focus on Issues: auf GitHub ein Issue auswählen oder neu erstellen
  • Create Branch: dann einen neuen Branch erstellen nach dem Muster feature/#issueNummer-issue-titel, z.B. feature/#2-kostenplichtige-anmeldung
  • lokal pullen und entwickeln
  • Do Tests run? Vor dem Commit sicherstellen, dass alle Tests laufen und die Anwendung baut
  • Commit message! Beim Commit darauf achten, dass der Kommentar die GitHub-Issue-Nummer enthält, z.B. #4 Neuer Button erstellt
  • Pushen
Feature ready? --> Pull Request!
  • When your Feature is ready Pull Request auf GitHub erstellen

create-pull-request

  • Review App: Heroku erstellt nun automatisch eine Review-App für diesen PullRequest/Branch (Access für die Pipeline bitte bei jonashackt anfragen):

heroku-pipeline

  • Heroku erstellt eine eigene URL für die Anwendung, unter der sie getestet werden kann. Die URL kann über Open App in browser über den kleinen Button neben der App geöffnet werden:

heroku-review-app-link

  • Auf GitHub werden alle Commits, die Builds sowie die Heroku-Deployments vollständig im Pull Request dargestellt:

github-pr

Wenn alles passt, kann das Featuer in den master-Branch gemergt werden per Merge pull request. Danach landed der Stand automatisch auf Staging bzw. Produktion!

  • Delete Feature-Branch: Direkt auf GitHub im Pull Request sollte man den Feature Branch gleich noch löschen! Dann wird auch auf Heroku die Review App wieder weggeräumt (und verursacht keine Kosten!).

  • local master FTW: Lokal nun wieder auf den master-Branch wechseln und das Projekt neu pullen, der alte Feature-Branch sollte nun auch lokal gelöscht sein.

Staging / Production

Die pre-produktive / produktive Anwendung kann unter der folgenden URL aufgerufen werden:

https://ferienpass.herokuapp.com/#/

You can’t perform that action at this time.