I’d like to ask what your recommendations are for to-do list app tutorials in Clojure/ClojureScript.
I did a cursory search on Clojureverse and it seems that there isn’t yet a thread of people’s recommendations (please do correct me if there is!).
In terms of to-do list app walkthroughs / tutorials: What has worked for you? What would you like to see that doesn’t yet exist? What have you wanted to try, but felt it was too challenging / inaccessible?
I’m personally interested in what are the typical student/learner app architectures/designs versus how people working in the industry tend to do, even if only for smaller / “trivial” apps.
Context / Rationale: I’m attempting to build my own (opinionated) to-do list app, and I’d like to learn from others on how they approached similar projects. You can see where it is today 2021/08/16 as well as hopefully some progress in the fuuuture
A feature I’d like to see in a to-do list is for prioritization to be relative, not absolute. I’d like to be able to add 3 new, equal priority tasks above ‘Priority 1’. Or rather for them to be the new P1 and for everything else to move down a level.
@henry_w What would the rationales be for having auth and database?
I’m personally interested to go simpler as possible, to simply have a static host capable of serving a simple localstorage or cookie saving to-do list - and an even simpler app could do away with persistence.
Auth and database is probably what would start to differentiate a beginner/student/learner from what the industry will ask of a professional.
I doubt many people nowadays contract developers to have them build a local only application.
It’ll be pretty common to want at the minimum a way to sync across all your devices, if not straight up cloud storage.
And as soon as you ask for that, well auth will be needed, since people will tend to not want their data be made public or for anyone to get easy access of or to have it leak.
I think this is also where people will most struggle, since without a framework Clojure throws you in with the lions. Going from no DB to a DB with auth is a big jump, being able to run, maintain, and secure a DB, manage migrations, permissions, backups, scale, consistency, etc.
Todo list apps demonstrate some particular thing, with ‘todo’ being a common set of requirements that’s a step up from “hello, world” but not too complicated.
My one was demoing clojurescript+firebase (the ui lib and build tool are secondary), and e.g. this one is clojurescript+reagent+in-app-tutorial re-learn demo.
If the one you’re thinking of is just demoing clojurescript, that’s great too. Although it will inevitably be clojurescript+some-ui-lib+some-way-of-compiling
Have you heard of the TodoMVC project? Open source project where the same Todo app is implemented in a bunch of different languages/frameworks, so that developers can compare them.
I made an implementation in ClojureScript a while ago, and put up the entire development on YouTube.
Just a quick update, I wanted to share that I got stuck trying to refactor my code to work with a FSM. My intention was to avoid using imperative style loops and non-idiomatic Clojure code. I believe I need better study references to enable me to implement clean state changes in the program. So, towards that effort, here’s my research:
Research 2021_11_01 Todo List Apps (for CLI & Web)
Note: Starring is my way of “highlighting” my next items to investigate. I’m particularly interested in “tiny” apps with fewer technologies*
* and then also I’m interested in command line apps, architectures designed to facilitate clean separation of concerns (Hexagonal, Polylith, Membrane, etc.), Full-stack Web Dev, Pedestal, Reagent, Re-frame, GraalVM, Datomic, DataScript, Datalevin… to name a few things.
Update: This exercise is still on-going. Currently, I am learning more about Hiccup, Reagent, Re-Frame, and full-stack development so I can answer some of my questions regarding how to approach the to-do list app within a GUI context.
My goal is to refactor out of this code sketch a “MVP” or “SLC” of a “CRUD” to-do list app which has nothing extraneous to the goal of creating a simple, concise, and clear to-do list program using ClojureScript, a dash of CSS (I promise to exercise restraint), and Reagent Hiccup, while using none of the following: servers, databases, bespoke task management algorithms, or anything beyond what is needed to render DOM elements to the window as well as take in user inputs (also from the browser window). Since I’ve always been fascinated with terminals, shells, and command line interfaces, I’d love to make a CLI “port” as well
Here is a MVP ClojureScript to-do list “mini-app”:
It supports item adding, item removing, marking items as complete, and undo’ing the marking of items as complete. This is the tiniest version of a to-do list app that I wanted to see back when I first started working on my to-do list passion project. While this version is runnable from Klipse, I’d like to see that I can (for the sake of curiosity) get a version of this to run locally on my machine from a Shadow-CLJS web app, from Maria Dot Cloud, and from Nextjournal, as well as other target platforms you guys may recommend.
Here is a more fully fleshed out version of my AutoFocus code sketch, now it’s own command line application, rather than a Maria Dot Cloud code sketch:
While AutoFocus-CLJ can be run from the REPL, running it from the terminal is ideal for its working-as-intended screen clearing behavior.