A Ring middleware adapter for Inertia.js to build single-page apps in Clojure without building a separate API.
Inertia Clojure is a Ring middleware adapter for Inertia.js that allows Clojure developers to build single-page applications without creating a separate API. It bridges server-side Clojure routes with client-side JavaScript frameworks by following the Inertia.js protocol, enabling a seamless full-stack development experience.
Clojure web developers using Ring-based frameworks (e.g., with Reitit or Compojure) who want to build modern SPAs with minimal complexity and avoid maintaining a separate API layer.
Developers choose Inertia Clojure because it integrates Inertia.js into the Clojure ecosystem, reducing boilerplate and enabling rapid development of full-stack SPAs with familiar server-side routing and templating libraries.
A Clojure adapter for Inertia.js
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Seamlessly fits into any Ring-based Clojure app, as shown with compatibility for routing libraries like Reitit or Compojure in the usage examples.
Allows developers to use any HTML templating library (e.g., Hiccup, Selmer) by only requiring a data-page attribute in the template function, per the README.
Implements key Inertia.js features like shared data, partial reloads, and asset versioning, which optimize performance and ensure consistency, as listed in the features.
Eliminates the need for a separate API layer, reducing complexity and enabling rapid full-stack SPA development, aligning with the Inertia.js philosophy described.
The README explicitly notes that lazy loaded props and root template data are not yet implemented, limiting some Inertia.js capabilities for complex apps.
Requires understanding both Inertia.js protocol and Ring middleware, with the middleware needing to be the last item in the chain, which can be error-prone for newcomers.
As a Clojure-specific adapter for Inertia.js, it has fewer community resources and examples compared to mainstream JavaScript SPA frameworks or other Clojure web tools.