Este repositório contém uma API REST desenvolvida com Node.js e Hono, utilizando TypeScript, TypeORM e PostgreSQL. A autenticação é baseada em JWT, utilizando a biblioteca Jose, e o hash de senhas é feito com Argon2.
- Node.js - Ambiente de execução JavaScript no servidor
- Hono - Microframework para criação de APIs web
- TypeScript - Superconjunto tipado do JavaScript
- PostgreSQL - Banco de dados relacional
- TypeORM - ORM para modelagem e manipulação do banco de dados
- JWT (Jose) - Autenticação e segurança baseada em tokens JWT
- Argon2 - Hash de senhas seguro
Antes de iniciar o projeto, certifique-se de que os seguintes softwares estão instalados na sua máquina:
- Node.js (versão 18 ou superior)
- PostgreSQL (versão 14 ou superior)
- Clone este repositório:
git clone https://github.com/DouglasPimentel/nodejs-api-rest cd nodejs-api-rest
- Instale as dependências:
pnpm install
- Crie um arquivo
.env.local
com as variáveis necessárias (exemplo no.env.template
). - Inicie a aplicação em modo de desenvolvimento:
pnpm dev
nodejs-api-rest/
|-- public/
│-- src/
| |-- database/
│ │-- middlewares/
│ │-- modules/
│ │-- routes/
│ │-- utils/
| |-- app.ts
| |-- environment.ts
| |-- index.ts
│ └── logger.ts
│-- .env.template
|-- .gitignore
│-- tsconfig.json
│-- package.json
|-- README.md
└── tsconfig.json
-
Autenticação
POST /auth/login
- Autentica um usuário e retorna um token JWTPOST /auth/signup
- Registra um novo usuário
-
Recursos Protegidos (Exemplo)
GET /api/v1/users
- Retorna a lista de usuários (requer autenticação)GET /api/v1/tools
- Retorna a lista de ferramentas (requer autenticação)
Os tokens JWT são gerados utilizando a biblioteca Jose. O token deve ser incluído no cabeçalho Authorization
para acessar rotas protegidas:
Authorization: Bearer <seu-token>
pnpm dev
- Inicia o servidor em modo de desenvolvimento
- Fork este repositório
- Crie uma branch (
git checkout -b feature-minha-feature
) - Commit suas mudanças (
git commit -m 'Adiciona nova feature'
) - Envie para a branch (
git push origin feature-minha-feature
) - Abra um Pull Request
Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.