iyumw /
projeto-final-bloco01
A cosmetic's store management back-end system with CRUD functionalities, built using TypeScript
27/100 healthLoading repository data…
marlonbranco / repository
Projeto Back-end CRUD em TypeScript
A transparent discovery signal based on current public GitHub metadata.
This score does not audit code, security, maintainers, documentation quality, or suitability. Verify the repository and its current documentation before adoption.
Simples CRUD de Users e Addresses aplicando as técnologias Node.JS, TypeScript, TypeORM, TSyringe, Jest, Express, JWT e BCrypt.
Além disso na construção do projeto foram aplicados os conceitos de SOLID, DDD e TDD.
Execute o seguinte comando no terminal para instalar todas as dependências:
yarn
Execute o seguinte comando no terminal para criar uma imagem com o banco de dados PostgreSQL:
docker-compose -f docker-compose.yml up -d
Após a execução a imagem desafio-backend-typescript será gerada no seu Docker
Para criar as tabelas no banco de dados, execute o seguinte comando:
yarn typeorm migration:run
├── .github
├── src # Arquivos de Recursos da aplicação
│ ├── @types # Configurações de tipos para o TypeScript
│ ├── config # Arquivos de configurações específicas da aplicação
│ ├── modules # Módulos da aplicação
│ └── shared # Pasta com os recursos compartilhados entre os domínios
└── ...
├── ...
├── modules # Módulos da aplicação
│ ├── addresses # Módulo de Endereços/entidade addresses
│ ├── users # Módulo de Usuários/entidade users
└── ...
├── ...
├── users # Módulo de Usuários/entidade users
│ ├── dtos # Pasta onde ficam os Data Transfer Objects
│ ├── infra # Infra específico do módulo
│ ├── providers # Provider específico do módulo (Ex: HashProvider)
│ ├── repositories # Repositórios do usuário incluindo o Fake para o TDD
│ └── services # Services com as regras de negócio do domínio e testes unitários
└── ...
├── ...
├── infra # Infra específico do módulo
│ ├── http # Recursos HTTP do domínio
│ │ ├── controllers # Controllers das requisições das rotas
│ │ ├── middlewares # Middlewares de controlers (Ex: EnsureAuthenticated)
│ │ └── routes # Rotas de users
│ └─── typeorm # Recursos isolados do TypeORM
│ ├── entities # Models/entidades do domínio específicas do TypeORM
│ └── repositories # Repositórios isolados com os métodos do TypeORM
└── ...
├── ...
├── shared # Shared recursos compartilhados entre os domínios
│ ├── container # Container com as injeções de dependências dos repositórios
│ ├── errors # Configuração de mensagens de erros retornadas
│ └── infra # Recursos isolados do TypeORM
│ ├── http # Configurações HTTP da aplicação routes/server
│ └── typeorm # Recursos compartilhados do TypeORM
│ └── migrations # Migrations para a criação das tableas no BD
└── ...
Renomeie o arquivo .env.exemple para .env.
Agora cole o hash gerado na configuração de APP_SECRET no arquivo .env:
APP_SECRET=#MD5 hash
Para os testes unitários execute o seguinte comando:
yarn test
Para executar o servidor rode o seguinte comando:
yarn dev:server
Se estiver tudo ok aparecerá a seguinte mensagem no terminal: Back-end started on port 3333! 🚀
Acesse a este que com a documentação das rotas e é possível testálas pelo próprio Postman:
Habilite o Enviroment dev no canto superior direito, onde está escrito No Enviroment.
Nele já estão configuradas as variáveis de ambiente como a base_url e o token para a autenticação nas rotas, o último será obtido após a criação da sessão.
OBS:Todo o envio de dados será feito por um arquivo JSON através do Body da requisição.
Primeiro crie um usuário, acessando a rota Create User dentro de Users, já há um usuário John Doe definido no Body da requisição, então é só enviar:
POST Create User
/users
POST Create a Session:
Em seguida obtenha o Token JWT para a configuração do Enviroment criando uma sessão:
/sessions
Copie e cole o Token obtido no Enviroment dev na variável token, é importante que você faça isso porque TODAS as rotas EXCETO a rota Create User fazem o uso da autenticação por JWT.
POST Create User:
Cria um usuário, já há um User John Doe definido no Body da requisição.
/users
GET Show User:
Mostra os dados do usuário, é necessário passar o ID do usuário pelas Path Variables do request.
/users/user/:user_id
GET List All Users:
Lista todos os usuários cadastrados:
/users/
GET List All Addresses From User: A rota mostra todos os endereços de um usuário, ela filtrará pelo ID do usuário enviado no Path Variables.
/users/user/addresses/:user_id
PUT Update User Profile:
Nesta rota é possível fazer a atualização nos dados do usuário que está autenticado no momento, então não é preciso enviar nenhuma Path Variable, e somente através desta rota é possível realizar a TROCA DE SENHA informando a old_password e a troca de senha é opcional:
/users/profile/
PUT Update User:
Nesta rota é possível fazer a atualização nos dados do usuário, pelo ID informado no Path Variables.
/users/user/:user_id
DELETE Delete User:
Nesta rota é possível deletar um usuário, pelo ID informado no Path Variables.
/users/user/:user_id
POST Create Address:
Crie um endereço a partir do ID do usuário informado nas Path Variables do request.
/addresses/:user_id
GET List All Addresses:
Lista todos os endereços cadastrados.
/addresses/
GET Show Address:
Mostra os dados de um endereço, é necessário passar o ID do endereço nas Path Variables do request.
/addresses/address/:address_id
PUT Update Address:
Nesta rota é possível fazer a atualização dos dados de um endereço, pelo ID informado nas Path Variables.
/addresses/address/:address_id
DELETE Delete Address:
Nesta rota é possível deletar um endereço, pelo ID informado nas Path Variables.
/addresses/address/:address_id
Selected from shared topics, language and repository description—not editorial ratings.
iyumw /
A cosmetic's store management back-end system with CRUD functionalities, built using TypeScript
27/100 healthamandapolari /
Back-End do projeto Labeddit
34/100 healthfefcufe /
Projeto realizado individualmente no módulo de back end do curso da Trybe utilizando TypeScript e MySQL para criação de API CRUD.
moniquemyrria /
Projeto CRUD de Contas de Usuários / Back-End: C# (Framework Entity) / Front-End: TypeScript (Frameworks VUECli e Vuetify)
27/100 healthmhsouza88 /
Primeiro projeto em Angular. É um CRUD básico sem back-end, somente manipulando os dados do localStorage e sessionStorage. 😸
44/100 healthTassio-Med /
🗃️ Projeto focado em Back-end. Trata-se de uma loja de itens medievais no formato de uma API, desenvolvido com Typescript, Node.js e MySQL.
31/100 health