Este repositório oferece uma estrutura básica para o desenvolvimento de APIs utilizando o AdonisJS 6 e TypeScript. Ele visa facilitar a criação de novas APIs RESTful, aplicando boas práticas de organização de código, arquitetura limpa e padrões de codificação.
- Node.js (mínimo v21) e npm
- AdonisJS 6 com TypeScript
- PostgreSQL como banco de dados
- Docker para fácil configuração e gerenciamento de containers
-
Clone o repositório para sua máquina
git clone https://github.com/IanBraga96/adonis_6_basic_structure.git cd adonis_6_basic_structure
-
Crie um arquivo
.env
- Use o arquivo
.env.example
como referência, localizado na raiz do projeto.
- Use o arquivo
-
Instale as dependências
npm install
-
Suba o container do banco de dados com Docker (necessário ter o Docker instalado)
docker compose up -d
-
Inicialize a aplicação
npm run dev
-
Testes
- Você pode testar as rotas da API utilizando o arquivo de configuração do Insomnia, que está na raiz do projeto.
- Controllers: Controlam as entradas e saídas da API, acionando os serviços responsáveis e retornando as respostas.
- Validators: Fazem a validação dos dados de entrada para garantir que os dados recebidos estão no formato correto.
- DTOs: Transportam os dados validados entre camadas como Controllers e UseCases.
- Middlewares: Interceptam e manipulam requisições antes de chegarem aos Controllers, realizando tarefas como autenticação e autorização.
- Models: Representam as entidades do banco de dados e implementam regras de negócio simples, como criptografia de senhas.
- Repositories: Realizam as operações de banco de dados por meio das Models.
- Services: Serviços externos e integrações, como envio de e-mails ou chamadas de APIs externas.
- UseCases: Contêm a lógica de negócios da aplicação, definindo como as regras de negócio devem ser aplicadas.
- Utils: Funções utilitárias e constantes globais que não se encaixam em outras camadas.
- Apenas Repositories e Middlewares devem acessar diretamente as Models.
- UseCases e Repositories são considerados serviços e podem ser chamados pelos Controllers.
- Validators e DTOs devem transportar somente os dados necessários para a requisição.
- Middlewares não devem ser acumulados sem necessidade na mesma rota.
Para manter a consistência e a legibilidade do código, siga estas convenções:
- Arquivos: Use
snake_case
para nomeação. - Classes: Nomeadas com
CamelCase
, começando com letra maiúscula. - Métodos e Funções: Nomeadas com
camelCase
, começando com letra minúscula e iniciando com um verbo (e.g.,validateUser
). - Variáveis e Atributos: Nomeados em
camelCase
com a primeira letra minúscula. - Tabelas SQL:
snake_case
, minúsculas e no plural. - Colunas SQL:
snake_case
, minúsculas e no singular. - Listas/Arrays: Nomeadas no plural.
- Siga as regras e convenções, mas permita flexibilidades sempre que necessário para manter a clareza e a organização do código.
- Evite valores "soltos" no código, prefira o uso de constantes.
- Faça um fork do projeto.
- Crie uma branch com a nova feature (
git checkout -b feature/nova-feature
). - Faça commit das mudanças (
git commit -m 'Adiciona nova feature'
). - Envie para o seu fork (
git push origin feature/nova-feature
). - Abra um Pull Request.
Este projeto está licenciado sob a licença MIT - veja o arquivo LICENSE para mais detalhes.