https://github.com/castrozan/api-cepol-clean-code
Science Score: 26.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
○Academic publication links
-
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (4.2%) to scientific vocabulary
Repository
Basic Info
- Host: GitHub
- Owner: Castrozan
- Language: TypeScript
- Default Branch: master
- Size: 432 KB
Statistics
- Stars: 0
- Watchers: 1
- Forks: 1
- Open Issues: 0
- Releases: 0
Metadata Files
README.md
API CEPOL
Um backend desenvolvido para atender às necessidades de um site acadêmico, focado na persistência e gestão de informações relevantes para a comunidade.
Integrantes
- Lucas de Castro Zanoni
- Oziel Silveira
Descrição
O projeto API CEPOL consiste em um backend desenvolvido para atender às necessidades de um site acadêmico, focado na persistência e gestão de informações relevantes para a comunidade. Seu principal objetivo é fornecer uma base sólida para armazenar, consultar e editar dados relacionados a artigos, documentos, equipamentos, profissionais e pesquisas acadêmicas, garantindo segurança, integridade e facilidade de acesso às informações.
Funcionalidades
A API CEPOL oferece um conjunto de funcionalidades essenciais para a administração do conteúdo do site acadêmico, incluindo:
Persistência de dados:
- Artigos: possibilita o cadastro, consulta e atualização de artigos científicos e acadêmicos.
- Equipamentos: permite registrar e gerenciar informações sobre equipamentos disponíveis para uso ou pesquisa.
- Profissionais: armazena dados de profissionais vinculados à instituição, facilitando o contato e a colaboração.
- Pesquisa: oferece suporte ao registro e acompanhamento de projetos e linhas de pesquisa desenvolvidas.
Edição de conteúdo institucional:
- About Us: permite a atualização e personalização da seção "Sobre Nós", garantindo que as informações institucionais estejam sempre atualizadas e alinhadas com a missão do site.
Tecnologias
- REST API com documentação OpenAPI
- Hono.js e TypeScript
- Supabase para persistência de dados
- Rate limiting
- Security headers
CI/CD Pipeline
O projeto utiliza GitHub Actions para automação de CI/CD:
🔄 Continuous Integration (ci.yml)
- Execução automática: em push para
main/develope pull requests - Matriz de testes: Node.js 18.x e 20.x
- Verificações incluídas:
- ✅ Formatação de código (Prettier)
- 🔍 Linting (ESLint)
- 🏗️ Compilação TypeScript
- 🧪 Execução de testes (Jest)
- 📊 Cobertura de código
- 🔒 Auditoria de segurança
- 📦 Build da aplicação
Scripts Disponíveis
```bash
Desenvolvimento
npm run dev # Inicia em modo desenvolvimento npm run build # Compila TypeScript npm start # Inicia em modo produção
Qualidade de código
npm run lint # Verifica linting npm run lint:fix # Corrige problemas de linting npm run format # Formata código npm run format:check # Verifica formatação
Testes
npm test # Executa testes
Changelog e Releases
npm run commit # Helper para mensagens de commit convencionais
npm run release # Cria nova release automaticamente
npm run release:patch # Cria release patch (1.0.0 → 1.0.1)
npm run release:minor # Cria release minor (1.0.0 → 1.1.0)
npm run release:major # Cria release major (1.0.0 → 2.0.0)
npm run release:dry-run # Simula release sem executar
```
📋 Changelog e Versionamento
Este projeto segue as especificações do Conventional Commits e Semantic Versioning.
Convenção de Commits
Todas as mensagens de commit devem seguir o formato:
```
[corpo opcional]
[rodapé opcional] ```
Tipos disponíveis:
- feat: Nova funcionalidade
- fix: Correção de bug
- docs: Mudanças na documentação
- style: Mudanças de formatação
- refactor: Refatoração de código
- perf: Melhoria de performance
- test: Adição ou correção de testes
- build: Mudanças no sistema de build
- ci: Mudanças na configuração de CI
- chore: Outras mudanças que não modificam src ou test
Exemplos:
bash
feat: adicionar autenticação de usuários
fix: resolver timeout de conexão com banco
docs: atualizar documentação da API
Helper para Commits
Use o helper interativo para criar commits no formato correto:
bash
npm run commit
Releases Automáticas
O changelog é gerado automaticamente baseado nos commits. As releases são criadas através de:
- GitHub Actions: Automático em push para main com commits convencionais
- Comando manual:
npm run release - Workflow Dispatch: Através da interface do GitHub Actions
Visualizar Changelog
Consulte o arquivo CHANGELOG.md para ver todas as mudanças do projeto.
Documentação Técnica
Getting Started
Prerequisites
- Node.js (v16 or higher)
- npm or yarn
Installation
- Clone the repository
- Install dependencies:
bash
npm install
- Set up environment variables:
```bash
Create a .env file with the following content
PORT=3000 NODE_ENV=development ```
- The database is automatically initialized when starting the application.
Running the Application
Development mode:
bash
npm run dev
Production mode:
bash
npm run build
npm start
Linting
bash
npm run lint
npm run lint:fix
API Documentation
The API documentation is available at the root endpoint (/) when the server is running.
Project Structure
src/
├── application/ # Application services and use cases
├── domain/ # Domain models and interfaces
├── infrastructure/ # External services, database, web server
│ ├── database/ # Database implementation
│ │ └── sqlite/ # SQLite configuration
│ ├── middleware/ # API middleware
│ └── web/ # Web server configuration
├── presentation/ # API controllers and DTOs
└── config/ # Application configuration
Endpoints
The API provides the following endpoints:
/public/about- About information (public)/about- Manage about information (authenticated)/public/article- Articles (public)/article- Manage articles (authenticated)/public/equipment- Equipment (public)/equipment- Manage equipment (authenticated)/public/research- Research (public)/research- Manage research (authenticated)
License
This project is licensed under the MIT License - see the LICENSE file for details.
Owner
- Name: Lucas Zanoni
- Login: Castrozan
- Kind: user
- Repositories: 2
- Profile: https://github.com/Castrozan
GitHub Events
Total
- Issue comment event: 14
- Member event: 1
- Push event: 27
- Pull request event: 14
- Fork event: 2
- Create event: 5
Last Year
- Issue comment event: 14
- Member event: 1
- Push event: 27
- Pull request event: 14
- Fork event: 2
- Create event: 5
Dependencies
- 503 dependencies
- @cloudflare/workers-types ^4.20241205.0 development
- @types/express ^5.0.0 development
- @types/node ^20.17.9 development
- @types/service-worker-mock ^2.0.1 development
- @typescript-eslint/eslint-plugin ^8.17.0 development
- @typescript-eslint/parser ^8.17.0 development
- eslint ^9.16.0 development
- prettier ^3.4.2 development
- wrangler ^3.60.3 development
- @aws-sdk/client-s3 ^3.750.0
- @supabase/supabase-js ^2.47.1
- chanfana ^2.0.2
- cloudflare-workers ^0.0.14
- cloudflare-workers-openapi file:
- dotenv ^16.4.7
- express ^4.21.2
- hono ^4.4.7
- hono-rate-limiter ^0.4.2
- openapi-typescript ^7.4.4
- pg ^8.13.1
- postgres ^3.4.5
- swagger-ui-express ^5.0.1
- ts-node ^10.9.2
- ts-node-dev ^2.0.0
- typescript ^5.7.2
- zod ^3.23.8