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.