Skip to content

Add js-hedgedoc framework-test example (HedgeDoc 1.11.0 + PostgreSQL)#2

Open
Arshia001 wants to merge 6 commits into
edgejsfrom
eco-355-hedgedoc
Open

Add js-hedgedoc framework-test example (HedgeDoc 1.11.0 + PostgreSQL)#2
Arshia001 wants to merge 6 commits into
edgejsfrom
eco-355-hedgedoc

Conversation

@Arshia001

Copy link
Copy Markdown
Member

First DB-backed framework-test app (ECO-355 Phase DB), exercising the new ephemeral-database provisioning in the edgejs harness (see companion edgejs PR).

  • Vendored from the upstream HedgeDoc 1.11.0 release tarball — frontend ships prebuilt under public/build (un-gitignored on purpose), so there is no webpack build step.
  • routes.json declares a database block (kind: postgres); the harness provisions an ephemeral PostgreSQL per stage and injects CMD_DB_URL etc. HedgeDoc runs its migrations automatically on boot, so no seed step is needed.
  • Asserted routes are all unauthenticated: /_health, /status, / (bodyContains "HedgeDoc").
  • All deviations from the upstream tarball are packaging-level (pnpm-compatible package.json, passport patch via pnpm patchedDependencies, CMD_TOOBUSY_LAG raised for JIT-less QuickJS) and documented in EDGEJS-NOTES.md.

Green on Node baseline, EdgeJS QuickJS native, and QuickJS WASIX (requires the companion edgejs harness PR).

🤖 Generated with Claude Code

Vendored from the upstream 1.11.0 release tarball (prebuilt frontend under
public/build). First app using the harness's ephemeral-database support:
routes.json declares a postgres database block; the harness injects
CMD_DB_URL and friends. Packaging-level deviations from the tarball are
documented in EDGEJS-NOTES.md (pnpm-compatible package.json, passport patch
via pnpm patchedDependencies, prebuilt assets un-gitignored).

Green on Node baseline, EdgeJS QuickJS native, and QuickJS WASIX.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Arshia001 and others added 2 commits July 6, 2026 10:38
The framework-test harness's node stage used to delete every
GENERATED_FRAMEWORK_PATHS entry unconditionally, which removed the release
tarball's prebuilt public/build from the working tree before the original
commit was made — so the example landed without its frontend assets (pages
still passed because the asserted routes are server-rendered). The harness
now preserves git-tracked artifact paths; this restores the assets.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Second DB-backed framework-test app (ECO-355 Phase DB), first to use the
harness's MySQL provider and database setup hook. Layout mirrors the
upstream production Dockerfile: server/ contents at the root with the Vue
client prebuilt at ./dist (served via express.static). Migrations and
seeds run through the routes.json database.setup commands (sequelize-cli
on host Node); the seeds create the default rssmonster user. Asserted
routes: /api/health and / (client shell). Source: upstream master at
bbca402 (2026-07-04). Deviations documented in EDGEJS-NOTES.md.

Green on Node baseline, EdgeJS QuickJS native, and QuickJS WASIX.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@Arshia001

Copy link
Copy Markdown
Member Author

Added js-rssmonster (RSSMonster + MySQL, layout per its production Dockerfile with the Vue client prebuilt at ./dist) — first app using the harness's new MySQL provider and database.setup hook (sequelize migrate + seed). Green on Node/QuickJS-native/QuickJS-WASIX.

Also restored js-hedgedoc's prebuilt public/build: the harness's node stage used to delete tracked artifact paths from the working tree, so the original commit silently landed without the frontend assets (routes still passed because the asserted pages are server-rendered). The harness now preserves git-tracked artifact paths.

🤖 Generated with Claude Code

Third DB-backed framework-test app (ECO-355 Phase DB). Upstream 2.4.0
source plus the official prebuilt frontend for that release (dist/,
fetched via the upstream 'npm run download-dist').

Runs in Kuma's mariadb mode against the harness-provisioned MySQL
(UPTIME_KUMA_DB_* env via the routes.json database block). Kuma applies
its knex migrations automatically at boot — no setup commands — but that
migration phase serves a temporary page that 404s API routes, so
routes.json raises serverReadyTimeoutMs and relies on the harness's
expected-status readiness probe. With a fresh database there is no admin
user, so the asserted routes are the unauthenticated surface:
/api/entry-page (JSON), /setup, and / (SPA shell).

Deviations documented in EDGEJS-NOTES.md (notably: start script flattened
to 'node server/server.js' — the upstream 'npm run start-server'
indirection cannot resolve npm inside the WASIX guest).

Green on Node baseline, EdgeJS QuickJS native, and QuickJS WASIX.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@Arshia001

Copy link
Copy Markdown
Member Author

Added js-uptime-kuma (Uptime Kuma 2.4.0 + MySQL, in its mariadb mode): upstream source plus the official prebuilt release dist/ (fetched with the upstream npm run download-dist). Kuma migrates at boot, so no setup commands; asserted routes are the unauthenticated surface (/api/entry-page, /setup, /). Green on Node/QuickJS-native/QuickJS-WASIX. Deviations in EDGEJS-NOTES.md (notably start flattened to node server/server.js — nested npm can't resolve inside the WASIX guest).

🤖 Generated with Claude Code

Fourth DB-backed framework-test app (ECO-355 Phase DB). Upstream 1.7.3
release package (prebuilt distribution deployed with 'node production.js');
DB config via the FK_DB_* env vars Firekylin reads natively.

Firekylin normally requires a web install wizard on first run;
edgejs-install.js (run as a database.setup command on host Node) replaces
it deterministically, mirroring src/home/service/install.js: imports
firekylin.sql, seeds the installer's options rows and the admin user
(phpass hash of md5(salt + password)), and writes the .installed marker.
Asserted routes: / (seeded site title), /archives/, /admin.

Green on Node baseline and EdgeJS QuickJS native. Skipped on WASIX
(edgejs Makefile skip list): ThinkJS always serves through cluster.fork()
and the cluster IPC channel is not functional under WASIX today.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@Arshia001

Copy link
Copy Markdown
Member Author

Added js-firekylin (Firekylin 1.7.3 + MySQL) — the fourth and final planned DB-backed app. Upstream release package (prebuilt, node production.js); the web install wizard is replaced by edgejs-install.js (a database.setup command mirroring the upstream installer: schema import, options seed, phpass-hashed admin user, .installed marker). Green on Node + QuickJS native; skipped on WASIX (ThinkJS serves via cluster.fork() and cluster IPC is not functional under WASIX today — tracked in the edgejs PR).

🤖 Generated with Claude Code

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
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