QiAccess Homepage Local Validation Report
Date: 2026-05-24
Scope
Validate the local Homepage-powered QiAccess repo in place, with qiaccess/ as the active deployment/config layer and without touching server, Cloudflare, or Tailscale deployment.
Files Cleaned
- Removed duplicate root/public copies that were clearly redundant:
public/* (2).*public/locales/en/common (2).jsonpublic/locales/es/common (2).json- Removed generated root build artifacts:
tailwind.config.d.tstailwind.config.jstsconfig.app.tsbuildinfotsconfig.node.tsbuildinfo- Removed generated validation artifacts:
- root
.next/ - root
config/ _audit/tmp_dev_check/qiaccess/config/logs/
Files Retained As Legacy / Reference
.legacy/_QiAccess_Start/.legacy/_QiAccess_Start/_audit/....legacy/_QiAccess_Start/root_pre_homepage/package.vite-portal.json.legacy/_QiAccess_Start/root_pre_homepage/package-lock.vite-portal.jsonREADME.mddocs/notes/ADR-0011_homepage_powered_qiaccess.md_audit/2026-05-24_qiaccess_homepage_conversion_report.md
Active Root Fixes Applied
- Promoted the Homepage root package file into the active filename:
package (2).json->package.json- Promoted the Homepage Tailwind config into the active filename:
tailwind.config (2).js->tailwind.config.js- Fixed malformed
jsconfig.jsonJSON syntax. - Replaced the old Vite portal root
tsconfig.jsonstub with a Next-compatible root config, then let Next normalize it during build. - Added a committed non-secret
.envfile: HOMEPAGE_CONFIG_DIR=./qiaccess/config- This makes plain local
npm run build/npm run devtarget the active QiAccess config by default.
Commands Run
git status --shortpnpm installnpm run buildHOMEPAGE_CONFIG_DIR=... npm run buildnpm run buildafter.envwas addednpm run dev- Background dev startup probes against the repo-local Next dev server
- YAML parse check for:
qiaccess/config/settings.yamlqiaccess/config/services.yamlqiaccess/config/bookmarks.yamlqiaccess/config/widgets.yamlqiaccess/config/docker.yaml
Build Result
- Final result: success
- Verified plain
npm run buildworks from the repo root after.envwas added. - Build target used the active
qiaccess/configlayer.
Dev Result
- Final result: success
- Verified
npm run devreaches a ready state with.envloaded. - During validation, port selection shifted because existing local ports were occupied:
- a prior repo-local Next dev instance was already on
3001 - the latest validation run reported ready on
3002 - Repo-local validation dev processes were then stopped, and
3001/3002no longer responded at the end of the run.
Errors Fixed
spawn EPERMduring build/dev inside the sandbox- Cause: local environment/sandbox restriction, not source breakage
-
Resolution: reran build/dev validation outside the sandbox
-
Homepage package collision at repo root
- Cause: old Vite portal
package.jsonwas still active while the actual Homepage package sat atpackage (2).json -
Resolution: moved the old portal package files into
.legacy/_QiAccess_Start/root_pre_homepage/and promoted the Homepage package topackage.json -
Tailwind config collision
- Cause: Homepage Tailwind config was stranded at
tailwind.config (2).js -
Resolution: promoted it to
tailwind.config.js -
Build import resolution failure
- Exact failure:
Module not found: Can't resolve 'utils/... - Cause:
- malformed
jsconfig.json - old Vite-style root
tsconfig.jsonprevented Next from using the intended alias base
- malformed
-
Resolution:
- fixed
jsconfig.json - replaced the root
tsconfig.jsonwith a Next-compatible root config
- fixed
-
Wrong config directory during local build
- Cause: Homepage defaults to root
config/unlessHOMEPAGE_CONFIG_DIRis set - Resolution: added
.envwithHOMEPAGE_CONFIG_DIR=./qiaccess/config
YAML / Config Validation
- Parsed successfully:
qiaccess/config/settings.yamlqiaccess/config/services.yamlqiaccess/config/bookmarks.yamlqiaccess/config/widgets.yamlqiaccess/config/docker.yaml- Homepage also generated
qiaccess/config/kubernetes.yamlduring build because it expects that config file to exist. - No secrets were added.
- Placeholder URLs and TODO widget notes remain placeholder-only.
Remaining Issues
- Next still warns that it inferred the workspace root from
C:\QiLabs\pnpm-workspace.yaml. - Next still warns that
middlewareis deprecated in favor ofproxy. - The working tree is still a large intentional conversion diff, not a tiny patch.
qiaccess/config/kubernetes.yamlis currently just the default sample file generated by Homepage.
Ready To Push?
- Yes, from a local repo validation standpoint.
- Reason: dependency install succeeded, plain local build succeeded, dev boot succeeded, and the active QiAccess YAML set parses cleanly.
- Caveat: review
git statusbefore commit because the conversion includes many intentional tracked deletions and untracked additions, not just the files touched in this validation pass.
Server Deployment Ready?
- No.
- Server deployment was not attempted and should remain a separate step after commit/push.