Files
voculinux/web
xavierk 33c7c940a0
CI / security (pull_request) Successful in 1m10s
CI / lint (pull_request) Successful in 22s
CI / ai-review (pull_request) Successful in 7s
test(web): avoid path.join on a parameter in the rebrand scan
Semgrep flagged the directory walker as a possible path traversal. The walk
now runs from an absolute src root and builds child paths from directory
entries only.
2026-11-06 21:36:55 +05:30
..

Voculinux website

Marketing site for voculinux.com, built with Next.js and deployed as a static export (GitHub Pages).

Product claims and design constraints: PRODUCT.md, DESIGN.md. Agent notes: AGENTS.md.

Development

npm install
npm run dev

Production build

npm install
npm run build

Static output is written to out/.

Local preview of the build

cd out
python3 -m http.server 3000

Open http://localhost:3000.

Scripts

Script Purpose
npm run dev Dev server
npm run build Production static export
npm run deploy Build and prepare GitHub Pages (.nojekyll, CNAME)
npm run lint ESLint
npm run typecheck TypeScript

Deployment

Push to main triggers the site workflow. Production host: voculinux.com.

Manual path:

cd web
npm install
npm run deploy

That produces out/ with .nojekyll and a CNAME for voculinux.com.

Layout

web/
├── src/
│   ├── app/            # Next.js app routes
│   ├── components/
│   │   ├── site-chrome.tsx
│   │   └── ui/         # Reusable UI components
│   ├── hooks/
│   └── lib/
├── public/             # Static assets and screenshots
├── out/                # Build output (generated)
└── package.json

Configuration notes

  • Custom domain: deploy script writes out/CNAME
  • Subdirectory deploy: set basePath in next.config.js if needed
  • Visual system: warm paper, system type, documented in DESIGN.md

Troubleshooting

Symptom Check
Module not found npm install
Type errors npm run typecheck
Lint errors npm run lint
404 on GitHub Pages Ensure out/.nojekyll exists
Assets 404 Confirm basePath matches deploy path

License

Same as the main Voculinux project (AGPL-3.0).