Nixi Roadmap
This document outlines how Nixi will evolve from its current state to a full-featured web framework comparable to Next.js, with unique advantages like zero build step, native Lua implementation, and HTMX integration.
Current Status
Phase 1: Core Experience Complete
- Native CSS DSL ✅ Done
- HTMX bindings ✅ Done
- GTK bindings ✅ Done
- File-based routing ✅ Done
- Live reload ✅ Done
- CLI tool ✅ Done
Evolution Timeline
Phase 2: CLI & Tooling Planned
Essential development tools to improve developer experience.
-
nixi new <project>- Project scaffolding Planned -
nixi generate component- Component generator Planned -
nixi generate route- Route generator Planned -
nixi dev- Dev server with live reload Planned -
nixi build- Production build Planned -
nixi add <package>- Install Lua packages Planned -
nixi doctor- Check system requirements Planned
Phase 3: Full-Stack Features Future
Server-side rendering, layouts, middleware, and API routes.
- Layouts & templates Future
- API routes Future
- Server-Side Rendering (SSR) Future
- Static Site Generation (SSG) Future
- Middleware system Future
- Session management Future
- Cookie handling Future
Phase 4: Component Library Future
Pre-built UI components for rapid development.
Phase 5: Database Integration Future
ORM, migrations, and query builder for data persistence.
-
Nixi.db- Database connector (SQLite, Postgres, MySQL) Future -
Nixi.model- ORM/ActiveRecord style Future - Schema migrations Future
- Fluent query API Future
- Database seeding Future
Phase 6: State Management Future
Store, session, and caching utilities.
-
Nixi.store- State management (Redux/Zustand equivalent) Future -
Nixi.session- Session handling Future -
Nixi.cache- Caching (React Query/SWR equivalent) Future
Phase 7: Advanced Features Future
Real-time, i18n, validation, auth, and more.
Phase 8: Async & Multi-threading Future
High-performance concurrent I/O for demanding applications.
- Promise implementation Future
-
Nixi.async()- Coroutine wrapper Future -
Nixi.await()- Async/await support Future - Thread pool manager Future
-
Nixi.http- Async HTTP client Future -
Nixi.fs- Async file system Future - Multi-thread request handling Future
Competitive Advantages
| Feature | React | Vue | Next.js | Nixi |
|---|---|---|---|---|
| Zero build step | ❌ | ❌ | ❌ | ✅ |
| Pure Lua | ❌ | ❌ | ❌ | ✅ |
| HTMX-native | ❌ | ❌ | ❌ | ✅ |
| Web + Desktop | ❌ | ❌ | ❌ | ✅ |
| Native CSS DSL | ❌ | ❌ | ❌ | ✅ |
| File-based routing | ⚠️ | ⚠️ | ✅ | ✅ |
| Live reload | ⚠️ | ⚠️ | ⚠️ | ✅ |
| Virtual DOM | ✅ | ✅ | ✅ | ❌ (faster) |
| TypeScript | ✅ | ✅ | ✅ | ⚠️ (LuaLS) |
| CLI tool | ❌ | ❌ | ⚠️ | ✅ |
| Nix shell support | ❌ | ❌ | ❌ | ✅ |
| Learning curve | High | Medium | High | Low |
Module Structure
The Nixi framework is organized into focused modules:
src/nixi/
├── types.lua # LuaLS type definitions (central)
├── init.lua # Core router + response helpers
├── style.lua # CSS DSL
├── htmx.lua # HTMX bindings & extensions
├── anim.lua # Animation system (CSS + HTMX)
├── gtk.lua # GTK bindings for desktop GUI
├── router.lua # File-based routing
├── livereload.lua # Live reload module
├── component.lua # HTML DSL components
├── db.lua # Database connector (planned)
├── ui/ # Component library (planned)
│ └── init.lua
└── middleware.lua # Middleware system
Design Decisions
| Decision | Choice |
|---|---|
| CSS property syntax | camelCase (backgroundColor, marginTop) |
| Selector structure | Flat (no nesting) |
| CSS delivery | Auto-inject in Layout + /style.css endpoint |
| HTMX approach | Native attribute bindings + HTMX extensions |
| Animation approach | CSS keyframes + HTMX OOB swaps |
| Type safety | Full LuaLS (EmmyLua) annotations for all modules |
Get Involved
Nixi is an open-source project. Contributions, feedback, and feature requests are welcome!