Photomaster

zum Projekt

Das Projekt

Photomaster ist das Abschlussprojekt für mein Masterstudium und wurde in einem kleinen, aber feinen Team von zwei Personen umgesetzt. Die Plattform soll Hobby-Fotografen dabei helfen, interessante und weniger bekannte Orte für Schnappschüsse zu finden. Dazu bietet die Plattform zahlreiche Features, wie beispielsweise eine Karte mit geclusterten Fotos, eine intelligente Suchfunktion, Bildempfehlungen und vieles mehr. Die hochgeladenen Fotos werden automatisch mit Metadaten (Exif, aktuelles Wetter, Tags, ...) angereichert, um sie besser indexieren zu können.

Das Projekt enthält alles an Know-how, welches wir während des Studiums gesammelt haben. Im Frontend arbeitet ein React Single-Page-App, welche mit einem Django Backend über eine REST-Schnittstelle kommuniziert. Fotodaten werden in einer Postgres-Datenbank gehalten und mithilfe der PostGIS Erweiterungen geclustert. Um Bildempfehlungen auf Basis der Bildähnlichkeit generieren zu können, verwenden wir einen zusätzlichen Tensorflow Service. Der gesamte Build- und Deployment-Prozess ist mit dem CI Tool Concourse vollständig automatisiert. Mit jedem Push auf den main-Branch wird ein Build ausgelöst, welcher die Software testet, qualitativ analysiert, baut und im Produktivsystem veröffentlicht. Alle Teile der Anwendung sind in Docker-Container gepackt, was uns einerseits bei der Entwicklung auf unterschiedlichen Betriebssystemen im Team und das Deployment erleichtert hat.

Verwendete Technologien:

  • React, Jest, Puppeteer
  • Python 3, Django & Rest-Framework, PyUnit, Postgres, Elasticsearch & Kibana
  • verschiedene externe Schnittstellen, wie Google Vision API, Openweathermap, ...
  • Go, OpenCV, Tensorflow, gRPC
  • Concourse, Docker, Dockerhub
  • Grafana, Prometheus & Pushgateway, Node Exporter, Sentry, Gitlab Pages