- O estudo
- Tecnologias
- Estrutura do projeto
- O uso de inteligência artificial
- Primeiros passos
- Endpoints
- Licença
A API Newsletter foi elaborada para o projeto Newsletter, com o intuito de fortalecer os conhecimentos de Javascript/ Typescript e aprender novas tecnologias, como Vue e o Gemini, inteligência artificial da Google e, além disso, dar início a outros conhecimentos como POO e Design Patterns, especificamente o design Singleton, utilizado nas instâncias do ORM e da ferramenta Cron.
📦 raiz-do-projeto
├── 📁 src
│ ├── 📁 controllers # Onde ficam os controladores responsáveis por lidar com as requisições do cliente
│ ├── 📁 database # Configuração do ORM e banco de dados
│ ├── 📁 helpers # Contém as funções auxiliares da aplicação, utilizadas
│ ├── 📁 lib # Configuração de bibliotecas externas
│ ├── 📁 middlewares # Contém os middlewares aplicados nas rotas
│ ├── 📁 router # Definição das rotas e uso de seus respectivos middlewares
│ ├── 📁 services # É onde ficam encapsuladas as lógica de negócio da aplicação
│ ├── 📁 types # Contém tipagens extra de objetos
Um dos pontos principais da API é o uso de inteligência artificial, especificamente o Gemini Flash 1.5 na versão gratuita. A IA é utilizada na formatação de dados e na geração de informações com base nos mesmos.
Note
O conteúdo gerado pela IA é feito com base em pesquisa, sem qualquer objetivo de se apropriar da propriedade intelectual de qualquer pessoa. Além disso, seu uso é unica e exclusivamente para fins educacionais, sem qualquer atividade comercial envolvida.
# Clone o projeto
git clone https://github.com/vinicioscst/newsletter-api.git
# Instale as dependências
bun install ou npm install
# Configurar o banco de dados com o Docker (ignorar se estiver usando outro serviço)
docker-compose up -d
# Crie o arquivo .env e preencha os dados corretamente
API_KEY= # Insira aqui sua chave da API do Gemini
DATABASE_URL= # Sua string de conexão com o banco de dados. Exemplo: postgresql://docker:docker@localhost:5432/newsletter_db
PORT= # Porta que irá rodar a aplicação
SECRET_KEY= # Chave secreta para geração do token do usuário ao fazer login
SECRET_KEY_CRON= # Chave secreta para configuração da biblioteca Cron
EXPIRES_IN= # Tempo de expiração do token. Exemplo: 1h
# Configure seu banco de dados
bunx prisma db push ou npx prisma db push
# Rode a aplicação
bun run dev ou npm run dev
Para verificar todos os endpoints, corpos de requisição e respostas, acesse aqui.
Important
Certas rotas precisam de autenticação (as que possuem cadeado). Para poder acessá-las, crie um usuário (não será possível criar outro até que o atual seja desativado), fazer login e pegar o token da resposta. Para facilitar a criação do usuário, você pode usar ferramentas como o Insomnia ou Postman
Esse projeto está sob a licença MIT