Ler PDF sobre a ideia.
Uma variável ambiente chamada POSTGRES_URL com a connection string do banco de dados Postgres para rodar a aplicação.
Localmente, para rodar a aplicação, instalar o PostgreSQL e se a senha do banco local for 1234 nenhuma configuração adicional é necessária.
Foi usado TypeScript no código e PostgreSQL como banco de dados. Kysely foi usado como ORM.
Criada uma sub aplicação para fazer as migrations do banco de dados. É possível rodar ela usando npm run db:migrate, esse comando roda as migrations e também gera as classes de acordo com a base de dados gerada.
Foi usado o design de repository para comunicação com o banco de dados.
Eventos representam ações do usuário dentro do sistema.
- Registrar evento pra um usuário
- Ler evento
- Listar eventos de usuário
As conquista são as metas a serem atingidas.
- Criar conquista
- Conquistas podem ser incrementais ou não
- Conquistas podem ser secretas ou não
- Ler conquista
- Editar conquista
- Apagar conquista
- Listar conquistas
- Desbloquear conquista
- Incrementar conquista
- Pegar progresso de conquista de usuário
- Listar progresso de conquistas do usuário
Foi criado somente alguns endpoints bem limitados para testar os controladores.
-
POST /api/achievementcria uma nova conquista -
GET /api/achievementlista todas as conquistas criadas -
GET /api/achievement/:idle a conquista referente ao id passado -
GET /api/achievement/:idle a conquista referente ao id passado -
GET /api/melista as conquistas do usuário e seus progressos -
POST /api/readingregistra o progresso incremental de 1 na conquista de ID 1
Foi criada uma única página de front que lista as conquistas disponíveis e as últimas conquistas do usuário.