Our great sponsors
-
InfluxDB
Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
-
toucan
A classy high-level Clojure library for defining application models and retrieving them from a DB (by metabase)
-
WorkOS
The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.
-
startrek
A very simple demonstration of coding a reasonably simple API and UI using Clojure, Donut System, i18n support, error handling, HTMX and tests!
-
toucan2
Successor library to Toucan with a modern and more-extensible API, more consistent behavior, and support for different backends including non-JDBC databases and non-HoneySQL queries. Currently in active beta.
-
xtdb
An immutable database for application development and time-travel data compliance, with SQL and XTQL. Developed by @juxt
-
Metabase
The simplest, fastest way to get business intelligence and analytics to everyone in your company :yum:
-
logseq
A local-first, non-linear, outliner notebook for organizing and sharing your personal knowledge base. Use it to organize your todo list, to write your journals, or to record your unique life.
-
athens
Athens is a knowledge graph for research and notetaking. Athens is open-source, private, extensible, and community-driven.
-
SaaSHub
SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives
Check Clerk (https://clerk.vision/) for the boundaries between data science / data viz / moldable programming
The cljs stack I hear about a lot (and use) is ShadowCLJS with reagent (https://reagent-project.github.io/) and re-frame (https://day8.github.io/re-frame/). ShadowCLJS is more of a build tool, but is really well documented and easy to use. Reagent is basically react but a simpler API, and re-frame is a layer on top of that provides data subscriptions and event-handlers to manage app state. It's overkill for some apps but I find it's actually super easy to work with and not as much complexity as I thought.
For backend there is luminus (https://luminusweb.com/) or Kit (https://kit-clj.github.io/). They are basically project templates that wire together a ton of popular solutions for various things - database access, migrations, security, html templating, etc. Also includes frontend frameworks like re-frame if you want.
As I understand it, the server is being switched over to Erlang https://github.com/sonic-pi-net/sonic-pi/tree/dev/app/server...
> Deps is well documented.
> The issue I personally found is that I needed to look at a bunch of OS project's deps.edn to see how people commonly structure things. Other than that it is a simple tool.
This strikes me as a contradiction, because if it was well documented you wouldn’t need to look at other people’s configs to see how to use it.
My experience with deps.edn is that every time I start a project and make a deps.edn file, I immediately draw a blank and don’t know how to structure it, so I open ones from other projects to start lifting stuff out of them.
I still don’t know how to reliably configure a project to use nrepl or socket repl without just using an editor plugin. I definitely have no idea how to use those in conjunction with a tool like reveal.
To me, none of that is simple. Simple would be like Emacs’ use-package. With that I know how to add dependencies, specify keybinds, and do initialization and configuration off the top of my head. And it has really nice documentation with tons of examples.
https://github.com/jwiegley/use-package
The cljs stack I hear about a lot (and use) is ShadowCLJS with reagent (https://reagent-project.github.io/) and re-frame (https://day8.github.io/re-frame/). ShadowCLJS is more of a build tool, but is really well documented and easy to use. Reagent is basically react but a simpler API, and re-frame is a layer on top of that provides data subscriptions and event-handlers to manage app state. It's overkill for some apps but I find it's actually super easy to work with and not as much complexity as I thought.
For backend there is luminus (https://luminusweb.com/) or Kit (https://kit-clj.github.io/). They are basically project templates that wire together a ton of popular solutions for various things - database access, migrations, security, html templating, etc. Also includes frontend frameworks like re-frame if you want.
The cljs stack I hear about a lot (and use) is ShadowCLJS with reagent (https://reagent-project.github.io/) and re-frame (https://day8.github.io/re-frame/). ShadowCLJS is more of a build tool, but is really well documented and easy to use. Reagent is basically react but a simpler API, and re-frame is a layer on top of that provides data subscriptions and event-handlers to manage app state. It's overkill for some apps but I find it's actually super easy to work with and not as much complexity as I thought.
For backend there is luminus (https://luminusweb.com/) or Kit (https://kit-clj.github.io/). They are basically project templates that wire together a ton of popular solutions for various things - database access, migrations, security, html templating, etc. Also includes frontend frameworks like re-frame if you want.
There's this:
https://github.com/metabase/toucan
But beware what you do with it. Avoid DB side effects from business logic.
No affiliation, but I think this is a great example CRUD API.
https://github.com/dharrigan/startrek
Hi, Toucan library author here.
+1 on avoiding side effects from business logic. This applies not just to Toucan, but to database code in general. Toucan is there to give you a way to define behaviors when interacting with your application database, for example transforming certain columns when you fetch rows from a certain table from the database. It's that plus utility functions for interacting with your database. Not really an ORM.
Either way, Toucan 2 is out now: https://github.com/camsaul/toucan2 I'm still working on fully documenting it but it's already being used in the wild and Toucan 1 will probably be archived soon
Obligatory shout out to Babashka [0] which is interpreted Clojure. You just download a simple binary and you can get going. Widely used for quick-running scripts, with a lot of batteries included.
[0]: https://babashka.org/
Thanks. I don't know to what extend its "better-because-of-clojure" but I also found overtone https://github.com/overtone/overtone which should be good fun (though the underlying synthesizer is supercollider/C++).
https://github.com/athensresearch/athens
The underlying in memory datalog style database that can run in the browser that enables these apps
I thought you might be trolling. But then when I looked at the Clojure repo on Github https://github.com/clojure/clojure the last commit was 2 months back. There is some merit in your arguments.
If your'e using PostgreSQL, checkout https://github.com/retro/penkala . It provides most of the things you would expect when dealing with the database without it being an ORM. IF you're interested in how the API looks checkout https://github.com/retro/penkala/blob/master/test/com/verybi... which implements most of the queries that can be found on https://www.postgresqltutorial.com
note: I'm the author of Penkala