DoughFlow , n
der Fließzustand beim Backen;
ein kitschiges Cashflow-Wortspiel;
eine Cashflow-Web-App.
DoughFlow ist eine Client/Server-Webanwendung, die auf EmberJS bzw. Google Cloud Firebase basiert.
Die Back-End-Logik wird über Firebase Cloud Functions implementiert, wobei Firebase selbst als Sicherungsspeicher für Benutzerdaten verwendet wird. Dadurch wird die Geschäftslogik von den Clients entfernt in einer einfachen, serverlosen Bereitstellung gekapselt.
Das Front-End wird als statische Seite von App Engine bereitgestellt ( TODO, tun Sie dies nicht ... von GCS oder so bereitstellen ).
Gehostet auf Google App Engine unter Verwendung des Microservice-Frameworks:
Als Dienst implementiertes Frontend: default
Die EmberJS-Dateien werden als statische Dateien (HTML und Assets) bereitgestellt.
Back-End-Funktionen werden als Cloud-Funktionen implementiert (Hinweis: Firebase-Variante, nicht „reine“ Cloud; Integration scheint zu Alpha)
Der Back-End-Speicher ist reine Firebase
Der Einfachheit halber lassen Sie DOUGH_FLOW=/home/me/my_dough_flow_checkout
(z. B. zur Shell rc hinzufügen, Sie müssen in zsh export
).
GAE-Projekt mit GAE-App (wahrscheinlich muss die Abrechnung eingerichtet werden)
Google Cloud SDK
https://cloud.google.com/sdk/downloads
NodeJS (ich habe 7.10 mit NVM verwendet)
brew install nvm; nvm install v7.10
EmberJS (ich habe die neueste Version vom 26.05.2017 verwendet)
npm install -g [email protected]
Feuerbasis
npm install -g firebase-tools; npm install -g firebase-server
Firebase-Projekt, das Ihrem Google Cloud-Projekt zugeordnet ist
Firebase-Server und SDK
Gehen Sie zu src/frontend
.
ember build
(Hinweis: Ist es das? Installiert das NPM-Zeug automatisch?)
Gehe zu gae/
. Kopieren Sie das Build-Artefakt für die GAE-Bereitstellung.
ln -s ../src/frontend/dist
Weitere Informationen finden Sie in der Front-End-Readme-Datei.
Beim Erstellen/Bereitstellen in der tatsächlichen AppEngine:
ember build --environment=production
TODO
Bearbeiten Sie /etc/hosts
(oder ähnliches) zur Zuordnung:
127.0.0.1 localhost.firebaseio.test
Firebase möchte, dass DB-URLs ein bestimmtes Format haben, sodass Sie nicht einfach die lokale IP oder den lokalen Host als databaseURL
verwenden können.
Aus dem Projektstamm,
bin/start-doughflow-firebase# oder für ausführliches Debuggen: DEBUG=* bin/start-doughflow-firebase
(Beachten Sie, dass in Ihrer Umgebung DOUGH_FLOW
erforderlich ist, damit dieses Skript funktioniert.)
(Hinweis: Sie können der Einfachheit halber
$DOUGH_FLOW/bin
zum Pfad Ihrer Shell hinzufügen.)
Dadurch wird ein lokaler Firebase-ähnlicher Server gestartet, der mit Daten aus test/firebase.json
geladen wird, verfügbar auf localhost.firebaseio.test
Port 5555
. Die Ember-App ist so eingerichtet, dass sie diesen Hostnamen verwendet, wenn environment=development
.
Starten Sie den lokalen Firebase-Server (siehe oben). Dann, von src/frontend
,
Ember-Server
Dadurch wird ein Live-Neulade-Webserver gestartet, der Port 4200 überwacht. Gehen Sie zu http://localhost:4200, um die App anzuzeigen.
Ich bin mir nicht sicher, ob wir das tatsächlich brauchen. Wir benötigen Cloud-Funktionen für empfindliche/sensible Serverlogik, die Clients nicht kontrollieren sollten. Im Moment haben wir so etwas nicht. Aber es war mühsam, das herauszufinden. Deshalb hier einige Notizen für die Nachwelt.
Richten Sie einige Funktionen in src/firebase/functions
ein und verwenden Sie Beispiele wie helloWorld. Diese sollten src/firebase/functions/index.js
lauten.
Richten Sie die Authentifizierung in der Datei src/firebase/functions/config.json
ein. Für die lokale Version benötigen Sie wahrscheinlich keine tatsächlichen Anmeldeinformationen.
Führen Sie den lokalen Funktionsemulator aus:
Aus dem Verzeichnis src/firebase/functions
:
export CLOUD_RUNTIME_CONFIG=`pwd`/config.json && Firebase dient nur Funktionen
TODO