# dandelion v0.2.0 - Table of Contents

> The cloud pieces of a dandelion service: clustering, cache, ordered queue, durable pub/sub

## Pages

- [dandelion](readme.md)
- [Changelog](changelog.md)

## Modules

- Clustering
  - [Dandelion.Cluster](Dandelion.Cluster.md): Nodes finding each other. ≈ service discovery (Consul, Kubernetes DNS).
  - [Dandelion.Cluster.Postgres](Dandelion.Cluster.Postgres.md): A libcluster strategy: nodes find each other through a Postgres channel.

- Cache
  - [Dandelion.Cache](Dandelion.Cache.md): A cache in memory, on each node. ≈ Redis / Memcached used as a cache —
but it lives inside the app ([Cachex](https://hexdocs.pm/cachex)), so a
read costs no network trip.
  - [Dandelion.Cache.Listener](Dandelion.Cache.Listener.md): Keeps the node's cache in step with the others: removes keys that another
node deleted (`Dandelion.Cache.delete/1`), and empties the cache when a node
joins — the two sides may have missed each other's deletes while apart.

- Jobs and events
  - [Dandelion.PubSub](Dandelion.PubSub.md): Durable pub/sub: a topic, and the workers that each get every event.
≈ Google Pub/Sub topics with subscriptions, or Kafka consumer groups.
  - [Dandelion.Queue](Dandelion.Queue.md): The Oban setup of a dandelion app: what queues exist, the schedule, and how
a job left by a dead node is given back.
  - [Dandelion.Queue.Ordered](Dandelion.Queue.Ordered.md): A queue that keeps order **per key**. ≈ SQS FIFO message groups, Kafka
partitions, Pub/Sub ordering keys.

- Database
  - [Dandelion.Migration](Dandelion.Migration.md): The database changes dandelion needs, called from your own migration — the
way `Oban.Migration` is

## Mix Tasks

- [mix dandelion.gen.domain](Mix.Tasks.Dandelion.Gen.Domain.md): Adds one resource to a domain of a dandelion project, in the layout the
project already uses — the way you'd copy `shop` and rename it, done for you.

