API backend para gerenciamento de estabelecimentos de usuários, construída com TypeScript e Express. Este projeto fornece uma API robusta para manipulação de dados de estabelecimentos com integração AWS DynamoDB para persistência de dados.
Instruções para configurar o projeto localmente.
⚠️ O projeto foi construído com Node.js versão v22.14.0. Versões anteriores/posteriores podem não ser compatíveis. Se você tiver o NVM instalado, você pode instalar a versão correspondente com estes comandos:
# instala o nvm (Node Version Manager)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
# baixa e instala o Node.js (você pode precisar reiniciar o terminal)
nvm install 22.14.0
# verifica se a versão correta do Node.js está no ambiente
node -v # deve imprimir `v22.14.0`
# verifica se a versão correta do npm está no ambiente
npm -v
- Clone o repositório:
git clone https://github.com/gustavo-martins-pereira/User_Establishment.git
- Navegue até o diretório do projeto:
cd User_Establishment
- Instale as dependências:
npm install
- Configure o arquivo
.env
:
Você precisará configurar suas credenciais AWS e configuração do DynamoDB no arquivo
.env
. Certifique-se de ter uma conta AWS e as permissões necessárias para acessar o DynamoDB.
- Configure o banco de dados:
npm run setup-db
- Inicie o servidor de desenvolvimento:
npm run dev
/src
├── /aws
│ └── /dynamodb
├── /configs
├── /controllers
│ └── establishmentController.ts
├── /middlewares
├── /models
├── /repositories
├── /routes
│ ├── /validators
│ └── routes.ts
├── /services
│ └── /establishment
├── /utils
│ ├── /configs
│ ├── /handles
│ └── /errors
└── server.ts
.env
.env.example
.gitignore
LICENSE
package.json
readme.md
O projeto segue um padrão de arquitetura limpa com clara separação de responsabilidades:
aws
: Api para os serviços da AWSconfigs
: Configurações da aplicaçãocontrollers
: Manipulam requisições e respostas HTTPmiddlewares
: Middlewares para as rotas da aplicaçãomodels
: Modelo das entidadesrespositories
: Arquivos de comunicação com os bancos de dados ou serviços da aplicação (como a aws)services
: Contêm a lógica de negóciosroutes
: Definem os endpoints da API e manipuladores de rotasutils
: Contém funções utilitárias
POST /users
- Criar um novo usuárioGET /users/:id
- Obter usuário por IDGET /users
- Obter todos os usuáriosPUT /users/:id
- Atualizar usuário por IDDELETE /users/:id
- Deletar usuário por ID
POST /establishments
- Criar um novo estabelecimentoGET /establishments/:id
- Obter estabelecimento por IDGET /establishments/type/:type
- Obter estabelecimentos por tipoGET /establishments
- Obter todos os estabelecimentosPUT /establishments/:id
- Atualizar estabelecimento por IDDELETE /establishments/:id
- Deletar estabelecimento por ID
POST /products
- Criar um novo produtoGET /products/:id
- Obter produto por IDGET /products
- Obter todos os produtosPUT /products/:id
- Atualizar produto por IDDELETE /products/:id
- Deletar produto por ID
POST /establishment-rules
- Criar uma nova regra de estabelecimentoGET /establishment-rules/establishment/:establishmentId
- Obter regras por ID do estabelecimentoPUT /establishment-rules/:id
- Atualizar regra de estabelecimento por IDDELETE /establishment-rules/:id
- Deletar regra de estabelecimento por ID