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

79 lines
3.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# LexAI website
Marketing site for the LexAI monorepo: Home, Docs, Contribute, Community.
## Develop
```bash
# from repo root
npm run website:install
npm run website:dev
```
Or inside this package:
```bash
npm install
npm run dev
```
## Build
```bash
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`).
### Option A — Dockerfile (recommended)
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).
## Google Search
After the site is live on `https://lexai.juankibin.space/`:
1. Open [Google Search Console](https://search.google.com/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`.