Projects - NonBugs Factory
LatinSpots
How we rewrote LatinSpots' 28-year editorial platform, ready for the next 28.
Client
LatinSpots — Editorial platform covering advertising and marketing in Ibero-America. Organizes the El Ojo de Iberoamérica festival.
Industry
Media & Publishing · Advertising · Events.
Services
Cybersecurity · Custom editorial platform · Data migration · Cloud infrastructure · Ongoing support.
Main stack
Laravel · MySQL · Kubernetes · AWS · GitLab CI.
_THE CLIENT
28 years covering Ibero-American creativity
LatinSpots was born in 1998 as a publication connecting the Ibero-American advertising industry. Nearly three decades later, it’s the editorial reference for the region: a bimonthly magazine (issue #191 at the time of this project), a daily news portal, an audiovisual archive with thousands of pieces, profiles of creative directors, training programs, a jobs board, and an asset of its own that ended up defining the sector — the El Ojo de Iberoamérica festival.
To someone outside the industry, LatinSpots might look like a website. To someone inside, it’s where the decisions, launches, and awards of the most relevant agencies and advertisers in Spanish and Portuguese get published. At that editorial scale, every technical decision has practical consequences.
_HOW WE GOT HERE
A referral, a focused job, earned trust
We didn’t start with the redesign. We started with a concrete, narrow problem: a cybersecurity intervention. The referral came through a cloud infrastructure partner we were already working with, and we went in to solve something that had to be solved quickly.
The solution was immediate and satisfactory. That opened the larger conversation: updating and unifying LatinSpots’ entire digital ecosystem. The trust that comes from doing one job well in a small scope is what enables long projects. That’s almost always how lasting relationships begin.
_THE STARTING POINT
Several systems that worked, but not with each other
LatinSpots was operating with several custom platforms built over the years: one for the portal’s content management, another for producing the print magazine, separate subscription systems, and an in-house module for managing advertising and commercial inventory. Each one did its part well. The problem wasn’t that they were broken; it was that the sum didn’t scale.
When a brand wanted to run ads in both the portal and the magazine, two systems had to be coordinated. When a subscriber moved between plans, the management was duplicated. When a note was published, parallel processes ran for the site and the magazine. And on top of all that, nearly three decades of archives: notes, audiovisual pieces, profiles, magazine covers, conferences. An editorial memory that had to be respected and, at the same time, modernized.
The driver wasn’t performance. The previous site loaded fine. The driver was something else: security, scalability, and clearing the way for new modules without breaking what was already there. LatinSpots wanted to innovate after 28 years, and that required starting from the foundation.
_THE TECHNICAL DECISION
Why we built a custom CMS
The market intuition in 2024 is to reach for a headless CMS like Strapi, Sanity, or Payload. We evaluated them seriously. They weren’t the right path for this client, for three concrete reasons.
The content model doesn’t fit
LatinSpots doesn’t just publish “notes.” It publishes audiovisual pieces with metadata for agency, advertiser, and country; profiles of creatives with cross-references between each other and with their pieces; festival rankings that get rebuilt every year; reels related to conferences; jobs linked to companies. Reproducing that model in headless SaaS meant forcing it to fit into a container it wasn’t designed for.
28 years of data to migrate
The most important driver: editorial memory. Almost three decades of notes, pieces, profiles, magazine issues, juries, awards. Migrating that data to a headless SaaS would have meant mapping structures specific to LatinSpots into those of the provider — and accepting that every future change be limited by a third party’s decisions. Building our own CMS preserved the client’s data logic and gave us control over the migration.
Specific business rules
LatinSpots’ subscriptions aren’t like any other publication’s: they combine access to the portal, the digital magazine, and the El Ojo conferences. Ads aren’t managed by an external ad server; they’re part of the product. Each of those rules would have required extensions, hacks, or middleware over a SaaS. In a custom CMS, they’re native code.
The final decision: two separate Laravel applications — one for the public site, one for the editorial backoffice — over a single MySQL database, all deployed on Kubernetes over AWS.
_ARCHITECTURE
Two apps, one source of truth
Separating the public site from the editorial backoffice is deliberate. Each has different usage patterns, security requirements, and iteration speeds. They share the same database, not the same application.
Amazon Web Services
Kubernetes
Public site
latinspots.com
Laravel + Blade
Server-side rendering
Optimized for mass reading
Editorial backoffice
Internal CMS
Laravel + Vite
Reactive SPA
Editorial production
Database
MySQL
28 years of editorial data
Migrated and unified structure
Cache
ElastiCache · Redis
Sessions · hot queries
Media · S3 + CloudFront
Audiovisual archive
Videos · images · historical PDFs
Global distribution with CDN cache
28 years of pieces
The public site is built on Laravel with Blade views and server-side rendering. Optimized for mass reading, indexing, and fast loading — it’s what any reader sees when entering latinspots.com.
The editorial backoffice is a separate Laravel application, with a reactive frontend built on Vite. It’s where the editorial team works every day. It’s an environment with usage patterns completely different from the public site, which is why it lives in its own repo, with its own deployment.
Both applications share a MySQL database in AWS with nearly three decades of unified and migrated editorial data. ElastiCache (Redis) handles sessions and hot queries; S3 + CloudFront serves the entire audiovisual archive with global distribution; SES sends subscription notifications. All orchestrated on Kubernetes, with GitLab CI pipelines that deploy environments per branch.
_THE SOLUTION
A single platform for the entire ecosystem

Note editor with multiformat production.

Integrated management of pieces, magazine, and catalog.
_THE PUBLIC PRODUCT
The site where Ibero-American creativity gets published


_RESULTS
What changed once everything was connected
Unified platform
Notes, magazine, subscriptions, pieces, profiles, and ads all live in a single system. The editorial team stopped jumping between platforms to produce content.
28 years of archive, intact and accessible
The entire editorial memory migrated and compatible with the new structure. Historical notes and pieces are still there, better indexed and better served.
Security as a priority
The project started with cybersecurity and kept it as an axis. Environment-isolated architecture, secrets managed outside the code, granular permissions in the backoffice.
Scalable operation under load
Kubernetes with horizontal scaling, distributed cache, and global CDN. The platform is ready to absorb traffic peaks during festival coverage.
Ground prepared for new modules
The client can add new functionality — formats, products, integrations — without rewriting what already exists. What used to be a limitation is now an operational advantage, and the reason the project keeps evolving: continuous improvements.
_WHAT WE LEARNED
Three ideas we took from this project
28 years of data is an asset, not a burden
Many modernization projects treat the client’s history as a problem to solve. LatinSpots’ was the exact opposite: editorial memory is the product. Migrating 28 years of archive without losing structure or relationships isn’t optional; it’s the condition. Designing the database with that in mind changed the entire architecture.
Separating the public app from the internal app pays off fast
Building them as two separate Laravel applications adds initial complexity. But each can evolve at its own pace: the public site optimizes for reading and SEO; the backoffice optimizes for editorial productivity. When one goes down, the other keeps working. When one needs to scale, the other doesn’t pay the cost.
Start small to earn the big project
The full LatinSpots project wasn’t sold in one meeting: it was earned by solving one focused job well. A cybersecurity intervention, responded to in form and on time, opened the conversation that ended up being a complete modernization.
_STACK
Project technologies
Led by
Franco Gregorio
CTO — NonBugs Factory
Launched: November 2024 · Team: 2 backend, 2 frontend, 2 UI/UX, 1 PM, CPO, CTO · 8 min read
The team didn't just understand our problem at its roots — they walked with us at every step to build a complete solution. Thanks to them, we automated key processes, saved a lot of time, and achieved a centralized operation that was previously unthinkable.
Is your operation more complex
than a SaaS can handle?
That’s where we do our best work. We understand the problem in depth, design the architecture, and build the custom software that holds it up — made to scale with your business.
Schedule a meeting