Contributing
LatestArr is GPL-3.0 and built in the open. Code isn’t the only way to help, and right now some of the most useful help isn’t code at all.
Help wanted
- Review the code, especially security, credential handling, and email handling. AI writes the code and a human reviews it; more reviewers make it better.
- Test sources, above all the ones marked “Needs testers” in Sources: Plex, BookLore, Grimmory, Audiobookshelf, and especially Jellyfin and Emby, which haven’t been confirmed on a real server. Report on #196 for Jellyfin and Emby, or #244 for Plex, BookLore, Grimmory, and Audiobookshelf. Any source on a setup unlike the maintainer’s is useful too.
- Give guidance on reliability, security, and maturity: what’s missing, what’s wrong, what would stop you running it.
Questions, ideas, and source testing reports are welcome in Discussions .
Start with the issues and
CONTRIBUTING.md. Report
security issues privately (see Security).
Development setup
You’ll need Node 24 or newer and pnpm.
cp .env.example .env # set ENCRYPTION_KEY
set -a && source .env && set +a
pnpm install
pnpm turbo run dev --env-mode=loose--env-mode=loose matters: without it, ENCRYPTION_KEY doesn’t reach the server and every
change you try to save fails. The web UI runs on http://localhost:5173 and forwards API calls
to the server on port 3000.
Before opening a pull request:
pnpm turbo run lint typecheck buildAdding a source
Sources are self-contained adapters in packages/adapters/<name>/. Open an adapter request issue
first, then:
- Implement
testConnection,listLibraries, andfetchRecentItems, returning items in the sharedNewItemshape frompackages/adapters/core. - Optionally implement
listUsers(user import),fetchPopularItems(Most watched), andfetchImageBytes(poster embedding). - Register the adapter.
- Add tests for a successful fetch and an authentication failure.
A new source shouldn’t need changes to the scheduler, database schema, or core UI.
CONTRIBUTING.md has the full walkthrough.
Changesets and release notes
Every user-facing change comes with a changeset:
pnpm changesetStart the summary with New:, Improved:, or Fixed:, written for the people running LatestArr, then add technical details underneath. Commits follow Conventional Commits. Releases collect changesets into the changelog and GitHub Release notes.
Spotted a mistake in these docs? Open an issue
with the documentation label, or mention it in
GitHub Discussions .