Configuration
Environment variables, deployment, and development setup for Manage My Booking.
Environment variables
| Variable | Description | Default |
|---|---|---|
NEXT_PUBLIC_STAGE | Deployment stage (production, preview, development) | — |
NEXT_PUBLIC_GRAPHQL_API_URL | GraphQL API endpoint | http://localhost:8082/graphql |
The GraphQL endpoint is determined by the stage:
| Stage | API URL |
|---|---|
| Production | https://api.production.holibob.tech/graphql |
| Preview | https://{stage}.api.preview.staging.holibob.tech/graphql |
| Development | http://localhost:8082/graphql |
API headers
Every GraphQL request includes the following headers:
| Header | Value |
|---|---|
x-holibob-application | MANAGE_MY_BOOKING |
x-holibob-language | Language code from booking (e.g. en) |
x-holibob-currency | Currency code from booking (e.g. GBP) |
ssrOrigin | https://demo.booking.holibob.tech |
Development
Prerequisites
- Node.js 22.x
- pnpm
Setup
# From the monorepo root
pnpm install
# Start the development server (port 3006)
cd apps/manage-my-booking-site
pnpm dev
Available scripts
| Script | Description |
|---|---|
pnpm dev | Start development server on port 3006 |
pnpm build | Build the Next.js application |
pnpm start | Start production server |
pnpm tsc | Run TypeScript type checking |
pnpm lint | Run ESLint |
Deployment
The application is deployed using SST (Serverless Stack) to AWS:
- CloudFront — CDN for content delivery
- Lambda@Edge — Server-side rendering
- S3 — Static asset storage
- Route 53 — DNS management
- ACM — SSL certificates
Deploy commands
| Command | Description |
|---|---|
pnpm deploy:production | Deploy to production |
pnpm deploy:preview | Deploy to preview environment |
pnpm destroy:preview | Remove preview deployment |
Image configuration
Remote images are restricted to images.holibob.tech to prevent loading from arbitrary sources.
CORS
The application sets permissive CORS headers for all routes:
- Allowed origins:
* - Allowed methods:
GET,POST,PUT,DELETE,OPTIONS - Allowed headers:
Content-Type,Authorization