PR #9 of the 11-PR completion sequence. Fixes the 'unfinished router migration + inconsistent packageManager' finding from the review.
Changes
Router decision: keep pages/, delete app/.src/app/ only ever contained globals.css; every actual route lives under src/pages/. Keeping both routers in the tree made the build surface area ambiguous and left a trap where a future contributor could add a new route under src/app/ and break Next's routing resolution.
CSS moved.src/app/globals.css → src/styles/globals.css. _app.tsx's import was updated accordingly. No-op at runtime; CSS payload is byte-identical.
Tailwind content glob updated../src/app/**/*.{js,ts,jsx,tsx,mdx} → ./src/styles/**/*.css. The src/components/** and src/pages/** globs are unchanged.
Unified on npm:
packageManager: [email protected] → [email protected]. The lockfile (package-lock.json) and CI (npm ci / npm run lint / npm run type-check / npm run build) have always used npm; the pnpm declaration was aspirational and would have forced contributors with corepack enabled into a tool the repo doesn't actually support.
Added engines: node >=20 <21, npm >=10 so CI, Docker, and a fresh laptop clone all land on the same runtime.
Verification
npm ci — 465 packages, no warnings.
npm run lint — next lint: No ESLint warnings or errors.
5. Frontend housekeeping — "one router; one package manager; build is reproducible from the lockfile."
## Summary
PR #9 of the 11-PR completion sequence. Fixes the 'unfinished router migration + inconsistent packageManager' finding from the review.
## Changes
1. **Router decision: keep `pages/`, delete `app/`.** `src/app/` only ever contained `globals.css`; every actual route lives under `src/pages/`. Keeping both routers in the tree made the build surface area ambiguous and left a trap where a future contributor could add a new route under `src/app/` and break Next's routing resolution.
2. **CSS moved.** `src/app/globals.css` → `src/styles/globals.css`. `_app.tsx`'s import was updated accordingly. No-op at runtime; CSS payload is byte-identical.
3. **Tailwind content glob updated.** `./src/app/**/*.{js,ts,jsx,tsx,mdx}` → `./src/styles/**/*.css`. The `src/components/**` and `src/pages/**` globs are unchanged.
4. **Unified on npm:**
- `packageManager`: `[email protected]` → `[email protected]`. The lockfile (`package-lock.json`) and CI (`npm ci / npm run lint / npm run type-check / npm run build`) have always used npm; the pnpm declaration was aspirational and would have forced contributors with corepack enabled into a tool the repo doesn't actually support.
- Added `engines`: `node >=20 <21`, `npm >=10` so CI, Docker, and a fresh laptop clone all land on the same runtime.
## Verification
- `npm ci` — 465 packages, no warnings.
- `npm run lint` — `next lint`: **No ESLint warnings or errors**.
- `npm run type-check` — `tsc --noEmit` clean.
- `npm run build` — Next.js 14.2.35 compiled **19 pages successfully**: `/`, `/access`, `/addresses`, `/analytics`, `/blocks`, `/blocks/[number]`, `/bridge`, `/docs`, `/docs/gru`, `/docs/transaction-compliance`, `/docs/transaction-review`, `/home`, `/liquidity`, `/more`, `/operations`, `/operator`, `/pools`, `/routes`, `/search`, `/system`, `/tokens`, `/tokens/[address]`, `/transactions`, `/transactions/[hash]`, `/wallet`, `/watchlist`, `/weth`. No warnings.
## Completion criterion advanced
> **5. Frontend housekeeping** — "one router; one package manager; build is reproducible from the lockfile."
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary
PR #9 of the 11-PR completion sequence. Fixes the 'unfinished router migration + inconsistent packageManager' finding from the review.
Changes
Router decision: keep
pages/, deleteapp/.src/app/only ever containedglobals.css; every actual route lives undersrc/pages/. Keeping both routers in the tree made the build surface area ambiguous and left a trap where a future contributor could add a new route undersrc/app/and break Next's routing resolution.CSS moved.
src/app/globals.css→src/styles/globals.css._app.tsx's import was updated accordingly. No-op at runtime; CSS payload is byte-identical.Tailwind content glob updated.
./src/app/**/*.{js,ts,jsx,tsx,mdx}→./src/styles/**/*.css. Thesrc/components/**andsrc/pages/**globs are unchanged.Unified on npm:
packageManager:[email protected]→[email protected]. The lockfile (package-lock.json) and CI (npm ci / npm run lint / npm run type-check / npm run build) have always used npm; the pnpm declaration was aspirational and would have forced contributors with corepack enabled into a tool the repo doesn't actually support.engines:node >=20 <21,npm >=10so CI, Docker, and a fresh laptop clone all land on the same runtime.Verification
npm ci— 465 packages, no warnings.npm run lint—next lint: No ESLint warnings or errors.npm run type-check—tsc --noEmitclean.npm run build— Next.js 14.2.35 compiled 19 pages successfully:/,/access,/addresses,/analytics,/blocks,/blocks/[number],/bridge,/docs,/docs/gru,/docs/transaction-compliance,/docs/transaction-review,/home,/liquidity,/more,/operations,/operator,/pools,/routes,/search,/system,/tokens,/tokens/[address],/transactions,/transactions/[hash],/wallet,/watchlist,/weth. No warnings.Completion criterion advanced