8c7e1c70de9a1f6f9f99be0f74f3a4d528ccdbe9
Fixes the 'unfinished router migration + inconsistent packageManager' finding from the review: 1. 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 might add a new route under src/app/ and break Next's routing resolution. PR #9 commits to the pages router and removes src/app/. 2. globals.css moved from src/app/globals.css to src/styles/globals.css (so it no longer sits under an otherwise-deleted app router folder) and _app.tsx's import was updated accordingly. This is a no-op at runtime: the CSS payload is byte-identical. 3. tailwind.config.js had './src/app/**/*.{js,ts,jsx,tsx,mdx}' at the top of its content glob list. Replaced with './src/styles/**/*.css' so Tailwind still sees globals.css; the src/components/** and src/pages/** globs are unchanged. 4. Unified the package manager on npm: - package.json packageManager: 'pnpm@10.0.0' -> 'npm@10.8.2'. The lockfile (package-lock.json) and CI (npm ci / npm run lint / npm run type-check / npm run build in .github/workflows/ci.yml) 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 an 'engines' block pinning node >=20 <21 and 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; every route (/, /blocks, /transactions, /tokens, /bridge, /analytics, /operator, /docs, /wallet, etc.) rendered without emitting a warning. Advances completion criterion 5 (frontend housekeeping): 'one router; one package manager; build is reproducible from the lockfile.'
SolaceScan Explorer - Tiered Architecture
🚀 Quick Start - Complete Deployment
Execute this single command to complete all deployment steps:
cd ~/projects/proxmox/explorer-monorepo
bash EXECUTE_DEPLOYMENT.sh
What This Does
- ✅ Tests database connection
- ✅ Runs migration (if needed)
- ✅ Stops existing server
- ✅ Starts server with database
- ✅ Tests all endpoints
- ✅ Provides status summary
Manual Execution
If the script doesn't work, see START_HERE.md for step-by-step manual commands.
Frontend
- Production (canonical target): the current Next.js standalone frontend in
frontend/src/, built fromfrontend/withnpm run buildand deployed to VMID 5000 as a Node service behind nginx. - Canonical deploy script:
./scripts/deploy-next-frontend-to-vmid5000.sh - Canonical nginx wiring: keep
/api,/api/config/*,/explorer-api/*,/token-aggregation/api/v1/*,/snap/, and/health; proxy/and/_next/to the frontend service usingdeployment/common/nginx-next-frontend-proxy.conf. - Legacy fallback only: the static SPA (
frontend/public/index.html+explorer-spa.js) remains in-repo for compatibility/reference, but it is not a supported primary deployment target. - Architecture command center:
frontend/public/chain138-command-center.html— tabbed Mermaid topology (Chain 138 hub, network, stack, flows, cross-chain, cW Mainnet, off-chain, integrations). Linked from the SPA More → Explore → Visual Command Center. - Legacy static deploy scripts:
./scripts/deploy-frontend-to-vmid5000.shand./scripts/deploy.shnow fail fast with a deprecation message and point to the canonical Next.js deploy path. - Frontend review & tasks: frontend/FRONTEND_REVIEW.md, frontend/FRONTEND_TASKS_AND_REVIEW.md
Documentation
docs/README.md— Documentation overview and indexdocs/EXPLORER_API_ACCESS.md— API access, 502 fix, CSP, frontend deploySTART_HERE.md— Quick start with all commandsCOMPLETE_DEPLOYMENT.md— Detailed deployment stepsDEPLOYMENT_COMPLETE_FINAL.md— Final status reportREADME_DEPLOYMENT.md— Deployment quick referencedeployment/DEPLOYMENT_GUIDE.md— Full LXC/Nginx/Cloudflare deployment guidedocs/INDEX.md— Bridge and operations doc index
Architecture
- Track 1 (Public): RPC Gateway - No authentication required
- Track 2 (Approved): Indexed Explorer - Requires authentication
- Track 3 (Analytics): Analytics Dashboard - Requires Track 3+
- Track 4 (Operator): Operator Tools - Requires Track 4 + IP whitelist
Configuration
- Database User:
explorer - Database Password:
***REDACTED-LEGACY-PW*** - RPC URL:
http://192.168.11.250:8545 - Chain ID:
138 - Port:
8080
Reusable libs (extraction)
Reusable components live under backend/libs/ and frontend/libs/ and may be split into separate repos and linked via git submodules. Clone with submodules:
git clone --recurse-submodules <repo-url>
# or after clone:
git submodule update --init --recursive
See docs/REUSABLE_COMPONENTS_EXTRACTION_PLAN.md for the full plan.
Testing
- All unit/lint:
make test— backendgo test ./...and frontendnpm test(lint + type-check). - Backend:
cd backend && go test ./...— API tests run without a real DB; health returns 200 or 503, DB-dependent endpoints return 503 when DB is nil. - Frontend:
cd frontend && npm run buildornpm test— Next.js build (includes lint) or lint + type-check only. - E2E:
make test-e2eornpm run e2efrom repo root — Playwright tests against https://blockscout.defi-oracle.io by default; useEXPLORER_URL=http://localhost:3000for local.
Status
✅ All implementation complete
✅ All scripts ready
✅ All documentation complete
✅ Frontend: C1–C4, M1–M4, H4, H5, L2, L4 done; H1/H2/H3 (escapeHtml/safe href) in place; optional L1, L3 remain
✅ CI: backend + frontend tests; lint job runs go vet, npm run lint, npm run type-check
✅ Tests: make test, make test-e2e, make build all pass
Ready for deployment!
Description
Languages
Shell
32.1%
TypeScript
26.6%
Go
20%
JavaScript
16.4%
HTML
4.4%
Other
0.4%