Um repositório template, não um produto. Tudo o que esta página diz descreve o que vem dentro dele.

A parte de um SaaS que é sempre igual, já construída

Início de sessão sem palavras-passe, espaços de trabalho que não se leem uns aos outros, dois idiomas em cada endereço, e um lançamento que migra antes de publicar. Clone-o, mantenha este repositório como upstream, e traga as correções quando lhe convier.

Iniciar sessão funciona antes de ter um fornecedor de email.

Com o que começa um clone

Seis coisas de que qualquer produto precisa antes de ter uma funcionalidade sua, decididas uma vez e escritas onde a decisão foi tomada.

  • Iniciar sessão sem palavras-passe

    Uma ligação de uso único, enviada por email e válida durante quinze minutos. O Google aparece ao lado dela apenas onde a instalação registou um cliente para ele.

  • Espaços de trabalho que não se leem uns aos outros

    Cada página recebe um acesso à base de dados preso a um espaço de trabalho, e o acesso livre está fora do seu alcance — garantido por uma regra de lint e não por um hábito.

  • Dois idiomas, no endereço

    Inglês e português europeu, negociados quando alguém chega e presentes em cada URL que essa pessoa possa partilhar.

  • Email antes de ter um fornecedor

    O transporte de saída regista cada mensagem que a aplicação teria enviado, e espelha-a num ficheiro para quem a leia de fora do processo, por isso iniciar sessão funciona localmente, e no pipeline, sem conta de fornecedor em lado nenhum.

  • Um lançamento que migra primeiro

    O pipeline aplica as migrações em produção e só depois pede a nova versão. Uma migração falhada não lança nada.

  • Limites que sobrevivem a um reinício

    Duas dotações contadas em PostgreSQL, uma por caixa de entrada e outra por máquina, por isso valem quantas instâncias estiverem a correr.

Números que este repositório pode defender

Cada um é um facto sobre o que está aqui dentro, e um teste lê o repositório e falha quando os dois discordam.

2
idiomas, em todas as páginasInglês e português europeu. Um terceiro é uma linha de configuração, não um segundo sitemap para manter a par.
0
palavras-passe guardadasNão existe campo de palavra-passe em lado nenhum, e o início de sessão com palavra-passe está desligado explicitamente em vez de ficar por configurar.
10
decisões registadasCada escolha de arquitetura tem um registo que diz aquilo de que abdicou, e não apenas aquilo que escolheu.
3
minutos de orçamento para um veredictoLint, tipos, testes unitários e testes de integração correm em cada pull request. Três minutos é o orçamento a que foram escritos; o que o workflow impõe é um limite acima dele, para que uma execução que deixe de ser rápida falhe em vez de se arrastar.

Três decisões que herda

As que são caras de tomar tarde. Cada uma é tomada aqui, e registada ao lado do código que a toma.

Um espaço de trabalho é um endereço

Qual o espaço de trabalho ativo está escrito no URL e em mais lado nenhum, por isso não há estado de sessão para ficar fora de passo com a página. Dois separadores mantêm dois espaços de trabalho abertos ao mesmo tempo, e uma ligação para um deles abre aquilo que nomeia.

Uma lista de idiomas, e tudo o resto atrás dela

Acrescente um idioma à configuração do site e as rotas, o sitemap, as versões alternativas e a imagem de pré-visualização social seguem-no. Não é preciso avisar mais nada, e é isso que impede o resto de discordar.

O pipeline manda na ordem de um lançamento

Testes no navegador, depois migrações em produção, depois a nova versão — e a publicação automática da plataforma está desligada, para que nada saia por outra ordem.

Comece onde estão os problemas interessantes

Clone-o, mantenha este repositório como upstream, e traga as correções de forma deliberada. Não há nada para instalar nem nada para subscrever.