Clubhouse is a small startup with big plans and buzz. Its project management tool lets software engineers track the progress of tasks and projects and forecast how long they will take. It is designed for ease of use and integrates with popular tools such as Slack, GitHub, and Zapier so that it fits seamlessly into the engineer's existing workflow and scales with the team.
From the outset, Clubhouse's creators knew the typical software stack wasn’t going to be the right fit. Java would allow them to start coding right away, but over time, the code base would become complex and unwieldy. SQL databases would be restrictive with inflexible schemas and require a lot of extra development to create historical capabilities. Clubhouse’s plans required a concise programming language and a database that easily allows users to view the history of everything in the system.
Clojure, an open source, functional programming language, offered the efficient coding environment Clubhouse’s team needed. With Clojure they could be more agile, delivering solution capabilities with a fraction of the incidental complexity incurred if they used Java.
Clojure boasts elegant concurrency support, a rich set of immutable, persistent data structures and Java integration. Code in Clojure is written as a series of pure functions, making it easy to understand, test, and make thread-safe. Since it runs on the JVM, Clojure also allows Clubhouse’s developers to take advantage of familiar Java libraries as necessary.
"Because we use Clojure and Datomic, we’ve built a tool that has already moved beyond what many of our competitors do, and our speed of innovation -- new features, continuous deploys -- increases with every passing day."
In a crowded market, Clubhouse needed to differentiate out of the gate and then be able to quickly add new features and integrations with other tools. To facilitate this, Clubhouse’s developers turned to Datomic. A cloud-ready distributed database, Datomic offers both traditional database features (queries, joins, transactions) and new capabilities such as its unique data model that stashes information as immutable facts stored over time.
With Datomic, developers don’t have to write additional code for historical capabilities or caching. Datomic preserves a perpetual record of every fact and every transaction. This allows Clubhouse to easily expose the history of everything in the system, making it relatively trivial to implement features like calculating statistics and showing the history of stories in the UI.
In legacy databases, simply changing the name of a column would require difficult coordinated software deploys, but that’s not necessary with Datomic’s flexible schema. This means that Clubhouse can easily change the schema of their production data on the fly. “We don’t have to worry about bringing down the system to manipulate data and make sure everything is in sync. It just works. The way that the migrations were implemented is the way that you would want all migrations to work in a better world,” said Kurt Schrader, co-founder and CEO of Clubhouse.
Datomic’s dynamic features are key to Clubhouse’s functionality and are saving the startup untold hours of work. For more about how Clojure and Datomic can move your organization forward, contact us.