Some info on what Duct is, what it tries to solve, high level how it solves it. Purpose of Duct. Other "high level overview" information. Mention Integrant here.
Install Lein, run lein new duct my-app
. Show available options (in a table?).
Other necessary explanations.
A link to #Clojurians Slack #Duct
Explain how Keywords, Namespacing, Inheritance, Hierarchy, Multimethods work.
When I started Duct I had no idea about Integrant, I thought Duct was its own thing. Of course I was extremely new to Clojure at the time so it's most likely mostly my own fault. But we should make it clear that the reader must learn Integrant, and understand its concepts.
Explain how the profile system works. Why it's useful. How to use it. Base profile is the core of your system.
Explain how the module system works. How it differs from the keys inside base profile. Examples of what modules could do (reference an existing duct module and it's purpose).
Explain Duct hierarchy. The :duct/daemon and other keys. How you can use duct_hierarchy.edn.
I'm not too familiar with this concept. But we'd probably want to write something up. As well as a working example of how you would, for example, create a DB boundary and test it.
Show all available readers and explain them.
#duct/env #duct/include #duct/resource #duct/displace #duct/replace #ig/ref #ig/refset
Check installation section, setup postgres.
lein duct new, (dev) (go), explain what you can do in the dev
environemnt.
access config
and system
, call (restart)
and (auto-restart)
etc
Create a simple ring handler using ataraxy. Just returns static data for now
Create a database connection and add a migration. Explain how lein run works, and how it connects to the keyword hierarchy.
lein run :duct/migrator
Create a Boundary to Query something (users? different topic?)
Add querying to a handler, handler references the db.
Write some tests, how to start the Duct system for testing.
Write setting up a frontend app. Maybe we should have a opinionated default for the +cljs option? re-frame for example? I also prefer shadow-cljs over figwheel personally.
Create an uberjar with lein and run it
Short guide to create a custom profile.
Short guide to create a custom module. Maybe something to generate routes with?
List of all available modules and their purpose (e.g. module-sql adds HikariCP + Ragtime, for SQL connection and migrations)
--- Question: Maybe these modules should have their own guide page on cljdoc? The main Duct cljdoc could link to them. (But there should be a short description here at the very least)
module-cljs module-logging module-sql module-web