chore: make the project discoverable (CI, container, community files, README) - #7
Merged
Merged
Conversation
The entrypoint ignored "$@" entirely, so the documented setup step docker compose run --rm quidly npm run set-password ran migrations and then started Next rather than printing a password hash — breaking step 3 of the quickstart for every new self-hoster. Exec the passed command as the app user when there is one, after preparing /data but before migrate/seed, so one-shot commands don't touch the database.
apply.test.ts writes its scratch SQLite file into akaunting-migration/, which is git-ignored and therefore absent from a fresh clone. better-sqlite3 won't create the parent directory, so the suite failed to load with "Cannot open database because the directory does not exist" — 100% of the time in CI, and locally for anyone who hadn't run the migration tooling first. Its 4 tests now actually execute: 311 passing, 0 skipped.
CI runs vitest, next build, and a new `typecheck` script on every push and PR, so the README can carry a live status badge instead of a hardcoded test count. Node 22 matches the Dockerfile runtime. Typecheck runs after the build so the generated route types under .next/types are on disk and get checked. The publish workflow pushes ghcr.io/warlaxz/quidly for main and v* tags, linux/amd64 + linux/arm64, with signed build provenance. Self-hosters can now `docker compose pull` rather than building from source — the first thing the r/selfhosted audience looks for. The image name is lowercased at runtime because GHCR rejects uppercase and the owner is "WarlaxZ".
GitHub surfaces these in the issue/PR UI and in its community-standards checklist, and their absence reads as an unmaintained project to anyone evaluating whether to trust the app with their tax records. Templates capture the things a diagnosis almost always turns on — install method, version, and tax year — and route security reports to a private advisory rather than a public issue. The tax-accuracy template requires an HMRC source link, which makes a wrong-figure report actionable instead of a disagreement. CONTRIBUTING records the conventions that already govern the codebase (integer pence, hand-authored Prisma SQL, Next 16 docs) and states the deliberate scope limits: single-user per install, UK-only. FUNDING.yml is left commented out — uncomment a platform once one is set up.
Every share on Reddit, HN, Discord or X currently renders GitHub's grey auto-generated card. This uses the app's own tokens — forest #1f3d30, cream #f4f1e6, ochre rule, Fraunces + Hanken Grotesk — so a shared link looks like the product. The generating HTML is committed alongside it so the card can be regenerated rather than reverse-engineered. GitHub has no API for social preview images, so the PNG still has to be uploaded via repo Settings by hand.
Corrections: - Tests badge claimed "261 passing" while the dev section said "198 tests"; the real count is 311. Replaced with a live CI badge that can't go stale. - Rates are configured for 2025-26, 2026-27 and 2027-28, not just 2025-26 — the old text undersold three years of work (see CONFIGURED_TAX_YEARS). Additions for discovery and conversion: - Quick start is now `docker compose pull`-based, with the build-from-source path kept for people who won't run someone else's binary. - A comparison table, and "who it's for" phrased the way people search: buy-to-let, HMO, portfolio, Self Assessment, SA105, Section 24. - An explicit statement that Quidly does not file with HMRC and cannot make Making Tax Digital submissions, since that's the first question a landlord reading this in 2026 will have. Alternatives are compared as categories rather than named products, so the table can't go stale or misstate a competitor's feature set.
docker-compose.yml now pulls ghcr.io/warlaxz/quidly:latest so the quickstart is a pull rather than a local build. docker-compose.build.yml overlays `build: .` for development, or for operators who'd rather compile the thing handling their financial data themselves.
4 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Improves how the project is found and evaluated, plus two bug fixes found along the way.
Bugs fixed
The documented quickstart didn't work.
docker-entrypoint.shignored"$@", soran migrations and started Next instead of printing a password hash — every new self-hoster hit this at step 3. Verified the break in a container and verified both paths after the fix.
A test failed 100% of the time in CI.
apply.test.tswrites its scratch SQLite file intoakaunting-migration/, which is git-ignored and so absent from a fresh clone; better-sqlite3 won't create the parent dir. Its 4 tests now actually run — 311 passing, 0 skipped.Discoverability
next build+ a newtypecheckscript, on Node 22 to match the Dockerfile. Replaces the hardcoded tests badge with a live one.ghcr.io/warlaxz/quidlyformainandv*tags,linux/amd64+linux/arm64, with signed build provenance. "Is there a Docker image?" is the go/no-go question for the self-hosting audience.docker-compose.build.ymloverlaysbuild: .for development or for operators who'd rather compile it themselves.docs/social-preview.png(1280×640) using the app's own tokens, with its generator committed alongside. Still needs a manual upload via repo Settings; GitHub has no API for it.README corrections
Two claims were wrong:
CONFIGURED_TAX_YEARScovers 2025-26 through 2027-28.Also added a pull-based quickstart, a comparison table, "who it's for" phrased the way people search (buy-to-let, HMO, portfolio, SA105, Section 24), and an explicit statement that Quidly does not file with HMRC and cannot make Making Tax Digital submissions.
The comparison table comes out as categories rather than named products deliberately — a table asserting specific feature claims about FreeAgent or Landlord Studio could be wrong or go stale, which is a credibility risk on a repo about tax accuracy.
Verification
311/311 tests ·
next buildpasses ·tsc --noEmitclean · all 9 YAML files parse · both compose paths validate · all 4 new external links return 200.Still needs repo admin (not doable via API with push-only access)
docs/social-preview.pngin Settings → General → Social previewdocker pullthis README now recommends fail for everyone