Own product

Cotreball

A directory of coworking spaces in Spain. No bookings, no commissions, no middleman.

Tech stack

  • PHP 7+ procedural
  • MySQL via PDO
  • Tailwind CSS (precompiled)
  • Leaflet 1.9.4 + OpenStreetMap
  • Native PHP sessions
  • Schema.org JSON-LD per page
  • No framework, no Composer

The technical challenge

The model drives everything. Cotreball is a directory, not a booking marketplace. The visitor finds a coworking space, sees its prices and details, and contacts the manager directly. The platform never steps into the booking or the payment.

That simplifies a lot on the technical side (zero payment gateway, zero availability management) but it shifts all the weight onto SEO. Without organic traffic, this doesn't exist. The target search is "coworking in {city}" and the entire site is built around it: clean URLs (`/{city}`, `/espacio/{slug}`), 5 deterministic meta description variants per city to avoid duplicate content, dynamically generated XML sitemap, JSON-LD (WebSite, ItemList, FAQPage, CoworkingSpace).

The other tricky part is the manager's own dashboard. Each coworking space can register, verify its email, create its listing and edit it. But the listing goes through manual approval (`approved = 0` initially, email notification to the admin, review). On the Premium plan it shows up as featured, with more photos, video, and visit stats. The whole approval + Premium flow is handled manually by the admin: nothing automatic, no Stripe.

Process and decisions

Procedural PHP without a framework was chosen on purpose. The site is content-driven, the pages are essentially templates with direct SQL queries, and the lifecycle of a project like this doesn't need the abstraction of a heavy MVC. Less code, less debt, fewer dependencies to update.

Building bookings into the platform was ruled out. It would have required a payment gateway, commissions, customer support for the end client's customers, cancellations, refunds, a real-time synced calendar. A different project altogether. The directory works much better as a discovery point: if you want to book, the manager handles you directly, the way it has always been done.

The map loads with all the server-side filtered spaces in a single payload. Filtering on the client over that payload is instant and scales well even as the number of listed spaces grows.

Traction

Directory (not a marketplace)Model
NoneOn-platform bookings
0%Commission per lead
Up to 4 photos per listingFree
10 photos + video + stats visible to the ownerPremium

What does this mean for your project?

If what you need is a directory, a search portal or a listings portal (real estate, professionals, products, events), this project shows it can be built with a lightweight stack and without dropping a closed SaaS platform in the middle. Search with filters synced to a map, third-party sign-up with email verification, a per-user dashboard to edit their own listing, a Premium plan to stand out, SEO worked on thoroughly from day one.

It's a perfectly reusable pattern for any business whose traffic comes from long-tail searches by city (academies, firms, restaurants, workshops, etc.) and that doesn't need to complicate things with a payment gateway.

If your brief is a directory or a listings portal with a clear freemium plan, I know how to build it from scratch and rank it, without renting it from a closed platform.

Want something similar?

Tell me what you have in mind and I'll tell you what I can do.