Configuration
Environment variables, cookies, and development setup for the Storefront.
Environment variables
| Variable | Description | Default |
|---|---|---|
NEXT_PUBLIC_GRAPHQL_API_URL | GraphQL API endpoint | https://api.production.holibob.tech/graphql |
NEXT_PUBLIC_STAGE | Deployment stage (local, preview, production) | — |
GOOGLE_MAPS_API_KEY | Google Maps integration | Has default fallback |
DD_ENV | Datadog environment | — |
DD_SERVICE | Datadog service name | — |
HOLIBOB_API_KEY | API authentication key | — |
HOLIBOB_API_SECRET | API authentication secret | — |
Cookies
The Storefront uses cookies to persist state across page loads:
| Cookie | Purpose |
|---|---|
holibob-analytic-link-origin-code | Analytics tracking origin |
holibob-consumer-trip-identifier-value | Consumer trip ID or code |
holibob-consumer-trip-identifier-type | Trip identifier type (ID or CODE) |
x-holibob-client-side-consumer-trip | Client-side trip data |
x-holibob-destination-name | Selected destination |
x-holibob-destination-id | Destination ID |
holibob-advanced-mode | Feature toggle |
x-holibob-currency | Selected currency |
x-holibob-language | Selected language |
x-holibob-api-mode | API mode (sandbox/production) |
Internationalisation
Supported languages
| Code | Language |
|---|---|
| en | English |
| es | Spanish |
| fr | French |
| de | German |
| it | Italian |
| nl | Dutch |
| pt | Portuguese |
| ar | Arabic |
Language is resolved in order of precedence:
- Cookie value (
x-holibob-language) - URL query parameter (
language) - Browser
Accept-Languageheader - Distribution channel default
Currency
Currency is resolved in order of precedence:
- Cookie value (
x-holibob-currency) - URL query parameter (
currency) - Consumer trip sale currency
- Distribution channel default
Development
Prerequisites
- Node.js 22.x
- pnpm
Setup
# From the monorepo root
pnpm install
# Start the development server pointing to production API
cd experience-marketing-platform
pnpm dev:production
Available scripts
| Script | Description |
|---|---|
pnpm dev:production | Dev server with production API |
pnpm build | Build for production (4GB Node heap) |
pnpm tsc | Run TypeScript type checking |
pnpm lint | Run ESLint |
pnpm test | Run unit tests |
pnpm test:watch | Run tests in watch mode |
pnpm test:coverage | Generate test coverage report |
Deployment
The application is deployed using SST to AWS with the following infrastructure:
- CloudFront — CDN with custom cache policies
- Lambda — Server-side rendering (Node.js 22.x)
- S3 — Static asset storage
- Route 53 — DNS management
- Secrets Manager — Sensitive configuration
- Datadog Lambda — APM instrumentation (production only)
Domains
| Environment | Domain pattern |
|---|---|
| Production | *.emp.holibob.tech |
| Preview | *.v3.storefront.{stage}.preview.holibob.tech |
Deploy commands
| Command | Description |
|---|---|
pnpm deploy:production | Deploy to production |
pnpm deploy:preview | Deploy to preview environment |
pnpm destroy:preview | Remove preview deployment |
Lambda warming
In production, a warming function runs every 5 minutes to keep Lambda connections warm and reduce cold start latency.
Monitoring
Datadog integration
- RUM (Real User Monitoring) — Tracks page loads, user interactions, and browser errors.
- APM (Application Performance Monitoring) — Server-side Lambda performance tracking.
- Custom events —
ConsumerAvailabilityAddToCartEventandConsumerProductShareEventfor business metrics.
Image configuration
Remote images are permitted from:
images.holibob.techimages.pexels.commedia-cdn.tripadvisor.com