79 lines
3.4 KiB
Markdown
79 lines
3.4 KiB
Markdown
# Ink website
|
|
|
|
Marketing and download site for [Ink](../Ink), a calm, offline Markdown notes app.
|
|
Astro (static output), TypeScript, plain CSS, [Bun](https://bun.sh). No analytics, no cookies, no third-party requests.
|
|
|
|
## Run
|
|
|
|
```sh
|
|
bun install
|
|
bun run dev # http://localhost:4321
|
|
bun run build # astro check + static build into dist/
|
|
bun run preview # serve dist/
|
|
```
|
|
|
|
## Where things live
|
|
|
|
| What | Where |
|
|
| --- | --- |
|
|
| Name, version, size, checksum, download and repo URLs | `src/config.ts` (the only file to edit for a release) |
|
|
| Changelog entries | `src/content/changelog/*.md` (front matter: `version`, `date`, `title`, `prerelease`) |
|
|
| Screenshots | `src/assets/screens/`, described in `src/lib/screens.ts` |
|
|
| Theme tokens | top of `src/styles/global.css` |
|
|
| Pages | `src/pages/` |
|
|
|
|
### Releasing a new version
|
|
|
|
1. Build the app (`bun run dist` in the Ink repo) and upload the AppImage to your release page.
|
|
2. In `src/config.ts` update `version`, `releaseDate`, the platform `bytes` and `sha256` (`sha256sum Ink-*.AppImage`).
|
|
3. Add `src/content/changelog/<version>.md`. The build warns if the newest entry differs from `config.version`.
|
|
|
|
### Screenshots
|
|
|
|
Each screenshot is a name plus two theme variants, 16:10, 2400x1500:
|
|
|
|
```
|
|
src/assets/screens/editor-dark.png editor-light.png
|
|
```
|
|
|
|
A real `.png`/`.webp`/`.jpg` automatically replaces a placeholder `.svg` of the same name, and a bare
|
|
`editor.png` is used for both themes. `<Screenshot name="editor" />` handles sizes, lazy loading
|
|
and picking the image for the visitor's colour scheme.
|
|
|
|
**Regenerating them from the real app** (read only; nothing in the Ink repo is touched):
|
|
|
|
```sh
|
|
bun run screenshots # = sh scripts/capture/run.sh
|
|
```
|
|
|
|
This runs Ink headless (Electron, `--ozone-platform=headless`) against a throw-away notes folder
|
|
that `scripts/capture/seed-vault.cjs` builds in `/tmp` (about 40 notes, a board, a canvas, a few
|
|
page versions, tag colours). `scenes.cjs` drives the UI the way a user would (Ctrl+K, `/`, Ctrl+G ...)
|
|
and saves both themes straight into `src/assets/screens/`. Link-card previews are stubbed so no
|
|
network is used. Edit the seed or a scene and re-run to change a shot. Needs the Ink repo built and
|
|
installed next to this one (`INK_APP=/path/to/Ink` overrides the location; `SCENES=editor,canvas`
|
|
limits what is captured).
|
|
|
|
To add a new screenshot, add it to `src/lib/screens.ts`, add a scene, and run `bun run assets` for a
|
|
placeholder in the meantime.
|
|
|
|
## Deploy
|
|
|
|
The output is plain static files in `dist/`. Set two environment variables at build time:
|
|
|
|
- `SITE_URL`: the public origin, e.g. `https://ink.example` (used for canonical URLs, sitemap, Open Graph).
|
|
- `BASE_PATH`: only for a sub-path such as a GitHub Pages project site (`/ink-website`). Default `/`.
|
|
|
|
**Cloudflare Pages / Netlify**: build command `bun run build`, output directory `dist`, set `SITE_URL`.
|
|
|
|
**GitHub Pages**: `.github/workflows/deploy.yml` builds with Bun and publishes `dist/`.
|
|
Edit `SITE_URL` and `BASE_PATH` in it, then enable *Settings → Pages → Source: GitHub Actions*.
|
|
|
|
Add `Sitemap: <SITE_URL>/sitemap-index.xml` to `public/robots.txt` once the URL is known.
|
|
|
|
## Notes
|
|
|
|
- `public/og.png` (1200x630) is a static file; replace it if the tagline changes.
|
|
- The `typescript` dependency is pinned to 6.x because `astro check` does not support TypeScript 7 yet.
|
|
- Builds are unsigned and Windows/macOS are "coming soon" by design: see `platforms.*.available` in `config.ts`.
|