Advanced Projects
Prerequisites: Level 3 — Advanced
Build these using macros, core.async, spec, testing, Ring, next.jdbc, and Babashka from Level 3.
1. A REST API
Build a JSON API for a small inventory with Ring and Reitit, store data with
next.jdbc (SQLite or PostgreSQL), validate requests with spec or Malli,
manage components with Integrant, and test the handlers with
clojure.test. Package it as an uberjar and a Docker image.
2. A Concurrent Web Crawler
Use core.async channels and pipeline to fetch pages with a bounded number
of workers, extract links with regexes, respect a maximum depth, and stop
cleanly with timeouts.
3. A Babashka Toolkit
Write a bb.edn with tasks for your own daily chores — cleaning old
files, summarizing git activity, checking that URLs respond — including a
small macro-based DSL for defining the checks.