Skip to content

Commit e6a83c8

Browse files
feat(deno): migrate flat-mate workspace → deno.json (3/4 manifests; apps/mobile Class C deferred, standards#253 longtail) (#16)
Workspace-style migration covering 3 of 4 npm manifests. The fourth (`apps/mobile/package.json`) is Class C — Expo / React Native / Metro bundler ecosystem cannot run under Deno, so the npm manifest remains as a host-required carve-out (parallel to the VSCode-extension class). ## Migrated - **`/deno.json`** (was root `package.json`) — Deno workspace with `apps/web` + `packages/shared` members, plus `tasks` for `dev:api` (Deno-native), `dev:web` (delegates to apps/web workspace), and `check` (deno check + lint + node --check → deno check). `dev:mobile` task emits a Class C documentation message instead of orchestrating. - **`apps/web/deno.json`** (was `apps/web/package.json`) — Class B with `imports` for react/react-dom/vite/@vitejs/plugin-react via `npm:` specifiers; tasks via `deno run -A --node-modules-dir=auto npm:vite@^8.0.7 …`. - **`packages/shared/deno.json`** (was `packages/shared/package.json`) — Class A; pure JS barrel-export package with no scripts, just `name` + `version` + `license` + `exports`. ## Deferred (Class C) - **`apps/mobile/package.json`** — Expo SDK + React Native + Metro bundler require Node + npm/yarn/pnpm. Deno cannot run `expo start`, Metro is fundamentally npm-rooted. Same Class C pattern as VSCode extensions (host requires npm). Tracked as Class C carve-out candidate for hypatia rule extension (per-repo follow-up). ## Test plan - [ ] `deno task dev:api` runs the Deno-native API server (unchanged) - [ ] `deno task dev:web` chains to apps/web deno task dev (vite) - [ ] `deno task check` validates apps/api + packages/shared - [ ] apps/mobile still works with npm (unchanged) Per per-repo follow-up tracker for standards#253 (campaign closed 2026-05-31, longtail tracked in project_estate_npm_to_deno_2026_05_28.md). Refs hyperpolymath/standards#253. Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent fac8073 commit e6a83c8

6 files changed

Lines changed: 53 additions & 49 deletions

File tree

apps/web/deno.json

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
{
2+
"$schema": "https://deno.land/x/deno/cli/schemas/config-file.v1.json",
3+
"name": "@flat-mate/web",
4+
"version": "0.1.0",
5+
"license": "MPL-2.0",
6+
"tasks": {
7+
"dev": "deno run -A --node-modules-dir=auto npm:vite@^8.0.7",
8+
"build": "deno run -A --node-modules-dir=auto npm:vite@^8.0.7 build",
9+
"preview": "deno run -A --node-modules-dir=auto npm:vite@^8.0.7 preview"
10+
},
11+
"imports": {
12+
"react": "npm:react@^18.3.1",
13+
"react-dom": "npm:react-dom@^18.3.1",
14+
"@vitejs/plugin-react": "npm:@vitejs/plugin-react@^4.4.1",
15+
"vite": "npm:vite@^8.0.7"
16+
},
17+
"nodeModulesDir": "auto"
18+
}

apps/web/package.json

Lines changed: 0 additions & 21 deletions
This file was deleted.

deno.json

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
{
2+
"$schema": "https://deno.land/x/deno/cli/schemas/config-file.v1.json",
3+
"name": "@hyperpolymath/flat-mate",
4+
"version": "0.1.0",
5+
"license": "MPL-2.0",
6+
"workspace": [
7+
"./apps/web",
8+
"./packages/shared"
9+
],
10+
"tasks": {
11+
"dev:api": "deno run --watch=apps/api --allow-net --allow-env apps/api/main.ts",
12+
"dev:web": "deno task --cwd apps/web dev",
13+
"dev:mobile": "echo 'apps/mobile is an Expo project; run `cd apps/mobile && npm install && npm run start` (Expo CLI requires Node — see Class C carve-out in README)'",
14+
"build:web": "deno task --cwd apps/web build",
15+
"check": "deno check apps/api/main.ts && deno lint apps/api && deno check packages/shared/src/domain.js"
16+
},
17+
"fmt": {
18+
"useTabs": false,
19+
"lineWidth": 100,
20+
"indentWidth": 2,
21+
"singleQuote": false
22+
},
23+
"lint": {
24+
"rules": {
25+
"tags": ["recommended"]
26+
}
27+
}
28+
}

package.json

Lines changed: 0 additions & 21 deletions
This file was deleted.

packages/shared/deno.json

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
"$schema": "https://deno.land/x/deno/cli/schemas/config-file.v1.json",
3+
"name": "@flat-mate/shared",
4+
"version": "0.1.0",
5+
"license": "MPL-2.0",
6+
"exports": "./src/index.js"
7+
}

packages/shared/package.json

Lines changed: 0 additions & 7 deletions
This file was deleted.

0 commit comments

Comments
 (0)