Lumen Optical Co. — Independent Optical Store Website (Frontend + Backend)
A 6-page independent optical store website with a real lead-capture backend: an appointment request form and a general inquiry form, both backed by your own database. Full eyewear catalog, services, brands, team and an honest FAQ — nothing to build, bring your keys and deploy.
Preview
What you can customize
Each section below becomes a guided form field in your library after purchase — no prompting experience required.
- 1
Home
Hero, trust stats, catalog preview, services overview, brands, testimonials.
2 editable fields
- 2
About
Store story, 3-person team, values, interior gallery.
2 editable fields
- 3
Services
6 services in detail, plus the full eyewear catalog and brands carried.
2 editable fields
- 4
FAQ
7 honest answers on scheduling, insurance, trials and warranty.
2 editable fields
- 5
Booking
The real appointment request form — eye exam, fitting, styling, repair.
2 editable fields
- 6
Contact
The real general-inquiry form, plus store address, phone and hours.
2 editable fields
Backend structure
Exactly what ships behind the pages above — every file below is real, working code included in your download, not a mockup.
package.jsonProject configapi/appointments.tsAPI endpointapi/newsletter.tsAPI endpointschema.sqlDatabase schema
This is a Dynamic Website — a real backend (database + API) is included, not just static pages. It connects to your own database (Vercel Postgres, Supabase, Neon, or similar); this platform never sees or stores the data it collects. Set these on your own Vercel project before deploying:
DATABASE_URL— requiredAPPOINTMENTS_ADMIN_KEY— requiredRESEND_API_KEY— optionalAPPOINTMENT_FROM_EMAIL— optional
Once deployed, your purchase's library page shows a “Manage live data” panel that lists, and lets you act on, submissions from /api/appointments — directly from your deployed site, no separate database tool needed.
Through the editor you can add new optional fields to what's already here (for example, a note field on a booking). Building entirely new features or custom logic isn't something the editor automates — every purchase includes the full source code (frontend and backend, no lock-in), so you or a developer you hire can extend it freely outside the platform.
Usage instructions
Six pages and a real lead-capture backend — this is a DYNAMIC website: services, the eyewear catalog, brands, the team, gallery and FAQ are static editorial content, while the Booking page's appointment form and the Contact page's inquiry form both write to your own database in real time. 1. Home (index.html) — hero, trust stats, catalog preview, services overview, brands, testimonials. 2. About (about.html) — store story, 3-person team, values, interior gallery. 3. Services (services.html) — 6 services in detail, plus the full eyewear catalog and brands carried. 4. FAQ (faq.html) — 7 honest answers on scheduling, insurance, trials and warranty. 5. Booking (booking.html) — the real appointment request form (eye exam, fitting, styling, repair). 6. Contact (contact.html) — the real general-inquiry form, plus address, phone and hours. WHOSE DATABASE, WHOSE EMAIL PROVIDER. Yours, not this platform's. Before anything here does something real: 1. Create a Postgres database anywhere you like — Vercel Postgres, Supabase, Neon, or your own server — and run schema.sql against it once. 2. In your Vercel project's Settings -> Environment Variables, set: DATABASE_URL your database connection string APPOINTMENTS_ADMIN_KEY any secret string you choose Optional, for automatic email confirmations on new requests: RESEND_API_KEY from your own Resend (resend.com) account APPOINTMENT_FROM_EMAIL an address on a domain verified in that account Without the two optional variables set, requests and newsletter signups still save correctly — no confirmation email sends, that's all. MANAGING APPOINTMENTS & INQUIRIES. Once published, this purchase's library page shows a "Manage live data" panel — paste in your APPOINTMENTS_ADMIN_KEY and you can see every appointment request and inquiry as it comes in, mark one contacted, and delete ones you've handled. NEWSLETTER SUBSCRIBERS. There is no in-library management panel for this list yet — export it by calling GET /api/newsletter on your deployed site with "Authorization: Bearer <your APPOINTMENTS_ADMIN_KEY>". A dedicated panel for this is a natural next step, not built yet. WHAT YOU CAN CUSTOMIZE, HONESTLY: - Every page's copy, images, services, catalog items and layout — through the same AI-guided editor as any other template, no coding involved. - One optional field at a time on the "appointment_requests" resource (for example, an "insurance provider" or "how did you hear about us" field), through the "Backend customization" panel in your library once you've purchased — fully guided, no coding. Fields are always optional, never required, so existing requests are never affected. - Building entirely new resources, forms, or logic (a live appointment calendar, online checkout for eyewear, automated reminders) isn't something the editor automates. Every purchase includes the full source code — frontend and backend, no lock-in — so you or a developer you hire can extend it freely outside the platform. PREVIEW LIMITATION. The Booking and Contact forms and the footer newsletter signup call real endpoints that only exist once deployed — this platform's own preview has no backend to call, so each shows a friendly "try it once deployed" message here. That's expected, not a bug. WHAT THIS ISN'T. This template requests appointments — it does not manage a live, real-time appointment calendar or accept online payment. Every booking and inquiry is a request the store owner confirms by phone or email, same as most independent optical stores already operate. Frame prices shown are catalog reference pricing, not a checkout — there is no shopping cart. Replace the sample brand names, frame names, address, phone, hours and team bios with your store's real details before publishing.
Reviews
No reviews yet — be the first once you've used this template.