Skip to content

Make ScrollCraft fully open source: no accounts, no database, no payments - #345

Merged
singhharsh1708 merged 1 commit into
mainfrom
refactor/no-accounts-open-source
Aug 27, 2026
Merged

Make ScrollCraft fully open source: no accounts, no database, no payments#345
singhharsh1708 merged 1 commit into
mainfrom
refactor/no-accounts-open-source

Conversation

@singhharsh1708

Copy link
Copy Markdown
Owner

ScrollCraft becomes a browser tool. Pick a template, edit it, export a ZIP. Nothing to sign up for, nothing to pay, nothing to configure.

Verified it boots with an empty environment — started with env -i (no .env, no keys, no database): /, /templates, /create, /editor, /contact and /api/health all 200, health reports config: ok, no startup warnings.

I checked production before deleting anything: 1 user (your own test account), 1 site, 0 published, 0 payments, 0 purchases. No user data was at stake.

Removed

  • Authentication entirely — Auth.js, both OAuth providers, the session proxy, the sign-in page, the route guards.
  • The database — Prisma, the schema, every migration, the generated client, and the User, Site, Account, Session, Payment, ExportPurchase, TemplatePurchase, PromoCode and ContactMessage models.
  • All payments — Razorpay, Lemon Squeezy, subscription plans, per-site export purchases, premium template purchases, and their webhooks.
  • Premium gating — the 8 templates sold individually have their withheld sections folded back in. All 21 are free and complete.
  • Dashboard, saved-site API, hosted /s/ publishing — all needed an account to attach a site to.
  • 8 dependencies: next-auth, prisma, @prisma/client, @prisma/adapter-pg, @auth/prisma-adapter, pg, @types/pg, razorpay.

Net: −30,187 lines.

Kept, by moving the work into the browser

Two features would otherwise have been collateral damage:

  • Video frame extraction. It was a server route that downloaded up to 500 MB and shelled out to ffmpeg — unauthenticated, that is a way to run up your bill. It now runs on the machine that already has the file, so the footage never leaves the device. The paste-a-URL path went with it: a canvas cannot read a cross-origin video, and I would rather remove it than ship something that fails on most URLs.
  • Saving. "Save" writes the document to IndexedDB and the editor restores it when opened cold, so work survives a reload without an account.

Documents corrected, not left to rot

These described a product that no longer exists, and two of them were legal texts making false statements:

  • Privacy policy claimed a Postgres database on Neon, OAuth sign-in, and two payment processors storing order IDs. It now states what actually happens: nothing reaches the server except export requests and ordinary access logs, and uploaded video never leaves the browser.
  • Cookie policy listed three authjs.* session cookies. The app now sets none at all.
  • Terms described non-refundable subscription fees and a licence for us to store your projects. Neither applies.
  • Contact form posted to a deleted route. It now composes the message in the visitor's own mail client — honest about what it can deliver, rather than silently dropping it.
  • README, .env.example, docs/DEPLOY.md, docs/WATCHDOG.md, the watchdog checks (the published-route and OAuth-provider probes are gone), and the CI/migrate workflows.

The changelog keeps its dated history and records this as v1.0.0 rather than rewriting entries that were true when written.

Verified

  • tsc, eslint, next build clean; suite 212 passed (down from 528 — the removed tests covered removed code).
  • Editor screenshotted end to end with no sign-in: template loads, sections list, background renders, inspector works.
  • Two React Compiler violations hit and restructured rather than suppressed.

…ents

ScrollCraft is now a browser tool. Pick a template, edit it, export a ZIP. There
is nothing to sign up for, nothing to pay, and nothing to configure: it boots
with an empty environment, verified by starting it with `env -i`.

Removed:

- Authentication entirely - Auth.js, both OAuth providers, the session proxy,
  the sign-in page and the route guards. Production held one account, the
  owner's own test login, so no user data was at stake.
- The database - Prisma, the schema, every migration, the generated client, and
  the User, Site, Account, Session, Payment, ExportPurchase, TemplatePurchase,
  PromoCode and ContactMessage models.
- All payments - Razorpay, Lemon Squeezy, subscription plans, per-site export
  purchases and premium template purchases, with their webhooks and clients.
- Premium template gating. The eight templates that were sold individually have
  their withheld sections folded back into the public catalogue, so all 21 are
  free and complete.
- The dashboard, saved-site API and hosted /s/ publishing, which all required an
  account to attach a site to.
- Eight dependencies: next-auth, prisma, @prisma/client, @prisma/adapter-pg,
  @auth/prisma-adapter, pg, @types/pg and razorpay.

Kept, by moving the work to the browser:

- Video frame extraction. It was a server route that downloaded up to 500 MB and
  shelled out to ffmpeg; unauthenticated that is a way to run up someone else's
  bill. It now runs on the machine that already has the file, which also means the
  footage never leaves the device. The paste-a-URL path is gone with it: a canvas
  cannot read a cross-origin video.
- Saving. "Save" now writes the document to IndexedDB and the editor restores it
  when opened cold, so work survives a reload without an account.

Documents that described the old shape have been corrected rather than left to
rot. The privacy policy claimed a Postgres database, OAuth sign-in and two payment
processors; it now states plainly that nothing reaches the server except export
requests and ordinary access logs. The cookie policy listed three session cookies
that no longer exist - the app now sets none at all. The terms described
non-refundable subscription fees. The contact form posted to a route that no
longer exists, so it composes the message in the visitor's own mail client
instead, which is honest about what it can deliver.

The changelog keeps its dated history and records this as v1.0.0, rather than
rewriting entries that were accurate when written.
@vercel

vercel Bot commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
scrollcraft Ready Ready Preview Aug 27, 2026 10:40am

@singhharsh1708
singhharsh1708 merged commit 0b0a9d3 into main Aug 27, 2026
3 checks passed
@singhharsh1708
singhharsh1708 deleted the refactor/no-accounts-open-source branch August 27, 2026 10:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant