The refined global discovery platform for antiques, art, and design objects.
Search across dealers, auction houses, shops, and marketplaces in one considered experience.
Aura Historia brings together antiques, art, and design objects from a global network of dealers, auction houses, shops, and marketplaces. It gives collectors and market professionals a single place to discover objects, compare sources, and follow opportunities across languages and currencies.
The webapp supports:
- Search and discovery for objects and shops, including recently added listings.
- Multilingual, localized browsing and SEO in German, English, Spanish, French, and Italian.
- Accounts with watchlists, saved searches, notifications, and matching.
- Partner tools for shop onboarding, product ingestion, access tokens, and OAuth integrations.
- Administrative workflows and privacy-aware account experiences.
| Area | Tools |
|---|---|
| Application | React 19, TypeScript, Vite |
| Routing & data | TanStack Start, Router, Query, Table |
| Styling | Tailwind CSS v4, shadcn/ui, Radix UI |
| Identity | AWS Amplify and Amazon Cognito |
| Internationalization | i18next and react-i18next |
| Quality | Vitest, Playwright, Testing Library, Biome, SonarCloud |
| Deployment | Cloudflare Workers |
- Node.js 24
- pnpm 11.17.0 (the version pinned by this repository)
pnpm install
pnpm devThe development server runs at http://localhost:3000.
The application has sensible local defaults. To enable authenticated and API-backed flows, create a local .env file with the values provided for your environment:
VITE_API_URL=https://api.example.com
VITE_APP_URL=http://localhost:3000
VITE_USER_POOL_ID=your-cognito-user-pool-id
VITE_USER_POOL_CLIENT_ID=your-cognito-user-pool-client-idOptional feature flags:
VITE_FEATURE_LOGIN_ENABLED=true
VITE_FEATURE_SEARCH_ENABLED=trueDo not commit credentials, tokens, or production configuration.
Continuous integration checks formatting, linting, type safety, unit tests, build output, and SonarCloud analysis. End-to-end tests run separately on changes to main.
| Command | Description |
|---|---|
pnpm dev |
Start the Vite development server on port 3000. |
pnpm build |
Create a production build. |
pnpm preview |
Serve the production build locally. |
pnpm test |
Run the Vitest test suite. |
pnpm test:e2e |
Run Playwright end-to-end tests. |
pnpm lint |
Run Biome linting. |
pnpm check |
Run Biome’s full check. |
pnpm format:fix |
Format supported files with Biome. |
pnpm exec tsc --noEmit |
Type-check without emitting files. |
pnpm openapi-ts |
Regenerate the OpenAPI client and partner-products spec. |
Install Playwright browsers before running end-to-end tests locally:
pnpm exec playwright installsrc/
├── routes/ # TanStack file routes, loaders, heads, and API routes
├── features/ # Product feature slices
├── components/ # Shared and domain UI components
├── data/ # Internal domain types and API mappings
├── hooks/ # Shared and domain hooks
├── i18n/ # Language setup and locale dictionaries
├── lib/ # Shared libraries, server helpers, and validation
└── client/ # Generated OpenAPI client — do not edit by hand
docs/ # Product, design, privacy, architecture, and hydration guidance
public/ # Static assets and public specifications
- Use pnpm; do not use npm or Yarn for project commands.
src/client/**andsrc/routeTree.gen.tsare generated. Change their source configuration, then regenerate them.- User-facing changes require coverage for all supported locales:
de,en,es,fr, andit. - Follow the project guidance in
AGENTS.mdand the topic-specific documents indocs/.
Partner and integration endpoints are documented in the OpenAPI reference.
The application deploys to Cloudflare Workers after CI succeeds:
| Source | Environment | URL |
|---|---|---|
develop |
Staging | stage.aura-historia.com |
Protected YYYYMMDD-HHMM release tag from develop history |
Production | aura-historia.com |
Release timestamps use UTC. Production deployment is CI-only: create and push a protected, immutable release tag after the corresponding develop commit has passed CI. CI validates the tag timestamp and that its commit belongs to develop history, uploads it to Cloudflare with the same version tag, then deploys that version. This supports re-deploying or rolling back to a named release in Cloudflare.
To redeploy a previous release, run the Redeploy production release workflow from GitHub Actions and provide its release tag. The workflow requires the same production-environment protections and promotes the already-uploaded Cloudflare Worker version without rebuilding it.
Manual staging deployments require CLOUDFLARE_API_TOKEN and CLOUDFLARE_ACCOUNT_ID:
# Staging
pnpm deploy:stagingThis project is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (CC BY-NC-SA 4.0).
