dexx 79460fb47d Prevent double-submit on admin forms
Disables submit buttons after first click to prevent race conditions
that could corrupt card data via concurrent writes.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-06-05 22:27:52 +03:00
2026-06-05 22:27:52 +03:00
2026-06-05 02:54:22 +03:00
2026-06-05 21:12:48 +03:00
2026-06-05 21:12:48 +03:00
2026-06-05 21:12:48 +03:00
2026-06-05 21:12:48 +03:00
2026-06-05 21:12:48 +03:00

pozor

Dark-only shame board with a static Astro front end and a tiny Elysia admin/API.

Apps

  • apps/site: Astro public board. It reads published cards from the Elysia API.
  • apps/api: Elysia admin/API. It owns cards, uploads, and the /admin panel.

Local Development

bun install
bun run dev

Open:

  • Site: http://localhost:4321
  • Admin: http://localhost:3001/admin
  • API docs: http://localhost:3001/docs
  • OpenAPI JSON: http://localhost:3001/openapi.json

Environment

The API stores cards and uploads in apps/api/.data locally. On Vercel, set BLOB_READ_WRITE_TOKEN to store cards and uploaded images in Vercel Blob.

Set these values locally and on Vercel:

ADMIN_PASSWORD=
API_URL=http://localhost:3001
PUBLIC_API_URL=http://localhost:3001
PUBLIC_SITE_URL=http://localhost:4321
BLOB_READ_WRITE_TOKEN=

For deployment, point the Astro app at the deployed API origin by setting API_URL and PUBLIC_API_URL to that origin.

Images

Cards support two image sources:

  • Image URL: direct public image URL.
  • Upload image: stored locally in development or in Vercel Blob when BLOB_READ_WRITE_TOKEN is set.

Build

bun run build

The Astro app can be hosted on Vercel as a static/front-end project. The Elysia API can be hosted on Vercel as a separate backend project using the Bun runtime.

S
Description
No description provided
Readme 147 KiB
Languages
TypeScript 67.7%
CSS 18.1%
Astro 13.9%
JavaScript 0.3%