November 2025. Whole interface was on DSX. Now moving to regular Vue components.
What is DSX
Describe page in DSL. Renders automatically.
const page = definePage({
layout: 'admin',
sections: [
{ type: 'table', model: 'User', columns: ['name', 'email'] },
{ type: 'form', model: 'User', fields: ['name', 'email', 'role'] }
]
})
Generator creates Vue component. Don't write HTML by hand.
Why it was good
Fast. CRUD page in 5 minutes. Consistent - all tables the same.
AI generated pages easily. Simple description, predictable result.
Why I'm killing it
Every customization - a crutch. Want a non-standard button - dig into generator. Want special layout - new section type.
Abstraction is good until you need to go beyond its boundaries. And boundaries are needed constantly.
What's happening
Before admin panel was entirely on DSX. Now new pages I write in Vue. Old DSX pages I rewrite as needed.
DSX still lives in dispatcher, user-management, cms. Works - don't touch. But nothing new on it.
What I kept
CRUD generation via DSL. But result - regular Vue file. Can edit by hand.
Generated - got normal code. Not a black box.
Lesson
Abstractions save time on simple things. On complex - cost double.