<aside> 💡 como funcionará a comunicação entre os serviços
</aside>
flowchart LR
app/front --> app/back
app/back --> postgres[("PostgreSQL")]
work-yaml -.->|long polling| postgres[("PostgreSQL")]
work-yaml --> s3[Object Store/S3]
service -.-> s3
%% links
click service "<https://github.com/cljazz/moclojer-service>" _blank
click app/front "<https://github.com/cljazz/moclojer-app/tree/main/src/front>" _blank
click app/back "<https://github.com/cljazz/moclojer-app/tree/main/src/back>" _blank
click work-yaml "<https://github.com/cljazz/moclojer-work-yaml>" _blank
Dashboard (nossa interface de usuário), terá os recursos:
login (via Supabase Auth)
construção de mock (para conta pessoal)
yaml: widget de formatação de códigoorganização (você pode criar organizações e adicionar outros usuários para criar/editar/excluir simulações)
<aside> 🤑 recurso liberado para usuários com plano pago ativo
</aside>
Pagamento (Stripe)
As configurações (yaml's) serão salvas em um bucket S3 com a seguinte estrutura de diretórios:
orgs/<ORG-NAME>/<MOCK-NAME>.yml
users/<USER-NAME>/<MOCK-NAME>.yml
Consumer que gerará o arquivo moclojer.yml, o trabalho desse serviço será consolidar todos os .yml (organizações e usuários) em único arquivo. Consumirá o PostgreSQL via long polling (acredito que seja a pior maneira, mas a mais rápida de começar) todos os mocks ativos e escrever o arquivo yaml no S3.
host: (do moclojer yaml), temos que substituí-lo para o subdomínio configurado no banco de dadosmolcojer service que lê o arquivo moclojer.yml baixado assim que o serviço é iniciado, uma thread em segundo plano é mantido em execução baixando o arquivo a cada X tempo (hoje é 1 minuto).
No futuro, teremos uma fila para notificar o moclojer-service para fazer o download do arquivo, que será enviado pelo work-yaml assim que ele terminar de gerar o arquivo
moclojer.ymlno S3