# Domain modelling with clojure.spec

DevFeed: [Domain modelling with clojure.spec](<https://devfeed.tech/articles/domain-modelling-with-clojure-spec-32118.md>)

Original publisher: [Read original article](<https://adambard.com/blog/domain-modeling-with-clojure-spec/>)

Published: 2017-08-06T00:00:00Z

Content type: tutorial

Language: en

Sources: [Adam Bard](<https://devfeed.tech/sources/adam-bard.md>)

Topics: [Clojure](<https://devfeed.tech/topics/clojure.md>), [data](<https://devfeed.tech/topics/data.md>), [implementation](<https://devfeed.tech/topics/implementation.md>), [RSS Feed](<https://devfeed.tech/topics/rss-feed.md>), [API](<https://devfeed.tech/topics/api.md>), [F#](<https://devfeed.tech/topics/fsharp.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [clojure](<https://devfeed.tech/tags/clojure.md>), [data](<https://devfeed.tech/tags/data.md>), [demo](<https://devfeed.tech/tags/demo.md>), [functions](<https://devfeed.tech/tags/functions.md>), [guide](<https://devfeed.tech/tags/guide.md>), [implementation](<https://devfeed.tech/tags/implementation.md>), [schema](<https://devfeed.tech/tags/schema.md>), [validation](<https://devfeed.tech/tags/validation.md>)

## AI overview

This tutorial demonstrates how to use Clojure.spec to model and validate data and functions while developing an RSS feed fetcher and formatter. The example retrieves Hacker News items, filters domains using a blacklist, and fetches cleaned article content through Mercury's API.

## Source excerpt

Clojure.spec is, among other things, Clojure's official answer to tools like Typed Clojure and Plumatic's Schema. It represents an attempt to apply some validation to data and functions, without compromising Clojure's dynamism and data-is-data philosophy. In this post, I'll be working through a sample program by first outlining and modelling it with the help of clojure.spec, then using spec to guide me while I develop the implementation.