Byty u moře
A platform for renting and selling investment apartments in Egypt. Resorts overview, unit details, a map, bookings, and a tailored dashboard for each role.
The site connects Czech and Slovak property owners abroad with people looking to rent. It works as a platform: the client creates a resort, assigns units and owners to it, guests book. Each owner then manages their own apartment without needing to nudge an administrator.
Data model without a ceiling

Why it exists
The client needed a tailored solution. The brief was clear: each apartment owner gets their own account and manages their unit themselves (photos, description, prices, availability), the admin keeps the structure (resorts, assignments, blog, general settings), and the guest searches, books, and saves favourites.
Going this route with an existing template or a classic CMS would have been clunky — mostly because of role management, per-row permissions, and the customisations the client will want down the line. A bespoke build gives room to extend, smooth management for each role, and a platform that makes the client's work easier as it grows. The site grows with the business, not against it.
How the platform earns
Paid by the owner for listing their unit. First 6 months free after sign-up.
The platform takes a cut of each completed booking. The guest pays the same price, the owner gets the rest.
The client sells investment apartments in the resorts. After a sale, the new owner gets full access to edit.
Three roles, three views of the system
The platform stands on a clear split. The admin keeps the structure (countries, cities, resorts, owner assignments). The owner manages their units and bookings. The guest searches, saves favourites, and books. Each role sees exactly as much as it needs.
Admin
- CRUD for countries, cities, resorts, amenities
- Assigning an apartment to a resort
- Assigning an owner to an apartment
- Blog and general settings management
Owner
- Editing their units (photos, description, prices)
- Last-minute and TOP offer flags
- Overview of bookings for their apartments
- Managing add-on services
Guest
- Finding apartments (filters, map, date picker)
- Favourites and booking history
- Host profile on each apartment
- One-click booking flow

What it does for the guest
On the home page the guest enters a resort and the number of people, and gets a listing where they can filter by amenities, dates, and stay type. Each apartment has a detail: gallery, parameters, amenities, host profile, add-on services, and a booking widget that calculates the price in real time, including everything they add to the stay.
Map view splits the screen between a listing and a map. The active filters work the same as in the list, markers on the map are clickable, so the guest sees both layers at once — where and what.



Data model
The hierarchy is simple and scalable: country → city → resort → unit → booking. Each unit has an assigned owner, its own gallery, parameters, amenities, and add-on services. A booking carries the relation to the apartment and the guest and knows the total price, dates, status (pending / confirmed / cancelled / completed), and any add-ons the guest tacked on.
Country
└── City
└── Resort
└── Property ◀── Owner (User)
└── Booking ◀── Guest (User)Under the hood
SSR/SSG for SEO, React Server Components for listings and details.
The entire data layer. Versioned migrations, a seed script for demo content.
Admin / owner / guest. Per-row permissions — the owner sees only their apartments, the guest only their bookings.
Map view without Google's API fees. Clustering for denser resort zones.
Progressive JPEG, blurhash placeholders, automatic variants per viewport.
Consistent components, dark mode ready (off for now, waiting on a decision).
How it went, phase by phase
- Phase 1 — Foundation
Project setup (Next.js + Prisma + Postgres). Database schema and migrations. Auth system with roles. Public pages: homepage, listing, apartment detail, resort detail. Filtering and responsive design.
- Phase 2 — Administration
Admin dashboard (CRUD for resorts, apartments, users, amenities). Owner dashboard — each owner edits their apartments, photos, prices. Image upload via Cloudinary. Blog CRUD with rich text.
- Phase 3 — Booking and interaction
Availability calendar, booking flow with price calculation and add-on services, favourite apartments, split view with a map, public host profile.
- Phase 4 — Polish and growth
Email notifications, SEO optimisation, image optimisation, ISR for listings, analytics. The project is still in active development — we keep adding features as the platform grows.
The project is alive
The platform will go live at the start of next quarter, but the work doesn't stop there. As new owners join after unit sales, tailored features get added; we keep integrating (payment gateways, email notifications, calendars) and tuning the experience based on how the platform behaves in production. It's development, not a shipped box.
Byty u moře is a good example of a project where going custom made sense. Not because nothing else existed, but because the client needed control, extensibility, and independent management for each owner. When the brief is specific, it pays to build it to fit.
Have a similar project where the template ran out and you need to rebuild it? Write in. I enjoy these tailor-made platforms.