mirror of
https://github.com/Dvorinka/Bookra.git
synced 2026-06-03 20:13:00 +00:00
da5ba13eab
This commit introduces a major overhaul of the user interface, transitioning from a basic structure to a feature-rich dashboard system. Key improvements include:
- **Dashboard Implementation**: Added a complete dashboard routing system with dedicated pages for Overview, Bookings, Customers, Zones, Billing, and Settings.
- **New UI Components**: Introduced a variety of high-quality components including `AnimatedList`, `FloatingDock`, `HoverFeatureCards`, `VideoPlayer` (with ambient glow effect), `PinnedList`, and `DashboardMockup`.
- **Enhanced Dashboard Features**:
- Integrated real-time KPI cards and activity timelines.
- Implemented a multi-view calendar system.
- Added customer and booking management interfaces with filtering and search capabilities.
- Added a zone/location management view with map integration.
- **Branding & Visuals**: Updated the application with new SVG logos (horizontal and vertical variants) and implemented dark/light mode optimized branding.
- **Internationalization**: Expanded i18n support with comprehensive Czech and English translations for the new dashboard and integration modules.
- **Integration Tools**: Added a new `IntegrationModal` allowing users to easily embed Bookra widgets via HTML, React, SolidJS, or PHP.
- **Backend Support**: Updated the booking service to provide comprehensive dashboard summary data, including historical booking records for charts.
Bookra Backend
Go + Gin API for Bookra, designed for Railway deployment with Neon Auth, Neon Postgres, and Paddle billing.
Commands
go run ./cmd/api
go build ./...
npm run db:generate
npm run db:migrate:status
npm run db:migrate:up
Environment
BOOKRA_FRONTEND_URLallowed browser originBOOKRA_DATABASE_URLNeon pooled connectionBOOKRA_DATABASE_DIRECT_URLNeon direct connection for migrations/admin tasksBOOKRA_NEON_AUTH_URLNeon Auth base URL used for JWKS verificationBOOKRA_AUTH_JWT_SECREToptional local JWT fallback when not using Neon AuthBOOKRA_JOB_RUNNER_KEYshared secret for remote reminder dispatch callsBOOKRA_EMAIL_FROMsender identity for email remindersBOOKRA_PADDLE_ENVbilling environment:sandboxorliveBOOKRA_PADDLE_API_KEYPaddle API keyBOOKRA_PADDLE_WEBHOOK_SECRETPaddle notification destination secretBOOKRA_PADDLE_{STARTER,PRO,BUSINESS}_{CZK,USD}_PRICE_IDPaddle price IDsBOOKRA_UMAMI_API_URLandBOOKRA_UMAMI_API_KEYoptional analytics integration
Notes
- Auth verification is isolated in
internal/auth. - OpenAPI lives in
openapi/bookra.openapi.yaml. - SQL migrations live in
migrations/. sqlc.yamlis wired throughnpm run db:generate.- Goose migrations are wired through
npm run db:migrate:*and use the Neon direct connection URL. - Reminder dispatch now runs through
POST /v1/internal/jobs/reminders/dispatchwithX-Bookra-Job-Key.
Production Auth
Bookra production auth should use Neon Auth directly:
- frontend uses
VITE_NEON_AUTH_URL - backend verifies Neon JWTs with
BOOKRA_NEON_AUTH_URL - auth-service may stay deployed for standalone auth/admin workflows, but backend billing and app APIs do not depend on it
Trusted redirect domains in Neon Auth should include your frontend origin such as https://bookra.eu, plus local dev origins when needed.
Paddle Setup
Get these values from Paddle dashboard:
BOOKRA_PADDLE_ENV:sandboxfor testing,livefor productionBOOKRA_PADDLE_API_KEY: Developer tools -> AuthenticationBOOKRA_PADDLE_WEBHOOK_SECRET: Notification settings -> destination secret keyBOOKRA_PADDLE_*_PRICE_ID: Catalog -> each SaaS plan recurring price ID
Create one recurring price per plan/currency you support:
starterczkstarterusdproczkprousdbusinessczkbusinessusd
Set your webhook destination to:
POST /v1/webhooks/paddle
POST /api/paddle_webhook
Use Paddle webhook simulator for event testing.