Arch-based, snapshot-first Linux with a script-driven installer and its own package tooling.
Documentation portal: landing + docs, in English and Spanish.
Live site • Wiki mirror • Package repository • aarch64 build
equislinux/web is the public documentation portal of the X Linux project:
- Landing — hero with the X mark and the ISO download, screenshot showcase
(
public/showcase/), a dedicated interactive Three.js system map, a "Why X" feature grid, install steps, the repository grid, the three packaging paths (pacman[x], native.xpforxpmand thexpm-aurAUR helper), the kernel channel/pipeline section and a docs call to action. The maps and stacks are client-only Three.js scenes with static DOM fallbacks, keyboard-accessible controls and a reduced-motion path. - Docs — every published repository of the organization documented in a browsable sidebar, rendered from markdown, with a language switch (English/Spanish).
The documentation is compiled in content/<lang>/<section>/. Each page links
back to its source file in this repository. The original guides live in each
project repository; this repo keeps the published copy used by the portal.
The private ops repository is not part of the portal and its documentation
must never be copied into content/.
- Next.js 16 (App Router) with fully static export.
- Tailwind CSS 4 with a monochrome design system (black/gray in light, white/gray in dark) and a light/dark toggle.
- Geist Sans and Mono via
next/font. - react-markdown + remark-gfm for the docs.
- Three.js + React Three Fiber/Drei for the interactive hero, system map,
generation stack, desktop layers and kernel pipeline (
components/three/), loaded client-side only.
app/
page.tsx # English landing at the root
[lang]/page.tsx # /en and /es landings
[lang]/docs/page.tsx # docs home (overview + section cards)
[lang]/docs/[...slug]/ # one route for every docs page
download/latest/page.tsx # stable redirect to the newest ISO
components/ # Navbar, Footer, Hero, Downloads, Showcase,
# Features, Install, RepoGrid, DocsShell, Markdown
components/three/ # SystemOrbit, LayerStack, GenerationStack (Three.js)
content/
en/<section>/<page>.md # published documentation (English)
es/<section>/<page>.md # published documentation (Spanish)
data/
releases.json # newest ISO/WSL release (stable download link)
lib/
docs.ts # sections manifest + markdown loaders
i18n.ts # UI strings (en/es)
site.ts # repository list
public/ # logo, showcase screenshots and video
npm install
npm run dev # http://localhost:3000
npm run build # static export in ./out
npm run preview # serve ./out locally (npx serve)The site is served at https://equislinux.org as a plain static export.
npm run build writes everything to out/ and there is no server-side runtime:
- Run
npm run build. - Open the Hostinger file manager (or connect over SFTP/FTP).
- Upload the contents of
out/topublic_html/(not theoutfolder itself). The root of the domain must containindex.html,_next/,showcase/, etc. - If Hostinger caches the site, purge the cache from hPanel.
Notes:
- The site is served from the domain root, so
basePathis disabled by default. If it must live in a subdirectory, build withNEXT_PUBLIC_BASE_PATH=/subdir npm run build; the same value is used for the public assets inlib/site.ts. trailingSlash: truemakes every route a directory with anindex.html, so Apache/LiteSpeed on Hostinger serves/en/docs/x/without extra rules.public/.htaccessis copied toout/and sets the 404 page, disables directory listings and adds caching/compression on Hostinger. It is a hidden file: enable "show hidden files" in the Hostinger file manager or copy it over SFTP.- The canonical URL is set with
SITE_URLinlib/site.ts(https://equislinux.org); override it withNEXT_PUBLIC_SITE_URLonly if the domain changes. - There is no GitHub Pages workflow anymore: GitHub only stores the source and
the history of the portal. Deploys are manual uploads of
out/. - Hostinger only serves the website. ISOs and packages stay on SourceForge and
the
[x]repository respectively;/download/latest/is just a redirect. .nojekylland the olddeploy.ymlwere removed with the migration.
- Add or edit the markdown file under
content/en/<section>/andcontent/es/<section>/. - Register new files in the
SECTIONSmanifest inlib/docs.ts. - Add or update the corresponding repository entry in
lib/site.tswhen the section belongs to a repo that should appear in the landing grid. - Run
npm run build, checkout/, and upload it to Hostinger.
Every page must exist in both languages. Internal .md links are rewritten by
components/Markdown.tsx to the equivalent docs route; relative files outside
the docs tree point to the section repository on GitHub.