Add Deno Runtime Support
Overview
Add dual runtime support to hello-world-web, allowing the application to run on both Node.js 22 and Deno 2.x with identical functionality.
Motivation
- Learning: Explore Deno 2.x's Node.js compatibility in a real-world application
- Performance: Compare runtime performance between Node.js and Deno
- Modern tooling: Leverage Deno's built-in TypeScript, linting, and formatting
- Flexibility: Maintain deployment options across runtimes
Implementation Status
β
Phase 1-3: Completed
π§ Phase 5-6: In Progress (PR #TBD)
Technical Details
No Code Changes Required!
The codebase was already Deno-compatible due to:
- Pure ESM (`"type": "module"`)
- `node:` prefixes on built-in imports
- No `require()` calls
- Modern TypeScript
Works Out of the Box:
- β
Express 5.1 via `npm:express@^5.1.0`
- β
All middleware (cookie-parser, morgan, dotenv)
- β
@lit-labs/ssr (SSR + hydration)
- β
Static file serving
- β
All routes
Testing
- Local: `pnpm start:deno` or `deno task start`
- CI: Matrix strategy tests both runtimes in parallel
Deployment
- Node: `hello.kiste.li` (existing, unchanged)
- Deno: `dev-deno.hello.kiste.li` (new, separate service)
Design Document
See docs/plans/2025-11-30-deno-runtime-support-design.md for complete design.
Related
Add Deno Runtime Support
Overview
Add dual runtime support to hello-world-web, allowing the application to run on both Node.js 22 and Deno 2.x with identical functionality.
Motivation
Implementation Status
β Phase 1-3: Completed
deno.jsonconfigurationnpm:specifierspnpm start:denoandpnpm dev:denoscriptspackages/app/src/runtime.ts)π§ Phase 5-6: In Progress (PR #TBD)
test.yml(lint + build)bdd-tests.yml(E2E tests)Dockerfile.deno(multi-stage, static compilation if possible)dev-deno.hello.kiste.li)Technical Details
No Code Changes Required!
The codebase was already Deno-compatible due to:
Works Out of the Box:
Testing
Deployment
Design Document
See docs/plans/2025-11-30-deno-runtime-support-design.md for complete design.
Related