Blog
engineeringdjangorefactoringbuilding-in-public

From Hardcoded Slugs to Dynamic Grids

29 Mar 2026 · Data Druid Tech · Updated 29 Mar 2026

The original sin

The first version had every product card hardcoded by slug — 30 lines of specific HTML per product. This worked with 5 products. Then we added Muster, Kontracts, and Quest Marketplace. The template grew to 400 lines.

The refactor

We split products into three database-driven groups: featured products (is_featured=True) as large showcase cards, other SaaS products in a 3-column grid, and client solutions in a 2-column grid. Each card still has a unique animated mockup rendered by slug, but the grid layout is dynamic.

What we gained

  • Template went from 400 lines to 296
  • New products appear without template changes
  • Status badges render from the database
  • Coming-soon cards are automatically muted
  • A dedicated /products/ page lists everything with filter tabs

Hardcoding is fast for prototypes, but dynamic templates save you the moment you scale past three items.