Fitness · Next.js
Kelvaro
A dark, high-energy gym website that knows when the club is open and what's on next, and turns every visit into a call, a DM or a route.
Loading the collection
Preparing the details…Photography · Commercial Photographer & Photo Studio
The website for a working photographer and the studio they hire out, organised like working photographers' and studios' own sites.
Motion preview
A verified capture of the real template experience—no simulated interface or pre-rendered 3D substitute.
Premium gallery
10 verified previews built from the real template UI and release assets.









The product
LIVE DEMO: https://stopholt-photography.poyrazn8n.workers.dev
The website for a working photographer and the studio they hire out, organised like working photographers' and studios' own sites. Stopholt · website-template · Next.js source code 14 page designs · 46 demo pages + custom 404 Static frontend template. No content management system, payments, booking service, accounts, file delivery, email service or back end is included, the forms send nothing until you connect them, the estimate is an indicative range and the studio, people, clients and rates are fictional.
- Commercial, editorial and portrait photographers who take commissions from brands, agencies and editors - Photo studios that hire out their stages by the day and want rates, specs and a calendar of holds on their site - Agencies and freelancers building a site for a photographer or studio client Required skills: Comfortable editing TypeScript configuration and data files in a Next.js project. Not ideal for: Buyers who need online payments, booking confirmation, client accounts or file delivery without development; Photographers who only need a one-page gallery.
14 page designs · 46 demo pages + custom 404 - stopholt/ - stopholt/package.json - stopholt/package-lock.json - stopholt/START-HERE.md - stopholt/BUYER-README.md - stopholt/BUYER-SCOPE.md - stopholt/LICENSE.txt - stopholt/ASSET-CREDITS.md - stopholt/Documentation/ - stopholt/docs/ - Home light table: The home page shows one frame from each featured commission whole, with its discipline, client, year and frame code; a filmstrip switches between them by click or arrow keys. [included-working] - Filterable archive: Projects from data/projects.ts filtered by discipline with per-discipline counts, shown as contact-sheet strips or as an index table; the filter and view are kept in the address bar so a view can be shared, reloaded and reached with Back. [included-working] - Project pages with slate and credits: A page per project with a production slate (client, agency, discipline, year, setting, licensed use, deliverables), credits by role, a short story and every frame at its own aspect ratio with a caption and frame code, a contact sheet view, and the next project. [included-working] - Full-screen viewer: A native dialog viewer with arrow keys, swipe, a frame counter and caption; Escape closes it and focus returns to the frame that opened it. [included-working] - Commission estimator: Discipline, full and half days, retouched images, media, territory, term and production lines produce a live indicative range and a line-by-line estimate (creative fee, licence per medium, post-production, production) from config/rates.ts; editorial-only use disables territory and term; the draft is kept on the visitor's device. It is labelled an indicative range, not a quote. [included-working] - Send the brief with the estimate: Validates with a focused error summary and posts the brief and the estimate as JSON only to the endpoint set in config/forms.ts; with none set it says that nothing was sent and offers the same text as an email draft. [frontend-demo] - Studio stages with specs, floor plans and rate cards: Two stage pages from data/stages.ts with photographs, a spec table, a floor plan drawn to scale from the stage's measurements, a rate card, what is included and links to the calendar; policies for holds, payment, cancellation, insurance and house rules. [included-working] - Calendar of bookings and ranked holds: Eight weeks per stage from data/availability.ts showing free, booked and 1st/2nd/3rd-hold days; a range across a booked day is refused, held days show the queue position the visitor would take, and a home-page strip shows the next ten weekdays. Demo dates roll forward with the current week. [included-working] - Hold request and calendar file: Requires contact details, people on set within the stage's capacity and a certificate-of-insurance confirmation, posts only to the endpoint set in config/forms.ts, and downloads the requested days as tentative all-day .ics events. Nothing is reserved. [frontend-demo] - Client Selects gallery: A shoot's contact sheet where the client picks, rejects and annotates frames, filters by state, compares two frames, views full screen with keyboard shortcuts, sees picks counted against the retouch allowance with the extra cost, and hands the list to the visitor's own mail app as a draft, or as a CSV or copied text; the template itself sends nothing; marks are kept in the browser. The gallery code is a demo gate, not access control. [browser-local-demo] - Archive licensing request: Choose a project and frame with a live preview, the medium, territory and term, and send a licensing request to the endpoint set in config/forms.ts. [frontend-demo] - Print editions: Editions from data/prints.ts with sizes, paper, edition size and remaining count; sold-out sizes cannot be chosen and a fully sold print says so; enquiries post only to the endpoint set in config/forms.ts, or a buy link per print points at your shop. No checkout is included. [frontend-demo] - Journal: Posts built from paragraph, heading, list and captioned photograph blocks, an index with a lead post, and a newsletter sign-up that posts only to the endpoint set in config/forms.ts. [included-working] - Contact routed by topic: Commissions, studio hire, licensing, press and current jobs each go to their own inbox from config/site.ts; a topic can be preselected from a link. [frontend-demo] - Demo photo credits: While site.demo.showDemoCredits is on, every photograph shows its real photographer and Pexels source where it appears; one switch removes them. [included-working] - Page metadata: Each page has its own title, description, canonical URL and Open Graph URL and image (project, stage, print and journal pages use their own photograph); sitemap and robots are generated, the client pages and 404 are not indexed. [included-working]
- Home light table: The home page shows one frame from each featured commission whole, with its discipline, client, year and frame code; a filmstrip switches between them by click or arrow keys. [included-working] - Filterable archive: Projects from data/projects.ts filtered by discipline with per-discipline counts, shown as contact-sheet strips or as an index table; the filter and view are kept in the address bar so a view can be shared, reloaded and reached with Back. [included-working] - Project pages with slate and credits: A page per project with a production slate (client, agency, discipline, year, setting, licensed use, deliverables), credits by role, a short story and every frame at its own aspect ratio with a caption and frame code, a contact sheet view, and the next project. [included-working] - Full-screen viewer: A native dialog viewer with arrow keys, swipe, a frame counter and caption; Escape closes it and focus returns to the frame that opened it. [included-working] - Commission estimator: Discipline, full and half days, retouched images, media, territory, term and production lines produce a live indicative range and a line-by-line estimate (creative fee, licence per medium, post-production, production) from config/rates.ts; editorial-only use disables territory and term; the draft is kept on the visitor's device. It is labelled an indicative range, not a quote. [included-working] - Studio stages with specs, floor plans and rate cards: Two stage pages from data/stages.ts with photographs, a spec table, a floor plan drawn to scale from the stage's measurements, a rate card, what is included and links to the calendar; policies for holds, payment, cancellation, insurance and house rules. [included-working] - Calendar of bookings and ranked holds: Eight weeks per stage from data/availability.ts showing free, booked and 1st/2nd/3rd-hold days; a range across a booked day is refused, held days show the queue position the visitor would take, and a home-page strip shows the next ten weekdays. Demo dates roll forward with the current week. [included-working] - Journal: Posts built from paragraph, heading, list and captioned photograph blocks, an index with a lead post, and a newsletter sign-up that posts only to the endpoint set in config/forms.ts. [included-working] - Demo photo credits: While site.demo.showDemoCredits is on, every photograph shows its real photographer and Pexels source where it appears; one switch removes them. [included-working] - Page metadata: Each page has its own title, description, canonical URL and Open Graph URL and image (project, stage, print and journal pages use their own photograph); sitemap and robots are generated, the client pages and 404 are not indexed. [included-working]
- payments: No payments, shop checkout or invoicing is included; print editions can link to a shop you already use. [not-included] - auth: No accounts or access control; the client gallery code is a demo gate and the guide explains how to use a gallery service or a back end. [not-included] - email: The commission, hold, licensing, print, contact and newsletter forms post JSON to endpoints you set in config/forms.ts; no email or form service is bundled. [integration-required] - cms: Content is TypeScript data in data/ and config/; no CMS is connected. [not-included] - booking: No booking or scheduling service is connected; the calendar shows data/availability.ts and a hold request reserves nothing. [not-included] - orders: No order handling or print fulfilment is included. [not-included] - backend: No database, file delivery or application back end is included; the site is a static export. [not-included] - mlsCrm: No CRM is connected; point the form endpoints at one if needed. [not-included]
- The studio, its people, clients, projects, rates and prints are fictional sample content; the legal pages, rates and policies must be replaced and reviewed before launch. - Demo dates roll forward with today's date and every demo photograph shows its photographer's credit; turn both off in config/site.ts before launch. - English demo content only; multilingual UI and RTL have not been validated.
- Install dependencies with npm install. - Set the studio name, photographer, city, inboxes and site URL in config/site.ts, and turn off the demo credits and rolling dates. - Set your day rates, licence prices and production costs in config/rates.ts and your stages, rate cards and floor plans in data/stages.ts. - Replace the projects, prints, journal, team and calendar in data/*.ts and the photographs in public/photos/ and config/photography.ts. - Connect the commission, hold, licensing, print, contact and newsletter forms to your endpoints in config/forms.ts, and point client access at your gallery service if you use one. - Have the legal pages reviewed, then run npm run build and deploy the static out/ folder.
- stopholt-v1.0.1.zip · version 1.0.1 Node.js 20.9 or newer; internet access for dependency installation. Open stopholt. Install: npm ci Build: npm run build Lockfile: package-lock.json. Package manager: npm.
LICENSE — Webloomery Template License v1.0 (effective 26 September 2026) - One purchase, one end product: build one website or application for yourself or for one client. - Modify the source for that end product. Its development, staging and production copies count as one end product. - Team members and contractors on that end product may use the files, only for it. - You may hand the finished project and the customized source it needs to that one client; the Template is then not reused for anyone else. - Each additional website, application, end product or client needs another purchase. - Not allowed: reselling, sharing, sublicensing or publicly publishing the Template source; turning it into a template, builder, code generator or reusable client-production system; reselling its components or assets separately. - Third-party fonts, photographs and other assets keep their own licenses, listed in ASSET-CREDITS.md. - Support and updates are separate from the license. The full license text is included as LICENSE.txt in the download and published at https://webloomery.com/legal/license.
- Installing and building the delivered package - Questions about the documented configuration and data files Excluded: Custom development and design changes; Connecting form, gallery, booking or shop services; Legal review of the legal pages, rates and policies. No guaranteed response time. No fixed support period is promised.
120 licensed stock photographs (120 pexels). Original favicon, wordmark set in type, the hand-drawn selection loop and interface icons; one original share image and one touch icon. Software and fonts retain their own licenses. Read ASSET-CREDITS.md. Third-party materials retain their own licenses. Demo brands and content must be replaced before launch.
Designed as a credible product experience—not a set of disconnected sections. Every layout is ready to adapt while preserving the logic that makes it feel intentional.
Inside the build
Pages included
Technology
Next.js 16 · React 19 · TypeScript · Static export
Compatibility
Modern evergreen browsers. Responsive from compact mobile screens through wide desktop layouts.
Support & docs
README, START-HERE, buyer scope notes and guides for installation, rebranding, content, commissions, studio hire, client galleries, prints, photography, integrations, theming, deployment, accessibility and troubleshooting, a changelog, ASSET-CREDITS.md and a per-photograph media manifest. Package-specific setup guidance and release notes are provided.
Before you buy
Compare the demo, included scope and integration work with your launch plan.
Read the Next.js website template checklistBuyer support
Learn how to install, customize and deploy this template step by step.
Watch on YouTubeTutorial duration · 11:26
Use it with confidence
Webloomery Template License v1.0 — one purchase covers one end product for you or one client. The full text ships as LICENSE.txt.
Read the license