The project's README from github.com/romshark/datapages. As one markdown file: README.md.
[!NOTE] Beta: Datapages is ready for production use. APIs are close to stable but can still change.
A Templ + Go + Datastar web framework and toolset for building GUI apps and web application in pure Go - no matter whether it's a real-time collaborative dynamic web app, a simple HTMX-style website, or an installable local-first GUI app.
See FAQ.md for frequently asked questions.
Datapages will provide your coding agents with the skills and CLI tools they need to generate well performing, resource-efficient apps and keep the code base coherent and maintainable, lowering token-usage, reducing potential for bugs and vulnerabilities as well as slowing the accumulation of technical debt.
Datapages parses your app source packages, lints them, reports errors, and generates all the wiring and boilerplate. Routing, sessions and authentication, SSE streams, per-tab server-side state, CSRF protection, type-safe URL and action helpers, Prometheus metrics, JavaScript service workers etc. - so your application code stays clean and takes full advantage of Go's strong static typing and high performance.
counter: Real-time counter built twice in one module, bare bones as app/simple and polished as app/fancy. Bare bones starting point, and the example of a module that builds more than one application.todolist: Real-time collaborative todo list with per-tab server-side state (Most Tao conform example).calculator: Hybrid calculator app that runs both as a multi-client server and single-client Desktop app.classifieds: Full-featured classifieds marketplace with sessions, auth, Prometheus metrics, Grafana dashboards and load testing.tailwindcss: Minimal static page demonstrating Tailwind CSS integration.webcomponents: Landing page with vanilla and Lit-based Web Components bundled via esbuild through a custom watcher.sqlitesessions: Custom sessions.Manager implementation backed by SQLite via sqinn-go (no cgo).fast-shim: A cached placeholder shown immediately and replaced with the live response.offline-cache: Service worker support with handler-cached pages, a PageOffline fallback, and tickets available without a connection.file-upload: Chunked file uploads to disk that can be paused, resumed and continued after a reload or a server restart, with server-enforced transfer limits.See the Guide.
See SPECIFICATION.md for the full source package specification, including handler signatures, parameters, return values, events, sessions, and modules.
Datapages ships pluggable modules with swappable implementations:
Manager[Data]
Broker
TokenWriter, TokenValidatorTokens - the built-in default: HMAC-SHA256 over the session token under a fixed domain-separator key, BREACH-resistant masking, nothing to configureTokenGeneratorThe reason I built Datapages is that the combination of Datastar + Go + Templ is my preferred way of writing server-centric web applications. But in every project I used this tech stack for I kept repeating the same code patterns and solving the same problems over and over again. I realized many developers are repeating the same patterns too and struggle with the common pitfalls:
Your Datastar frontends are your rocket to extraterrestrial worlds of the internet. The further you want to go, the heavier a rocket you'll require. Hence, you need powerful boosters to get it off the ground and overcome Earth's gravity. Such boosters exist in the form of awesome templates like zangster300/northstar, which will quickly get your rocket to the stratosphere and beyond. But power alone is not enough — you also need good stabilizing fins and thrust vectoring to keep your rocket steady as it flies. I felt like this part was lacking in the Go ecosystem of Datastar. By enforcing a common structure of types, methods and other conventions with tooling, Datapages provides not only the power but also the stability your rocket needs to stay in flight for long and consume as little brain fuel as possible.
Not only does Datapages allow you to start quickly with datapages init and jump straight into building your application, but it also continuously supports you keeping accidental complexity low by:
datapages gen to generate all boilerplate code consistently and guide you and your AI coding agents.datapages lint that can be used in CI/CD workflows for extensive static code analysis.datapages watch to give you an interactive hot-reload environment for a fast feedback loop with error reporting directly in the browser preview.Agentic coding is a big topic right now and likely here to stay. But LLMs tend to drift over time and introduce accidental complexity. So for AI to be used more effectively I wanted to provide the skills and instructions necessary for agents to know how to deal with this tech stack and call into Datapages CLI help them when they drift by providing them with useful feedback.
Datapages is a good fit if you:
See CONTRIBUTING.md for development setup and commands, and AGENTS.md for code style, testing conventions, commit message format and project structure.