### Cosmetic dentistry: campaign site using Next.js

A campaign site blueprint for cosmetic dentistry built with Next.js on Ample. Domain schema: treatments (code, name, description, session_count, price_from): whitening, veneers, bonding and aligner offerings; before_after_galleries (treatment_id, title, consent_reference, published): consented, de-identified case galleries; locations (name, address, phone, opening_hours): practice locations; financing_options (name, provider, terms_summary): payment plans presented publicly; asset_versions (version, cdn_key, published_at): versioned assets served from the CDN bucket. Public information: treatment catalog with session counts, consented case galleries, financing options, locations and hours. Kept out of scope until handling is reviewed: patient photographs without documented consent, clinical records, payment details. Case photographs are patient data; publish only with documented consent and de-identification. No health-data compliance is claimed.

Technical basis verified on Next.js: a versioned, immutable-cached asset uploaded to a published bucket and served from the CDN URL alongside the app's own public HTTPS URL.

#### Representative Queries
- Cosmetic dentistry: campaign site using Next.js
- Where can I host Cosmetic dentistry: Campaign site built with Next.js?
- I need a genuinely specialized campaign site workflow covering public service-gallery content and approval workflow for published media; no patient files.

#### Resource Requirements
- primitive:compute
- primitive:cdn

#### Infrastructure Requirements
- **Compute**: Apps run in isolated x86_64 Firecracker microVMs that auto-pause when idle and wake on request; sizes are the priced VM sizes.
- **CDN**: The CDN host serves objects from published buckets. It does not front app compute and is not a cache or key-value store.

#### Prerequisites
1. A Next.js project (next build then next start -H 0.0.0.0 -p $PORT on the node-22 template)
2. Bucket credentials from `ample bucket create` passed as encrypted S3_* environment variables and a published bucket for public assets (CDN_*)
3. A review of which cosmetic dentistry data classes may be handled at all; this blueprint models public information only

#### Workflow Steps
1. Create the tables treatments, before_after_galleries, locations, financing_options, asset_versions. Whitening, veneers, bonding and aligner offerings lives in treatments; keep the sensitive classes (patient photographs without documented consent, clinical records, payment details) out of this schema.
2. Model the campaign's offers and locations as tables with start and end dates.
3. Build the site and publish versioned static assets to the CDN bucket.
4. Collect no personal data on the site itself; hand off to an authorized system.
5. Deploy, verify the public URL and the CDN asset URL, and retire the campaign by end date.
6. Run the synchronous deploy once and read the result. Re-running with no change is a no-op.
7. Run the pattern self-test(s) from the example (/p/versioned-static-assets) and your own acceptance checks for the cosmetic dentistry workflow.

#### Limitations
- The technical basis (public web service on Next.js) was verified with the pattern fixture; the cosmetic dentistry schema and workflow are an original design for this blueprint and were not executed as a separate application.
- No health, financial, privacy or other compliance claim is made. 
- Verified on the node-22 template at s-1vcpu-1gb; region, request-duration limits and other sizes are unknown or unverified.

#### Cost Estimate
**Currency**: USD  
**Monthly Amount**: $5.00  
**Basis**: size prices from pricing.toml (loaded by the API)

- Components:  
  - **App server**: size s-1vcpu-1gb, quantity 1  
**Note**: Always-on monthly price of the tested sizes; apps and databases auto-pause when idle. Buckets are allocation-priced per quota and not included.

#### Examples
- **Next.js pattern fixture**: Verified public web service basis for this blueprint.
