Skip to content
AgileLogics
Advanced 5 min read

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.