{"id":29133121,"url":"https://github.com/cedraz/octochord-api","last_synced_at":"2026-04-05T21:04:49.949Z","repository":{"id":299870006,"uuid":"1003413560","full_name":"cedraz/octochord-api","owner":"cedraz","description":"RESTful API to orchestrate GitHub repository event notifications directly into Discord channels.","archived":false,"fork":false,"pushed_at":"2025-06-27T16:23:45.000Z","size":180,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-06-27T17:33:44.471Z","etag":null,"topics":["api-rest","backend","docker","docker-compose","nestjs","postgresql","prisma-orm","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cedraz.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-06-17T05:43:15.000Z","updated_at":"2025-06-27T16:23:48.000Z","dependencies_parsed_at":"2025-06-18T18:43:53.178Z","dependency_job_id":"d2b54bd5-2b75-4922-bc27-13bbe0862cd1","html_url":"https://github.com/cedraz/octochord-api","commit_stats":null,"previous_names":["cedraz/octochord","cedraz/octochord-api"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/cedraz/octochord-api","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cedraz%2Foctochord-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cedraz%2Foctochord-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cedraz%2Foctochord-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cedraz%2Foctochord-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cedraz","download_url":"https://codeload.github.com/cedraz/octochord-api/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cedraz%2Foctochord-api/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262727708,"owners_count":23354665,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api-rest","backend","docker","docker-compose","nestjs","postgresql","prisma-orm","typescript"],"created_at":"2025-06-30T07:02:00.547Z","updated_at":"2025-12-30T22:20:57.833Z","avatar_url":"https://github.com/cedraz.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Octochord\n\n\u003cp align=\"left\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/JSON-000?logo=json\u0026logoColor=white\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Markdown-000?logo=markdown\u0026logoColor=white\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/npm-CB3837?logo=npm\u0026logoColor=white\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Redis-DC382D?logo=redis\u0026logoColor=white\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Prettier-F7B93E?logo=prettier\u0026logoColor=white\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/JavaScript-F7DF1E?logo=javascript\u0026logoColor=black\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Webpack-8DD6F9?logo=webpack\u0026logoColor=black\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Docker-2496ED?logo=docker\u0026logoColor=white\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/TypeScript-3178C6?logo=typescript\u0026logoColor=white\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/ts--node-3178C6?logo=ts-node\u0026logoColor=white\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Prisma-2D3748?logo=prisma\u0026logoColor=white\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Cloudinary-3448C1?logo=cloudinary\u0026logoColor=white\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/ESLint-4B32C3?logo=eslint\u0026logoColor=white\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Axios-5A29E4?logo=axios\u0026logoColor=white\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Jest-C21325?logo=jest\u0026logoColor=white\" /\u003e\n\u003c/p\u003e\n\n\u003e Uma API robusta para monitoramento de saúde de APIs e integrações com GitHub e Discord\n\n[![NestJS](https://img.shields.io/badge/NestJS-11.0.1-red.svg)](https://nestjs.com/)\n[![Prisma](https://img.shields.io/badge/Prisma-6.9.0-blue.svg)](https://www.prisma.io/)\n[![PostgreSQL](https://img.shields.io/badge/PostgreSQL-15+-blue.svg)](https://www.postgresql.org/)\n[![Redis](https://img.shields.io/badge/Redis-7+-red.svg)](https://redis.io/)\n\n## ✨ Funcionalidades\n\n- 🔐 **Autenticação JWT** com suporte a Google OAuth\n- 📊 **Monitoramento de APIs** com verificações automáticas de saúde\n- 🔗 **Integrações GitHub** com webhooks\n- 💬 **Notificações Discord** via webhooks\n- 📧 **Sistema de emails** com templates\n- 🎯 **Códigos únicos** para verificação e reset de senha\n- 📁 **Upload de arquivos** com Cloudinary\n- ⚡ **Filas de processamento** com BullMQ\n\n## 🚀 Quick Start\n\n### Pré-requisitos\n\n- Node.js 22.14.0+\n- Docker e Docker Compose\n\n### Instalação\n\n1. **Clone o repositório**\n\n```bash\ngit clone \u003cseu-repositorio\u003e\ncd octochord\n```\n\n2. **Instale as dependências**\n\n```bash\nnpm install\n```\n\n3. **Configure as variáveis de ambiente**\n\n```bash\ncp .env.example .env\n# Edite o arquivo .env com suas configurações\n```\n\n4. **Inicie os serviços com Docker**\n\n```bash\ndocker compose up -d\n```\n\n5. **Execute as migrações do banco**\n\n```bash\nnpx prisma migrate dev\n```\n\n6. **Inicie a aplicação**\n\n```bash\nnpm run start:dev\n```\n\nA API estará disponível em `http://localhost:3000` e a documentação em `http://localhost:3000/docs`\n\n## 🏗️ Estrutura do Projeto\n\n```\nsrc/\n├── auth/                 # Autenticação e autorização\n├── user/                 # Gerenciamento de usuários\n├── integration/          # Integrações GitHub/Discord\n├── api-health-check/     # Monitoramento de APIs\n├── one-time-code/        # Códigos únicos\n├── jobs/                 # Filas de processamento\n├── providers/            # Integrações externas\n│   ├── cloudinary/      # Upload de arquivos\n│   ├── mailer/          # Envio de emails\n│   └── google-sheets/   # Google Sheets\n├── common/              # Utilitários compartilhados\n├── config/              # Configurações\n└── prisma/              # Modelos do banco de dados\n```\n\n## 🗄️ Banco de Dados\n\nO projeto utiliza **PostgreSQL** com **Prisma ORM**. Principais entidades:\n\n- **User**: Usuários do sistema\n- **Integration**: Integrações GitHub/Discord\n- **ApiHealthCheck**: Monitoramento de APIs\n- **OneTimeCode**: Códigos de verificação\n\n### Comandos úteis\n\n```bash\n# Gerar migration\nnpx prisma migrate dev\n\n# Resetar banco (cuidado!)\nnpx prisma migrate reset\n\n# Visualizar dados\nnpx prisma studio\n\n# Seed do banco\nnpm run seed\n```\n\n## 🔧 Scripts Disponíveis\n\n```bash\nnpm run start:dev      # Desenvolvimento\nnpm run start:prod     # Produção\nnpm run build          # Build da aplicação\nnpm run test           # Executar testes\nnpm run lint           # Linter\nnpm run format         # Formatação de código\n```\n\n## 📚 Documentação\n\nA documentação da API está disponível via **Swagger** em `/docs` quando a aplicação estiver rodando.\n\n## 🐳 Docker\n\n### Serviços incluídos:\n\n- **PostgreSQL**: Banco de dados principal\n- **Redis**: Cache e filas de processamento\n\n### Comandos Docker:\n\n```bash\n# Iniciar serviços\ndocker compose up -d\n\n# Acessar PostgreSQL\ndocker exec -it postgres-octochord psql -U octochord -d octochorddb\n\n# Parar serviços\ndocker compose down\n```\n\n## 🔗 Integrações\n\n### GitHub\n\n- Webhooks para eventos de repositório\n- Notificações automáticas no Discord\n\n### Discord\n\n- Webhooks para notificações\n- Integração com eventos GitHub\n\n### Stripe\n\n- Processamento de pagamentos\n- Gerenciamento de assinaturas\n\n### Cloudinary\n\n- Upload e gerenciamento de imagens\n- Otimização automática\n\n---\n\n**Desenvolvido com ❤️ por [@cedraz](https://github.com/cedraz)**\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcedraz%2Foctochord-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcedraz%2Foctochord-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcedraz%2Foctochord-api/lists"}