Skip to Content
Contributing

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 build

Adding a source

Sources are self-contained adapters in packages/adapters/<name>/. Open an adapter request issue first, then:

  1. Implement testConnection, listLibraries, and fetchRecentItems, returning items in the shared NewItem shape from packages/adapters/core.
  2. Optionally implement listUsers (user import), fetchPopularItems (Most watched), and fetchImageBytes (poster embedding).
  3. Register the adapter.
  4. 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 changeset

Start 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 .

Last updated on