Sweet tools to build your online business

Donut is a framework for building, deploying, and growing your software-as-a-service business. It's designed to let you focus on your core product, not on endless unrelated chores. Coming soon!

Get notified when Donut is released:

Start fast

Donut's goal is to ridiculously reduce the amount of effort it takes to release your product. Creating any SaaS product involves innumerable tasks that are incidental to your product's core value proposition, and Donut is meant to handle those for you.

Such tasks include: figuring out how to handle forms and navigation, handling API requests and responses, wiring up OAuth, and a lot more. The Donut design approach is to identify these burdensome tasks and provide the underlying structure that lets us build an ecosystem of solutions for these tasks - without compromising your code's maintainability and extensibility. And it provides many of the solutions itself :)

Stay Fast

Frameworks have a reputation for saving work in the short term but creating more work in the long term by obscuring how your code works (magic!) and creating a walled garden.

Donut attempts to avoid these pitfalls by adding just a little structure on top of libraries that are already widely-adopted in the Clojure community, like reitit and re-frame. If Donut doesn't do what you need, you're not locked in: you can just use these well-supported tools.

Beyond the app: Build your business

Building your business is more than just creating core product. It's managing payments, customers, monitoring, integrations, and on and on.

Donut's still in its infancy, but long-term it aims to take a wholistic approach to product development to support you in building your business.

Donut Vision

My vision for Donut is to empower anybody to be productive with Clojure. By creating a starting place that's as close as possible to the finish line, we make Clojure more appealing and help newcomers stay motivated as they learn the language.

I specifically want to empower people in a way that can benefit them financially. It's tough out there, and if we could give people great tools to improve their situations, that'd be awesome!

Along the way, I'd like to build a supportive community. With Clojure and kindness, there's no limit to what we can achieve! Join us in the #donut channel in Clojurians slack


Most of Donut's libraries are useful on their own:

donut.system is a dependency injection library that introduces system and component abstractions to:

  • help you organize your application
  • manage your application's startup and shutdown behavior
  • provide a light virtual environment for your application, making it easier to mock services for testing

datapotato lets you manage test fixtures in a way that's clear, concise, and easy to maintain. It's great for dramatically reducing test boilerplate.

dbxray provides metadata about JDBC databases and uses that data to generate specs/schemas that you can copy into your application. It can save you some time if you're just getting started with spec, malli, or plumatic schema.