Go web application for school graduates (kyrgyz: abiturients) who want to apply for a DAAD grant at KGFAI
Besides its primary purpose, this application is used as part of a tutorial to demonstrate use of different libraries to write a complete and working web application.
23.05.2017: Applikation unterstützt jetzt HTTPS mit LetsEncrypt Zertifikaten. Der Lokale Zugriff aus einem privaten Netz kann auch über HTTP erfolgen, um TLS Fehler zu vermeiden.
go get lädt nicht die transitiven Abhängigkeiten, daher werden diese mit go get ... aufgelöst. Dabei gibt es einige harmlose Fehlerausgaben.
go get -u github.com/geobe/gostip
go get ...
Außerdem wird postgresql verwendet. Dazu muss
- pgSql installiert und
- eine neue Datenbank mit einem Benutzer für die Go Applikation angelegt werden. Das geht einfach mit pgAdmin.
- Für pgAdmin und pgSql gibt es einen gemeinsamen Installer von EDB.
- Datenbankname, Username und Passwort werden in der Konfigurationsdatei festgelegt.
- In der pgSql Konfigurationsdatei postgresql.conf timezone auf 'UTC' setzen. Mit anderen timezone Einstellungen gibt es möglicherweise Fehler.
Eine ausführliche Installationsanleitung steht im Online-Tutorial.
Die Applikation wird mit IntelliJ Community Edition entwickelt. Sinnvollerweise legt man dazu ein Go Projekt im $GOPATH Verzeichnis an. Dann kann das Projekt aus der IDE getartet werden.
Neben dem eigentlichen Zweck der Anwendung ist dies gleichzeitig eine Demo-Applikation für ein go Webapp Tutorial, in der verschiedene Bibliotheken benutzt werden, um eine vollständige Webanwendung zu entwickeln:
- jinzhu/gorm für die persistente Speicherung von Go Objekten
- gorilla web framework Komponenten für das Multiplexen von Http Requests, Sitzungsverwaltung, Login, xsrf protection und vieles mehr
- justinas/alice für handler chaining
- dchest/captcha für Captchas (completely automated public Turing test to tell computers and humans apart)
- spf13/viper für Konfigurationsfiles
- Bootstrap3 für responsives Web-Design
- jQuery für dynamische Webseiten