Understanding the "why" behind ANTSAND makes the "how" much easier to master.
If you're coming from React, Tailwind, or Next.js, this will look different. That's okay. The system is intentional, well-documented, and has 10+ years of production use behind it. Give it a few hours before judging—the patterns will start making sense.
ANTSAND was built to solve real problems that modern frameworks still struggle with: fast static deployment, zero-database runtime, and true separation of data from presentation.
Started as a social platform with profile pages, posts, and tribes
Evolved into a full website builder with Databoard
Added JSON-based static site generation for maximum speed
Introduced the CSS DSL for declarative styling
ANTSAND uses two types of CSS classes working together. This isn't accidental—it's architectural.
.antsand-article, .antsand-btn, .antsand-card
Describe what something is. Used for components with multiple properties.
.text-center, .antsand-mt-4, .antsand-flex
Do one thing. Used for quick overrides and composition.
If you're comfortable with Tailwind, you'll feel at home. ANTSAND includes utility classes that follow familiar patterns:
/* Spacing - like Tailwind */
.antsand-m-0 .antsand-m-4 .antsand-mt-2 .antsand-px-6
.antsand-p-0 .antsand-p-4 .antsand-pb-2 .antsand-py-6
/* Typography */
.antsand-text-sm .antsand-text-lg .antsand-text-2xl
.antsand-text-bold .antsand-text-center
/* Flexbox */
.antsand-flex .antsand-flex-col .antsand-items-center
.antsand-justify-between .antsand-gap-4
/* Colors */
.antsand-text-primary .antsand-bg-dark .antsand-text-muted
Note: We prefix with antsand- to avoid conflicts with other frameworks.
You can use these alongside semantic classes for maximum flexibility.
When you deploy a site from ANTSAND, it generates static JSON files. No database queries at runtime.
User visits → Server queries DB → Template renders → HTML sent
~200-500ms per request
User visits → CDN serves pre-built HTML + JSON
~20-50ms per request
api_data.json, api_blog_data.json, api_posts_data.json
In Databoard, you'll see css_inline alongside css_class. This isn't laziness—it's power.
// In your DSL CSS:
{
"header": {
"section": {
"css_class": "antsand-section antsand-py-6",
"css_styles": {
"style": "background: linear-gradient(135deg, #1a1a2e, #2d3436);"
}
}
}
}
Pro tip: Inline styles have highest CSS specificity. Use them for final overrides that should never be changed by classes.
ANTSAND is structured so you never need !important. The cascade is a feature.
/* Load order defines priority */
1. Foundation (variables, reset)
2. Layout (containers, grid)
3. Components (buttons, cards)
4. Patterns (hero, features)
5. Themes (overrides everything)
6. Inline styles (highest specificity)
If you need to override something, you either:
A system where:
Ready to dive in? Start with Introduction →