Advanced Projects
Prerequisites: Level 3 — Advanced
Build these using computation expressions, async, testing, web frameworks, and the production practices from Level 3.
1. A JSON Web API
Build a small REST API with Giraffe or Falco for a book catalog: routes
for list, get, create, and delete, request validation that returns
Result, JSON serialization, and tests for the handlers with Expecto or
xUnit. Package it in a Docker image.
2. A Concurrent Web Crawler
Crawl pages from a start URL with task or async, limit concurrency,
track visited URLs in a MailboxProcessor agent, and report broken links
and response times. Support cancellation with a CancellationToken.
3. A Domain Model That Can't Go Wrong
Pick a domain you know (orders, bookings, a card game) and model it so
invalid states can't be represented: single-case unions with smart
constructors, unions for every state, and a workflow of functions that
return Result. Write property-based tests with FsCheck and, as a stretch
goal, a Fable front end that reuses the same domain code.