Este projeto trata-se de uma API REST para um sistema de gerenciamento e compartilhamento de notas, semelhante ao Evernote. A API serve como o backend que permite aos clientes acessar e manipular as notas por meio de endpoints RESTful.
✔️ Criação de Notas - Os usuários podem criar notas com títulos e conteúdo.
✔️ Edição de Notas - A API suporta a edição de notas existentes, permitindo que os usuários atualizem o conteúdo, o título.
✔️ Marcação de Notas como Concluídas - Os usuários podem marcar as notas como "feitas" para indicar que uma tarefa ou objetivo foi concluído.
✔️ Compartilhamento de Notas - Os usuários têm a opção de compartilhar suas notas, tornando-as públicas para visualização por outros usuários da plataforma.
✔️ Comentários em Notas - Os usuários podem adicionar comentários às notas, permitindo discussões e interações relacionadas ao conteúdo das notas.
✔️ Busca de Notas - É possível buscar todas as notas ou uma nota por id do usuário logado, ou buscar uma nota por id de qualquer usuário caso a mesma seja pública.
✔️ Exclusão de Notas - Os usuários podem excluir notas que não são mais necessárias.
✔️ Autenticação e Autorização - A autenticação de usuários é tratada com Bcrypt e JsonWebToken, garantindo que apenas usuários autorizados possam acessar e manipular as notas.
- Express - framework para criação de aplicativos web.
- TypeScript - superset, linguagem baseada em javascript
- MongoDB - banco de dados NoSQL
- Mongoose - é uma biblioteca de modelagem de objetos.
- Zod - é uma biblioteca de validação e transformação
- Prettier - Formatador de código que mantém um estilo de código consistente.
- ESLint - Ferramenta de linting para identificar e corrigir problemas no código.
- Bcrypt - é uma biblioteca de hash de senhas
- JsonWebToken - é um formato compacto e autenticado de representar informações em sistemas web para autenticação e autorização.
- Swagger - é uma estrutura de código aberto para a documentação, criação e teste de APIs REST.
- EJS - é uma linguagem de modelagem de templates para geração dinâmica de conteúdo web com JavaScript embutido.
./src
├── @types
│ └── express
├── app
│ ├── Comment
│ │ ├── dtos
│ │ ├── entity
│ │ ├── interfaces
│ │ └── schemas
│ ├── Note
│ │ ├── dtos
│ │ ├── entity
│ │ ├── interfaces
│ │ └── schemas
│ └── User
│ ├── dtos
│ ├── entity
│ ├── interfaces
│ └── schemas
├── database
│ └── models
├── helpers
│ ├── classes
│ ├── regex
│ └── schemas
├── middlewares
└── views
└── includes
- @types: Contém definições de tipos personalizados para a aplicação, como para o express.
- app: Contém subpastas para diferentes módulos da aplicação. Cada modulo (por exemplo, Comment, Note, User) tem suas próprias pastas:
- modulo
- dtos: Objetos de Transferência de Dados.
- entity: Entidades do banco de dados ou modelos.
- interfaces: Interfaces TypeScript para a entidade.
- schemas: Schemas de validação (por exemplo, para validação com class-validator).
- modulo-route.ts
- modulo-controller.ts
- modulo-service.ts
- modulo-repository.ts
- modulo-factory.ts
- modulo
- database: Contém modelos relacionados ao banco de dados.
- helpers: Inclui utilitários e helpers para a aplicação:
- classes: Classes utilitárias ou de apoio.
- regex: Expressões regulares úteis.
- schemas: Schemas para validações de dados.
- middlewares: Contém middlewares personalizados para a aplicação.
- views: Contém arquivos de visualização e componentes visuais:
- includes: Arquivos e componentes incluídos nas visualizações.
Para baixar, executar e modificar o projeto, você precisa ter instalado em sua máquina:
- Clone o repositório
git clone https://github.com/aleretamero/api_paper-notes.git- Acesse a pasta do projeto
cd api_paper-notes- Instale as dependências
npm install- Copie o arquivo
.env.examplee crie um arquivo.envna raiz do projeto colocando as variáveis com os valores corretos:
PORT=3333
NODE_ENV=development
JWT_TOKEN=secret
DB_URI=mongodb://root:root@localhost:27017
DB_NAME=paper-notes
DB_USERNAME=root
DB_PASSWORD=root
MONGO_EXPRESS_USERNAME=$DB_USERNAME
MONGO_EXPRESS_PASSWORD=$DB_PASSWORD
MONGO_EXPRESS_URL=mongodb://root:root@mongo:27017insira os valores das variáveis vazias.
- Crie o container no docker com
docker compose up -d- Inicie o servidor de desenvolvimento do projeto
npm run dev| Foto | Nome |
|---|---|
![]() |
Alexandre Retamero |

