DoughFlow , n
o estado do fluxo durante o cozimento;
um trocadilho cafona sobre fluxo de caixa;
um aplicativo da web de fluxo de caixa.
DoughFlow é um aplicativo da web cliente/servidor, construído em EmberJS/Google Cloud Firebase respectivamente.
A lógica de back-end é implementada por meio do Firebase Cloud Functions, usando o próprio Firebase como armazenamento de apoio para os dados do usuário. Isso encapsula a lógica de negócios dos clientes em uma implantação leve e sem servidor.
O front-end é servido como uma página estática do App Engine ( TODO don't do this.... serve from GCS ou algo assim ).
Hospedado no Google App Engine, usando sua estrutura de microsserviços:
Front-end implementado como serviço: default
Os arquivos EmberJS são servidos como arquivos estáticos (html e ativos).
As funções de back-end são implementadas como Cloud Functions (NB: sabor Firebase, não Cloud "pura"; a integração parece muito alfa)
O armazenamento de back-end é direto do Firebase
Por conveniência, deixe DOUGH_FLOW=/home/me/my_dough_flow_checkout
(por exemplo, adicione ao shell rc, você precisa export
em zsh)
Projeto GAE com aplicativo GAE (provavelmente precisa de configuração de faturamento)
SDK do Google Cloud
https://cloud.google.com/sdk/downloads
NodeJS (usei 7.10 com nvm)
brew install nvm; nvm install v7.10
EmberJS (usei o mais recente em 26/05/2017)
npm install -g [email protected]
Base de fogo
npm install -g firebase-tools; npm install -g firebase-server
Projeto do Firebase associado ao seu projeto do Google Cloud
Servidor Firebase e SDK
Vá para src/frontend
.
ember build
(nota: é isso? Isso instala automaticamente coisas do NPM?)
Vá para gae/
. Copie o artefato de build para implantação do GAE.
ln -s ../src/frontend/dist
Consulte o leia-me do front-end para obter mais informações.
Ao criar/implantar no AppEngine real:
ember build --environment=production
PENDÊNCIA
Edite /etc/hosts
(ou similar) para mapear:
127.0.0.1 localhost.firebaseio.test
O Firebase gosta que os URLs do banco de dados estejam em um formato específico, então você não pode simplesmente usar o ip local ou o host local como o databaseURL
.
Da raiz do projeto,
bin/start-doughflow-firebase# ou para depuração detalhada: DEBUG=* bin/start-doughflow-firebase
(Observe que você precisa ter DOUGH_FLOW
em seu ambiente para que este script funcione.)
(NB: você pode adicionar
$DOUGH_FLOW/bin
ao caminho do seu shell por conveniência)
Isso iniciará um servidor local semelhante ao Firebase carregado com dados de test/firebase.json
, disponível em localhost.firebaseio.test
porta 5555
. O aplicativo Ember está configurado para usar esse nome de host quando environment=development
.
Inicie o servidor Firebase local (veja acima). Então, de src/frontend
,
servidor brasa
Isso iniciará um servidor web de recarga ao vivo escutando na porta 4200. Vá para http://localhost:4200 para ver o aplicativo.
Não tenho certeza se realmente precisamos disso. Precisaremos de funções de nuvem para lógica de servidor delicada/sensível que os clientes não devem controlar. Por enquanto não temos nada parecido. Mas foi difícil descobrir. Então aqui estão algumas notas para a posteridade.
Configure algumas funções em src/firebase/functions
, use amostras, como helloWorld, deve ser src/firebase/functions/index.js
.
Configure a autenticação no arquivo src/firebase/functions/config.json
, para local você provavelmente não precisa de credenciais reais.
Execute o emulador de função local:
No diretório src/firebase/functions
:
exportar CLOUD_RUNTIME_CONFIG=`pwd`/config.json && firebase serve --only funções
PENDÊNCIA