Lean into hypermedia
Too much of the web has been built as heavy, single page JavaScript apps when most should use simpler multi-page architectures with hypermedia as the engine of application state. The use of single page JavaScript architecture as a hammer for every nail has been a mistake. Kixx leans into server side template driven HTML and a RESTful interaction model.
Build with JavaScript
Programmers love to hate JavaScript, and often for good reason. JavaScript is often used for the wrong reasons, and usually poorly executed. But, love it or hate it, JavaScript has become the language of the Web. It has also evolved into a language which is a delight to work with. It is accessible, has good primitives for the web, unlocked isolated edge compute, and created more opportunities for exciting change. These reasons make it a perfect candidate for a new web framework.
Be portable by design
Applications built with Kixx should be able to move freely between different runtimes and platforms. An application built with Node.js should also run in Deno. An application deployed on Cloudflare should be deployable on a Linux server with minimal changes. While it's not practical to support the entire long tail of runtimes and platforms, we should always maintain a pragmatic menu of options so that application owners are not locked into a platform unless they choose to be.
Provide escape hatches
An application built with Kixx should be easy to hack on. We don’t lock down the screws to prevent developers from getting under the hood. In fact, we do the opposite and make it acessible by default. Developers should always be able to modify and shape their applications for use cases we couldn’t possibly have imagined.
Offer desired paths
Kixx should have opinions about the best way to address common use cases and provide happy paths to get there. Desired paths are well-trodden routes where developers will naturally want to go. But, while we provide desired paths by default, we must also take care to never fence developers in, providing escape hatches and options to do things differently.
Be accessible
By default Kixx does not require any database servers or containers. A Kixx application should just work, out of the box, on any laptop, without extensive environment setup or configuration. In fact, the vast majority of applications should never need a database outside of the local in-process filesystem. Kixx should support adapters for all kinds of databases, static build systems, and caching layers, but it must always be able to operate without them.
Bury the complexity
There are two kinds of complexity in every web application: Inherent complexity and accidental complexity. Inherent complexity is necessary for your app to run, like handling HTTP requests, authentication, and data storage. Kixx hides inherent complexity behind useful abstractions while still allowing users to access it when needed. But, Kixx also helps developers avoid accidental complexity by providing good desired paths and built in protections against bloat.
High quality agentic engineering
Producing high quality output with agentic tools is possible, and we believe it's a worthy objective. A good agent harness provides high quality patterns for the agents to follow, it provides the right context at the right time, and is disciplined about token consumption. Agentic engineering should result in better testing, more frequent code cleanup, and a high quality codebase; not more slop.