
Experience tours · Sport, Retreat, Photography, Cultural filters
Tours filterable by category
Experience tours managed from the CMS: categories, partner card, duration, copy. A tab changes the grid without a reload.
Enruta360 is a tailor-made travel studio. They needed a product, not a brochure: public catalogue, requests, bookings, payments and three private areas. I built it from scratch.
In production · bilingual IT/EN

Home · photographic hero, IT/EN switch, portal login
Enruta360 is a full digital product for a tour operator: bilingual public site, experience-tour catalogue with dates and prices, 5-step request wizard, Stripe gift cards, wedding lists, newsletter, and three portals (admin, travel designer, client) with CRM, bookings and travel documents. Stack: Next.js, TypeScript, Supabase, Stripe, Resend.
A small tour operator, founders on the road, a network of travel designers. No WordPress plugins to update every month: a product they own, with client data at the centre.
Every page is a sales surface. Screenshots are from the live site.

Experience tours · Sport, Retreat, Photography, Cultural filters
Experience tours managed from the CMS: categories, partner card, duration, copy. A tab changes the grid without a reload.

Tour page · 20 Feb–3 Mar 2027 · €4,695
Each tour has a day-by-day itinerary, gallery, team, FAQ and a booking box with departure and per-person price. Content lives in the database, not on a static landing page.

Build your trip · step 1 of 5
Who you are, where, when, style, confirm. The draft saves in the browser. On submit it lands in admin as 'new' and a transactional email goes out.

Gift card · 3 steps: amount, personalise, preview
Presets from €100 to €1,000 or a custom amount. Email delivery, 12-month validity, partial balance across trips. Stripe checkout, webhooks, codes in admin and in the client portal.

Wedding lists · personal page for guests
Hero with the names, trip stops, photos and bank details. Admin creates the list, the couple shares the link. No third-party platform fees.

About · founders on the road
Each profile has bio, specialty and photo, shown or hidden from admin. The commercial network is a CMS, not an about page edited by hand.
Same product, three roles. Admin sees everything. The travel designer manages their tours and assigned requests. The client finds trips, documents and vouchers.
Admin
Dashboard, stats, catalogue, network, bookings, requests, contacts, newsletter, vouchers and gift cards. One menu, all the data.
Travel designer
Sees their own tours, assigned requests and linked bookings. They never enter the full admin: only their perimeter.
Client
Profile, trips, travel documents uploaded by the studio, vouchers and gift cards. No PDFs lost in a WhatsApp chat.
This is not HubSpot with an integration. Leads, bookings and content live in the same database as the site.
Trip requests
They arrive from the wizard. Statuses: new, in progress, proposal sent, closed. Assignable to a travel designer.
Contacts
Site form plus a timeline: email sent, call, follow-up, note, status change. History stays on the record, not in three inboxes.
Waiting list
When a tour is full, the contact stays in queue. Admin manages it without a separate spreadsheet.
Newsletter
Signup with GDPR consent, IT/EN locale, list in admin. Same database as the leads, no Mailchimp.
Bookings
Statuses pending, confirmed, completed, cancelled. Linked to the client, the tour and passengers.
Travel documents
Admin uploads files on the booking. The client finds them in their portal, no scattered attachments.
Stripe gift cards
Checkout, webhook, unique code, balance in cents, expiry, partial use. Visible in admin and to the client.
Vouchers
Credit assignable to a profile, with balance and expiry. Useful for refunds or gifts without touching Stripe.
Tour builder
Title, itinerary, gallery, FAQ, categories, publish flag, Stripe price if the tour is buyable online.
Partners and designers
CMS cards with bilingual bio, specialty, visibility. Linked to tours and assigned requests.
Wedding lists
Public guest pages, created and reviewed in admin. Itinerary, photos, bank details.
Statistics
Requests this week, open bookings, published tours, monthly lead and revenue trend.
One Next.js app, one Postgres database, native payments and email. No plugins to keep alive.
Auth and storage on Supabase with role-based RLS. React Email. Stripe checkout and webhooks. GTM analytics.
Site, CRM, bookings and payments in one stack, without four separate subscriptions.
enruta360.com