Files
LexAI/packages/website/README.md
john kevin asprec 3150e16248
All checks were successful
CI — Website / Website — typecheck, build (pull_request) Successful in 57s
google search index
2026-09-03 21:40:55 +08:00

3.2 KiB
Raw Blame History

LexAI website

Marketing site for the LexAI monorepo: Home, Docs, Contribute, Community.

Develop

# from repo root
npm run website:install
npm run website:dev

Or inside this package:

npm install
npm run dev

Build

npm run website:build
# → packages/website/dist/

Preview production build locally: npm run website:preview (Vite, localhost only).

Production start (what Coolify should run): npm start — serves dist/ on 0.0.0.0:$PORT (default 3000).

Uses BrowserRouter. Production nginx/Node serve /docs, /contribute, and /community as real paths (legacy #/docs links rewrite on load). Unknown paths return HTTP 404.

Deploy on Coolify

This package is a static Vite build. No LexAI API keys or env vars. Do not add LEXAI_API_KEY.

Cannot GET / means Coolify started a Node process that is not serving dist/ (no start command, or "static site" pointed at the wrong folder). Fix: use one of the two setups below, then Redeploy.

Required on either setup

  1. + New → Resource → Private Repository (with deploy key) (Gitea).
  2. Repo SSH URL, for example git@git.juankibin.space:kibin/LexAI.git. If Gitea SSH is not on port 22, use ssh://git@git.juankibin.space:PORT/kibin/LexAI.git.
  3. Add Coolify’s public deploy key to the Gitea repo: Settings → Deploy / Access Keys (read-only).
  4. Branch: dev or main.
  5. Base Directory: packages/website — no leading slash. Root npm run build builds Chrome, not this site.
  6. Optional Watch Paths: packages/website.
  7. Set the domain, deploy, open https://lexai.juankibin.space/ (docs: /docs).
  1. Build Pack: Dockerfile.
  2. Leave Is it a static site? off.
  3. Ports Exposes: 80.
  4. If Coolify asks for a Dockerfile path: packages/website/Dockerfile (or omit it when Base Directory is already packages/website).

Option B — Nixpacks

  1. Build Pack: Nixpacks.
  2. Leave Is it a static site? off. Nixpacks runs npm run build then node server.mjs.
  3. Start command (if the field is shown): npm start or node server.mjs.
  4. Ports Exposes: 3000.
  5. Optional env: NIXPACKS_NODE_VERSION=22. Do not set NODE_ENV=production at build time — Vite is a devDependency and npm ci would skip it.

Do not tick "Is it a static site?" with Publish Directory /dist. The leading slash is an absolute path (/dist on the container), which is empty, and Coolify then answers Cannot GET /.

If you already created the resource: uncheck static site, set Base Directory and port as above, then Redeploy (no need to recreate the app).

Auto-deploy: Coolify resource → Webhooks → copy the URL + secret into Gitea Settings → Webhooks (push events).

After the site is live on https://lexai.juankibin.space/:

  1. Open Google Search Console, add a URL-prefix property for that origin, and verify (HTML file or DNS).
  2. Sitemaps → submit https://lexai.juankibin.space/sitemap.xml.
  3. URL inspection → request indexing for / and /docs.

Crawlers should see Allow: / at /robots.txt and unique titles on /, /docs, /contribute, and /community.