Contribuir
Las incidencias y las pull requests son bienvenidas. Esta página resume la
configuración local y los controles de calidad; la fuente canónica y siempre
actualizada es
CONTRIBUTING.md
en el repositorio.
Configuración local
Sección titulada «Configuración local»PosterPilot es una app SvelteKit que se ejecuta sobre Bun.
bun installcp .env.example .env # rellena PLEX_URL / PLEX_TOKEN / TMDB_KEY (o usa la interfaz de Ajustes)bun run db:generate # genera migraciones SQL desde el esquema de Drizzle (ya commiteadas)bun run dev # http://localhost:5173Las migraciones se aplican automáticamente al arrancar el servidor.
Controles de calidad
Sección titulada «Controles de calidad»Todo cambio debe pasar estos antes de la revisión; CI ejecuta los mismos:
bun run check # comprobación de tipos con svelte-checkbun run test # pruebas unitarias con vitestbun run lint # prettier --check (ejecuta `bun run format` para autocorregir)El proyecto sigue el desarrollo guiado por pruebas para la lógica del servidor:
escribe primero una prueba que falle y luego la implementación. Mantén la lógica
pura y testeable libre de imports de $env / $app para que pueda probarse de
forma aislada (consulta las pruebas existentes para ver el patrón).
Mensajes de commit
Sección titulada «Mensajes de commit»El proyecto usa Conventional Commits. El prefijo de tipo impulsa el changelog automatizado y el incremento de versión mediante release-please:
feat:— una nueva función (incremento menor)fix:— una corrección de error (incremento de parche)docs:,chore:,refactor:,test:,ci:— no provocan una publicación por sí mismosfeat!:/ un pieBREAKING CHANGE:— incremento mayor
Ejemplo: feat(library): add genre filter.
Pull requests
Sección titulada «Pull requests»- Crea una rama desde
main. - Haz cambios enfocados; mantén el diff acotado a una sola cuestión.
- Asegúrate de que
check,testylintestán en verde. - Abre una PR usando la plantilla y enlaza cualquier incidencia relacionada.
Cambios guiados por especificación
Sección titulada «Cambios guiados por especificación»Las funciones más grandes se planifican con
OpenSpec bajo openspec/changes/. Para un
cambio sustancial, propón primero una especificación y luego implementa contra sus
tareas. Las especificaciones de capacidades viven bajo openspec/specs/.
Traducir
Sección titulada «Traducir»No se requiere programación para ayudar a traducir la interfaz; consulta Traducir para el flujo de trabajo de Weblate.
PosterPilot is an independent project, not affiliated with or endorsed by Plex, Jellyfin, Emby, MediUX, Fanart.tv, TMDB, ThePosterDB, or Kometa. Trademarks belong to their respective owners. This product uses the TMDB API but is not endorsed or certified by TMDB.