Files
levkin.ca/README.md
ilia 6949bee6e6 Add SEO baseline + rebuild www/ (mobile toc/prefs polish, responsive viewport)
SEO: robots.txt, sitemap.xml, canonical, OG/Twitter tags, JSON-LD
(ProfessionalService) on / and /folders/, plus a reused screenshot as
og-image.png. prepare-www.mjs now copies robots/sitemap/og-image into
the build. Also carries pending mobile layout tweaks (toc/prefs bar,
viewport-fit=cover) that were already staged in the working tree.
2026-07-08 10:58:46 -04:00

91 lines
2.5 KiB
Markdown
Raw Permalink 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.
# levkin.ca
Homepage design concepts for Levkin Inc.
| Page | Path | Description |
|------|------|-------------|
| **Spec** | `/spec/` | Company story as RFC-style documentation |
| **Folder** | `/stack-folder/` | Manila folders L0L7, sticky tab stack, site previews |
**Production** (`levkin.ca`): `/` → spec, `/folders/` → stack. Dev picker at `/` only when running `npm run dev` (not deployed).
## Develop
```bash
npm install
npm run dev
```
Dev server: `http://localhost:5175` (5173 is often taken by other apps)
| Page | URL |
|------|-----|
| Home | `/` |
| Spec | `/spec/` |
| Folders | `/stack-folder/` |
## Build
```bash
npm run build
# dist/ — Vite multi-page output
npm run build:www
# www/ — production layout for nginx (commit www/ before deploy)
```
### Deploy (pve10 LXC 220)
```bash
npm run build:www
git add www/ && git commit -m "Rebuild www" && git push origin main
ssh root@10.0.10.10 'pct exec 220 -- bash -c "cd /var/www/levkin && git pull origin main"'
```
Requires DNS: `levkin.ca` and `www.levkin.ca` A → your home IP (same as other `*.levkin.ca` sites). Caddy on VM 106 proxies to `10.0.10.60:80`.
## Folder stack (`/stack-folder/`)
Eight layers with labeled tabs. Scroll pins earlier tabs on a shared rail; L7 joins last. Scroll stops when all tabs align.
- `shared/stack-scroll.js` — scroll depth, fold state, layer jump
- `stack-folder/folder-rail.js` — side rail
- `stack-folder/folder-cal.js` — Cal.com embeds
### Preview screenshots
```bash
npm run dev # separate terminal
npm run capture-previews
```
Writes PNGs used in `stack-folder/previews/` (spec, auto, caseware, iliadobkin, git-repos, cal dark/light).
### Test
```bash
npm run dev
STACK_URL=http://localhost:5175/stack-folder/ npm run test:folder
```
Playwright runs **desktop** (tab alignment at max scroll) and **mobile** (bottom tab rail, no horizontal overflow, L3 jump).
### Test on a phone
Dev server listens on your LAN (`host: true` in Vite config):
```bash
npm run dev
# open http://<your-lan-ip>:5175/stack-folder/ on the phone (same WiFi)
```
Production: [levkin.ca/folders/](https://levkin.ca/folders/) — on viewports ≤720px the side rail becomes a **bottom tab bar** (L0L7) with safe-area padding for iOS.
## Related sites
- [auto.levkin.ca](https://auto.levkin.ca)
- [caseware.levkin.ca](https://caseware.levkin.ca)
- [git.levkin.ca](https://git.levkin.ca)
- [cal.levkin.ca](https://cal.levkin.ca/ilia/consult)
- [iliadobkin.com](https://iliadobkin.com)