An open API service indexing awesome lists of open source software.

https://github.com/cedraz/octochord-api

RESTful API to orchestrate GitHub repository event notifications directly into Discord channels.
https://github.com/cedraz/octochord-api

api-rest backend docker docker-compose nestjs postgresql prisma-orm typescript

Last synced: 3 months ago
JSON representation

RESTful API to orchestrate GitHub repository event notifications directly into Discord channels.

Awesome Lists containing this project

README

          

# Octochord

















> Uma API robusta para monitoramento de saúde de APIs e integrações com GitHub e Discord

[![NestJS](https://img.shields.io/badge/NestJS-11.0.1-red.svg)](https://nestjs.com/)
[![Prisma](https://img.shields.io/badge/Prisma-6.9.0-blue.svg)](https://www.prisma.io/)
[![PostgreSQL](https://img.shields.io/badge/PostgreSQL-15+-blue.svg)](https://www.postgresql.org/)
[![Redis](https://img.shields.io/badge/Redis-7+-red.svg)](https://redis.io/)

## ✨ Funcionalidades

- 🔐 **Autenticação JWT** com suporte a Google OAuth
- 📊 **Monitoramento de APIs** com verificações automáticas de saúde
- 🔗 **Integrações GitHub** com webhooks
- 💬 **Notificações Discord** via webhooks
- 📧 **Sistema de emails** com templates
- 🎯 **Códigos únicos** para verificação e reset de senha
- 📁 **Upload de arquivos** com Cloudinary
- ⚡ **Filas de processamento** com BullMQ

## 🚀 Quick Start

### Pré-requisitos

- Node.js 22.14.0+
- Docker e Docker Compose

### Instalação

1. **Clone o repositório**

```bash
git clone
cd octochord
```

2. **Instale as dependências**

```bash
npm install
```

3. **Configure as variáveis de ambiente**

```bash
cp .env.example .env
# Edite o arquivo .env com suas configurações
```

4. **Inicie os serviços com Docker**

```bash
docker compose up -d
```

5. **Execute as migrações do banco**

```bash
npx prisma migrate dev
```

6. **Inicie a aplicação**

```bash
npm run start:dev
```

A API estará disponível em `http://localhost:3000` e a documentação em `http://localhost:3000/docs`

## 🏗️ Estrutura do Projeto

```
src/
├── auth/ # Autenticação e autorização
├── user/ # Gerenciamento de usuários
├── integration/ # Integrações GitHub/Discord
├── api-health-check/ # Monitoramento de APIs
├── one-time-code/ # Códigos únicos
├── jobs/ # Filas de processamento
├── providers/ # Integrações externas
│ ├── cloudinary/ # Upload de arquivos
│ ├── mailer/ # Envio de emails
│ └── google-sheets/ # Google Sheets
├── common/ # Utilitários compartilhados
├── config/ # Configurações
└── prisma/ # Modelos do banco de dados
```

## 🗄️ Banco de Dados

O projeto utiliza **PostgreSQL** com **Prisma ORM**. Principais entidades:

- **User**: Usuários do sistema
- **Integration**: Integrações GitHub/Discord
- **ApiHealthCheck**: Monitoramento de APIs
- **OneTimeCode**: Códigos de verificação

### Comandos úteis

```bash
# Gerar migration
npx prisma migrate dev

# Resetar banco (cuidado!)
npx prisma migrate reset

# Visualizar dados
npx prisma studio

# Seed do banco
npm run seed
```

## 🔧 Scripts Disponíveis

```bash
npm run start:dev # Desenvolvimento
npm run start:prod # Produção
npm run build # Build da aplicação
npm run test # Executar testes
npm run lint # Linter
npm run format # Formatação de código
```

## 📚 Documentação

A documentação da API está disponível via **Swagger** em `/docs` quando a aplicação estiver rodando.

## 🐳 Docker

### Serviços incluídos:

- **PostgreSQL**: Banco de dados principal
- **Redis**: Cache e filas de processamento

### Comandos Docker:

```bash
# Iniciar serviços
docker compose up -d

# Acessar PostgreSQL
docker exec -it postgres-octochord psql -U octochord -d octochorddb

# Parar serviços
docker compose down
```

## 🔗 Integrações

### GitHub

- Webhooks para eventos de repositório
- Notificações automáticas no Discord

### Discord

- Webhooks para notificações
- Integração com eventos GitHub

### Stripe

- Processamento de pagamentos
- Gerenciamento de assinaturas

### Cloudinary

- Upload e gerenciamento de imagens
- Otimização automática

---

**Desenvolvido com ❤️ por [@cedraz](https://github.com/cedraz)**