Este é o repositório do Backend da aplicação RocketNotes, uma API completa criada utilizando Node.js e Express, com um banco de dados SQLite, manipulado através do Query Builder Knex.js e ferramenta Beekeper Studio.
O banco de dados da aplicação possui quatro tabelas: users, notes, tags e links. A tabela usuários contém informações de login dos usuários, como nome, e-mail e senha. A tabela notas contém informações sobre as notas criadas pelos usuários, como título, conteúdo e data de criação. A tabela etiquetas contém informações sobre as etiquetas criadas pelos usuários e a tabela notas_etiquetas contém a relação entre as notas e as etiquetas.
Para utilizar a aplicação, basta executar os seguintes comandos:
npm i
npm run migrate
npm run dev
O servidor estará disponível em http://localhost:3000.
A aplicação utiliza as seguintes ferramentas:
- Node.js e Express: plataforma e framework utilizados para a construção do servidor da aplicação.
- SQLite e Knex.js: banco de dados e Query Builder utilizados para a manipulação do banco de dados da aplicação.
- Autenticação e JWT: autenticação de usuários implementada através de tokens JWT (JSON Web Token).
- Middlewares: funções utilizadas para manipular as requisições e respostas do servidor.
- Upload de imagens: implementado upload de imagens para as notas criadas pelos usuários.
- API Restful: a API segue os princípios de uma API RESTful.
- Cors: módulo utilizado para habilitar o CORS (Cross-Origin Resource Sharing).
- PM2: gerenciador de processos utilizado para manter o servidor da aplicação em execução.
- Deploy e utilização do render: aplicação hospedada em algum servidor que possua renderização.
- Variáveis de ambiente: variáveis de ambiente utilizadas para armazenar informações sensíveis, como chaves secretas de autenticação.
- Testes automatizados e Jest: implementado testes automatizados utilizando o framework Jest.
Este projeto serve como um bom exemplo de como criar uma aplicação backend utilizando Node.js e Express, manipulando um banco de dados utilizando SQLite e Knex.js e implementando funcionalidades de autenticação e upload de imagens.