Soamee designed and built trasterOne, the storage-unit comparison site with over 1,700 centres indexed across more than 370 municipalities in Spain and Andorra. The platform won the AESS 2025 Innovation Award from the Spanish Self-Storage Association, was shortlisted again in 2026, and is funded by the European Union through NextGenerationEU.
The challenge
Spain’s storage rental market is split between hundreds of independent operators, each with its own website, its own way of naming unit sizes and its own pricing. Anyone shopping for a unit ended up with ten tabs open, comparing prices that weren’t even quoted the same way. There was nowhere to see an area’s supply side by side. trasterOne had to become that place: the “Idealista of storage units”.
Our solution
We designed and built trasterOne as a full comparison platform, optimised for SEO and conversion.
Platform architecture
The foundation is Next.js. Centre pages are server-rendered, with all their content in the initial HTML: that is what lets 1,700-plus centre pages be crawled and indexed without depending on Google executing JavaScript. The search view works the other way round, resolving client-side against the API so that filtering by size, services or price never forces a page reload.
The Node.js backend exposes a REST API feeding both the public frontend and the operator portal. Separating the presentation layer from the data layer lets each scale on its own and keeps the external integrations (Google Maps, Google Reviews) away from the render path.
Search and comparison
- Geolocated search engine by address, street, neighbourhood, city or proximity, with Google Maps integration
- Comparison system with Google Reviews ratings built in and filters for size, access type, climate control and security
- A 3-step journey: Search, Compare, Rent, with a quote request or a direct booking with the centre
- Centre directory holding over 1,700 listings across Spain and Andorra
Interactive map view
Results use a two-panel layout: a list of centres on the left and a Google Maps view on the right, each centre’s starting price shown as a label on its marker. In dense areas such as central Madrid, nearby markers cluster so the map stays readable. Every card shows a photo, a “Promotion” badge when an offer is running, a star rating aggregated from Google, a short address and a from-price. The point is to let people rule a centre out without opening it.
Centre detail page and contact flow
Each centre has its own page with a photo gallery of the facilities and a rate breakdown by unit size: S (1–3 m²), M (4–6 m²) and L (over 7 m²), each with its monthly price including tax and its own “Book Storage Unit” button. Below that sit the centre’s services (24h access, customer parking, 24h CCTV, climate control, AESS membership) with clear iconography, plus the access schedule day by day.
The contact sidebar gathers every route to the operator: direct WhatsApp, phone call, a link to the centre’s own website, the physical address linked to the map, and a short form (name, email, phone and message) that produces a qualified lead without making the user sign up first.
Directory and operator access
Alongside the consumer-facing search, the main navigation carries the centre directory, an SEO blog and two doors into the B2B side: “Register your company” for operators joining the platform, and “Operator access” for those already managing their listing from the self-service panel.
Programmatic SEO strategy
The ranking challenge was competing against operators who had been ranking for their own brand and their own city for years. The answer was to generate the long tail none of them covers alone:
- One page per centre generated from the operator’s data, with the URL hierarchy mirroring geography and brand:
/alquiler-de-trasteros/{city}/{operator}/{centre}. Madrid holds 226 listings and Barcelona 157, but the real volume is in the tail: over 370 municipalities with at least one centre - City landing pages at
/alquiler-de-trasteros/{city}for head terms (“storage units in Madrid”) - Schema.org (JSON-LD) with
SelfStorageandAggregateRatingon every listing,ItemListon result pages andWebSiteplusSearchActionon the home page, so Google can render stars, address and phone in the snippet - Dynamic sitemap split by content type (static pages, blog, centres) and regenerated as new centres are onboarded
Google Maps integration
The integration goes beyond dropping markers. Addresses submitted by operators are normalised and geocoded before being stored, because a centre placed wrongly on the map is a centre that never shows up in proximity searches. Those coordinates drive the map clustering, the sort by distance and the listing itself, which combines operator data with the aggregated Google Reviews rating.
Operator panel
- Registration and self-service portal where operators publish, update and manage their centres
- Metrics dashboard covering views and enquiries received
- Photos served from Google Cloud Storage through a purpose-built image proxy that resizes and serves WebP: operators upload whatever they have to hand, and page weight doesn’t suffer for it
Key technical decisions
| Decision | Alternative discarded | Why |
|---|---|---|
| Server-rendered centre pages | Client-rendered SPA | Over 1,700 pages that live on organic traffic can’t wait for Google to run JavaScript |
| Client-resolved search | Page reload per filter | Comparing means touching the filters repeatedly; every reload was a chance to drop out |
| Google Maps API | Mapbox / Leaflet | Native tie-in with Google Reviews and Places enriches listings with data the operator never has to fill in |
| One URL per centre | Hand-written city content | Demand sits in the long tail of municipalities and brands, impossible to cover by hand |
| Own REST API | BaaS (Firebase/Supabase) | Control over filtering logic and over the integration with each operator’s booking system |
| Node.js backend | Python/Django | Same ecosystem as Next.js, and good throughput for a backend that is mostly I/O against external APIs |
Results
- 1,700+ centres indexed across Spain and Andorra, each with its own URL
- 370+ municipalities covered, from Madrid (226 centres) and Barcelona (157) to small towns where nobody else competes
- AESS 2025 Innovation Award from the Spanish Self-Storage Association, and shortlisted again in 2026
- NextGenerationEU funding from the European Union
- Operators on the platform include RedTras, CABE, Globalbox, Homebox, SmarTTrasting, Cityo, Trasteros Plus, Trasteros Galaxy and Boxo
Tech stack
- Next.js (frontend and server rendering for SEO)
- React (UI components)
- Google Maps API (geolocation and map)
- Google Cloud Storage (centre photos)
- Schema.org / JSON-LD (structured data)
- Node.js (backend and REST API)
Need a similar project? Discover our web development service →
Want to grow organically like trasterOne? Discover our growth marketing service →
How we work
Every project follows our artisan process, adapted to each client's specific needs.
Discovery & Requirements
Deep dive into business, users and objectives. Ideation workshops, market research and MVP scope definition.
Design & Architecture
Wireframes, interactive prototypes and technical architecture. Client validation before writing code.
Development & Testing
2-week sprints with demos. CI/CD, code review and continuous testing. Feedback every iteration.
Delivery & Evolution
Production deploy, monitoring and support. Post-launch metrics and continuous improvement roadmap.