Website with pricing and admin panel · 2026
QC Travel
A family checks the price of a trip. The office gets an enquiry with everything it needs.
Live. The owner edits offers and prices in the panel, and every enquiry is saved with its quote.

The configurator on the trip page: number of people, room, insurance, meals. The price updates with every change, and the enquiry goes out with the same breakdown.
The situation
A boutique operator of ski trips to Italy and Austria. The old website was static HTML files with no prices and no backend. Every form was a dummy: it said “thank you” and sent nothing. The owner wanted to show prices and take enquiries without the phone.
What the website has to do
A family picks a date, enters the children’s ages and a room, sees an indicative package price and sends an enquiry with everything the office needs. The office replies with a contract instead of follow-up questions.
Before and now
What I built
- PL/EN website: offers, who it is for, ski school, FAQ, about, contact, enquiry.
- A configurator on the trip page: date, number of people, children’s birth dates, room, extras. The price updates as you go.
- A pricing engine with age brackets, multipliers and rounding rules that reproduces the owner’s spreadsheet to the złoty.
- Each enquiry is saved in the panel first, then an email with the full breakdown goes to the office and an auto-reply to the customer in their language.
- A Payload panel with around twenty collections: offers, dates, hotels, rooms, regions, training programmes, FAQ, documents, enquiries, newsletter, media.
- Canonical URLs, hreflang, sitemap, analytics loaded only with consent.
Three decisions
The owner changes rates without touching code
Rates, age brackets and seasons are data in the panel. The calculation logic lives in code and has tests, so a price change cannot break a quote.
Edits are live within half a minute
Front and panel are one app with one database, instead of a separate WordPress. No deploy and no middleman.
The enquiry is saved before the email is sent
A spam filter once silently dropped enquiries. Now every one lands in the database and suspicious ones only get a flag.
Screens



What the owner does alone
Prices and dates, hotel and room descriptions, FAQ, PDF documents, enquiry statuses, newsletter and English versions. She received a manual for the panel: seventeen pages with eighteen screenshots.
In numbers
- 30 s
- from a change in the panel to a change on the site
- 100%
- of enquiries saved, including those flagged as spam
- 91
- PageSpeed mobile, Offers section
- 2
- languages: Polish and English
PageSpeed measured on 4 September 2026. Accessibility, best practices and SEO: 100 each.
How we worked
- Brief and price spreadsheets
Several rounds of questions about how the office prices packages and what an enquiry must contain.
- Work in batches, with acceptance
Each batch checked against real price lists, with acceptance tests.
- Handover with a manual
A manual for the panel and documentation for whoever takes over maintenance.
Technology
- Next.js 16
- Payload CMS
- Supabase
- Resend
- Vercel