Files
mangabaka-seeder/docs/ARCHITECTURE.md
T
Lucas WintherandClaude Opus 5.5 54cd626f21 docs: add catbox/litterbox hosts, password gate and self-hostable server to spec
Image hosts are now server storage (30 days), litterbox (<=72h, direct
from the browser), catbox (permanent) and direct. The server becomes one
web-standard fetch handler with Cloudflare Workers and Bun.serve entries,
and an optional shared password gates every route, assets included.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-14 22:06:53 +02:00

2.5 KiB

Architecture

How mangabaka-seeder is built today. Update in the same commit as any structural change.

Overview

No code exists yet. The design is in specs/001-webtoons-covers.md: one pure TypeScript core (src/core/) that turns a MangaBaka series link and a Webtoons series link into a cover submission, used by three front ends — a static page served by a small, optionally password-gated server that runs on Cloudflare Workers or self-hosted under Bun (primary), a userscript, and later a Bun CLI. Replace this section with reality as modules land.

Map (planned — spec §4)

Path Responsibility
src/core/ Pure pipeline: sources, Wayback history, image inspection, dedupe, seed, MangaBaka client. No DOM, Bun, Node or GM_* APIs.
src/web/ Static page UI.
src/server/ Portable fetch handler (app.ts) + password gate; entries worker.ts (Cloudflare, R2) and bun.ts (self-hosted, S3). Static assets, /api/fetch allowlisted proxy, /api/upload.
src/userscript/ Userscript on mangabaka.org; network via GM_xmlhttpRequest.
src/cli/ Later: Bun CLI.
test/fixtures/ Saved real responses; tests never hit the network.

Data flow

Links → series id + source.resolve → current + Wayback candidates → inspect (bytes, size, sha256) → dedupe against MangaBaka → seed → user reviews → rehost (explicit) → submit or manual entry.

External dependencies

Service Reached via If unavailable
api.mangabaka.org direct (CORS open) Nothing works.
Webtoons HTML / swebtoon-phinf.pstatic.net server proxy or GM_xmlhttpRequest Nothing works.
Wayback (web.archive.org) same Warning; current covers only.
Server storage (R2 binding or S3 bucket) server server host hidden; litterbox/catbox/direct still work.
litterbox / catbox browser directly (litterbox), server or GM_xmlhttpRequest (catbox) That host fails; others still work.

Invariants

  • src/core/ never imports from web/, server/, userscript/ or cli/.
  • The MangaBaka token is only ever sent to api.mangabaka.org, never through our server.
  • With MBSEED_PASSWORD set, every route except /login requires a session (or Bearer password).
  • Nothing is uploaded or submitted without an explicit user action; saves use save_mode: "review".
  • /api/fetch only fetches allowlisted hosts; /api/upload only takes a source URL, never bytes.

Known rough edges

See the open questions in spec §7 and TODO.md.