Thank you for your interest in contributing to GitCard Studio! We welcome bug fixes, feature enhancements, documentation improvements, and architectural suggestions.
Please take a moment to review these guidelines and our Code of Conduct (CODE_OF_CONDUCT.md) before submitting a Pull Request (PR) or creating an Issue.
- Clean Architecture: Keep domain business logic isolated from HTTP controllers and technical frameworks. Use Cases orchestrate business rules.
- Security & OWASP First: Never disable authorization or validation checks. All inputs must be strictly validated with regular expressions.
- No Unused Code: Ensure zero unused variables, functions, or imports (
@typescript-eslint/no-unused-vars). - Strict SVG Error Responses: Card endpoints must always respond with
Content-Type: image/svg+xmland an SVG error representation (e.g. usingrenderErrorCard()) so images render properly inside GitHub<img>tags.
We use pnpm exclusively. Do not use npm or yarn.
pnpm installCopy the environment template:
cp .env.example .envFill in required keys manually (GITHUB_TOKEN, METRICS_KEY). Never check in .env files.
pnpm devAll unit tests and builds must pass clean before creating a PR:
# Run unit tests
pnpm test
# Run build verification
pnpm run buildWe follow the Conventional Commits specification:
feat:A new feature for the userfix:A bug fix for the userdocs:Documentation changes onlyrefactor:Code refactoring without changing public API behaviortest:Adding missing tests or correcting existing testschore:Maintenance tasks, dependency updates, build configurations
Example: feat: add new commit habits heatmap presenter
¡Gracias por tu interés en contribuir a GitCard Studio! Apreciamos las correcciones de errores, nuevas tarjetas, mejoras en la interfaz web y optimizaciones en la documentación.
Por favor, tómate un momento para revisar estas reglas antes de abrir un Pull Request (PR) o una Issue.
- Arquitectura Limpia (Clean Architecture): Mantén la lógica de negocio pura aislada de controladores e infraestructura técnica. Los Casos de Uso (
use-cases) orquestan las operaciones. - Seguridad OWASP por Defecto: Nunca deshabilites validaciones de entrada ni autorizaciones. Los nombres de usuario y repositorios deben validarse estrictamente con expresiones regulares.
- Código Limpio y Sin Símbolos Obsoletos: No dejes variables, tipos o importaciones en desuso (
@typescript-eslint/no-unused-vars). - Respuestas SVG en Errores: Todos los endpoints de tarjetas deben devolver
Content-Type: image/svg+xmly representar errores como tarjetas SVG válidas (renderErrorCard()), permitiendo que GitHub Camo las renderice en archivos Markdown.
Utilizamos pnpm de forma exclusiva. No ejecutes npm install ni yarn.
pnpm installcp .env.example .envConfigura manualmente las llaves necesarias (GITHUB_TOKEN, METRICS_KEY). Nunca incluyas archivos .env con secretos en tus commits.
pnpm devTu contribución debe pasar todas las pruebas unitarias y el build estático antes de solicitar la revisión:
# Ejecutar suite de pruebas con Vitest
pnpm test
# Verificar compilación estática y backend
pnpm run buildSeguimos la convención de Conventional Commits:
feat:Nueva funcionalidad o tarjetafix:Corrección de errores o linterdocs:Cambios únicamente en documentaciónrefactor:Reestructuración de código sin alterar el comportamiento externotest:Inclusión o actualización de pruebas unitariaschore:Tareas de mantenimiento o dependencias
Ejemplo: fix: correct SVG element clipping in rank presenter