Create the React application with locked frontend tooling #7

Open
opened 2026-11-01 20:11:28 +00:00 by viacheslavshuka · 0 comments

The website needs a reproducible browser build before product screens can share components and localization. Establish the frontend toolchain without adding a server-rendered application.

Scope

Use React, strict TypeScript, Vite, Bun installs and scripts, and a committed Bun lockfile. Keep pinned Node available for tools whose supported runtime needs it. Configure shadcn/ui, Base UI, and Tailwind.

Acceptance criteria

  • A documented locked setup starts the development application and builds static production assets. CI uses frozen installs and rejects a stale dependency lockfile.
  • Bun manages installs, scripts, and dependency auditing. Vite remains the build tool. Node and Bun are not required as production website servers.
  • The initial shell supports desktop and mobile browsers, including ordinary browser navigation from bot links. It does not create a separate Telegram Mini App.
  • Shared components support keyboard interaction and explicit accessible labels. Component-library defaults do not replace workflow accessibility checks.
  • User-facing text passes through localization support from the start. Russian is the initial interface language. The setup supports Russian plural forms.
  • Routing, localization packages, and file placement are implementation choices documented with the resulting configuration. They do not add product policies.
  • Heavy route features can load on demand. The shell does not eagerly import the calendar, all calendar locales, or Premium components.
  • The developer workflow invokes installed local tools. No script silently downloads a missing executable during an offline hook.

Validation

Build from the committed lockfile in a clean disposable environment. Check a Russian plural example, keyboard navigation, mobile layout, and direct browser navigation. Inspect the production chunks to confirm the calendar is absent from the base shell.

The website needs a reproducible browser build before product screens can share components and localization. Establish the frontend toolchain without adding a server-rendered application. ## Scope Use React, strict TypeScript, Vite, Bun installs and scripts, and a committed Bun lockfile. Keep pinned Node available for tools whose supported runtime needs it. Configure shadcn/ui, Base UI, and Tailwind. ## Acceptance criteria - A documented locked setup starts the development application and builds static production assets. CI uses frozen installs and rejects a stale dependency lockfile. - Bun manages installs, scripts, and dependency auditing. Vite remains the build tool. Node and Bun are not required as production website servers. - The initial shell supports desktop and mobile browsers, including ordinary browser navigation from bot links. It does not create a separate Telegram Mini App. - Shared components support keyboard interaction and explicit accessible labels. Component-library defaults do not replace workflow accessibility checks. - User-facing text passes through localization support from the start. Russian is the initial interface language. The setup supports Russian plural forms. - Routing, localization packages, and file placement are implementation choices documented with the resulting configuration. They do not add product policies. - Heavy route features can load on demand. The shell does not eagerly import the calendar, all calendar locales, or Premium components. - The developer workflow invokes installed local tools. No script silently downloads a missing executable during an offline hook. ## Validation Build from the committed lockfile in a clean disposable environment. Check a Russian plural example, keyboard navigation, mobile layout, and direct browser navigation. Inspect the production chunks to confirm the calendar is absent from the base shell. ## Related work - [#10: Generate and verify OpenAPI and the TypeScript client](https://code.viacheslavshuka.com/viacheslavshuka/quorum/issues/10)
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Reference
viacheslavshuka/quorum#7
No description provided.