A next-generation framework for modern web applications. Fast, secure, and zero-config by design.
Everything has a place. Convention over configuration.
my-project/
├── controller/ # Request handlers
├── middleware/ # Route middlewares
├── public/ # Static assets
├── route/ # Route definitions
├── schema/ # Database schemas
├── skeleton/ # Page layouts
├── view/
│ ├── content/ # Page templates
│ ├── css/ # Tailwind source
│ ├── head/ # <head> partials
│ ├── header/ # Header partials
│ └── footer/ # Footer partials
└── odac.json # Configuration
Your application logic. Each file handles requests and prepares data for views.
Map URLs to controllers. Simple, declarative routing.
HTML templates organized by type. Tailwind CSS source lives in view/css/.
Database table definitions. Auto-migrated on every startup.
Page layouts that wrap your content. Define once, reuse everywhere.
Centralized config for database, routes, and framework behavior.
Four steps to your first custom page.
Map a URL to a controller in route/www.js
Odac.Route.page('/my-page', 'page.mypage')
Add logic in controller/page/mypage.js
module.exports = function(Odac) {
Odac.View.set({
skeleton: 'main',
head: 'main',
header: 'main',
content: 'mypage',
footer: 'main'
})
}
Create your template in view/content/mypage.html
<section class="py-12">
<h1 class="text-4xl font-bold">My Page</h1>
<p class="text-brand-900/50">Welcome!</p>
</section>
Customize the theme in view/css/app.css
@theme {
--color-brand: #0071e3;
--font-display: "Inter", sans-serif;
}
Enterprise grade performance out of the box.
Smooth page transitions without full reloads, giving your users a native app feel.
Automatic CSRF protection and secure session management built into the core.
Optimized routing and view engine designed for the highest possible throughput.
The default template now leverages Tailwind CSS for professional, scalable designs.
Start by editing view/content/home.html to replace this page with your own vision.