Skip to content

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

License

Notifications You must be signed in to change notification settings

vinicioscst/newsletter-api

Repository files navigation

Newsletter (API) · Runtime: Bun Linguagem: Typescript Framework: Express IA: Gemini

Read in English

🔗 Índice

  1. O estudo
  2. Tecnologias
  3. Estrutura do projeto
  4. O uso de inteligência artificial
  5. Primeiros passos
  6. Endpoints
  7. Licença

📙 O estudo

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.

💻 Tecnologias

Principais bibliotecas

🗂️ Estrutura do projeto

📦 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

💡 O uso de inteligência artificial

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.

🚀 Primeiros passos

# 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

Endpoints

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

Licença

Esse projeto está sob a licença MIT

Footnotes

  1. Se não quiser utilizar o Bun, basta instalar o Node.js a partir da versão 20 e remover o arquivo bun.lockb

  2. Se não quiser utilizar o Docker, você pode usar algum serviço gratuito, como o Supabase

About

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

Topics

Resources

License

Stars

Watchers

Forks