# Design Tutorials

Long-form design essays. Bodies live on GitHub; this index is on HexDocs.

For how-to docs, start with [Quick Start](https://hexdocs.pm/rheo/quick-start.html).

1. [Why put consumer groups in front of a database?](https://github.com/thanos/rheo/blob/main/docs/tutorials/01-why-consumer-groups-on-a-database.md)
2. [What is a consumer group?](https://github.com/thanos/rheo/blob/main/docs/tutorials/02-what-is-a-consumer-group.md)
3. [Why ACK is harder than it looks](https://github.com/thanos/rheo/blob/main/docs/tutorials/03-why-ack-is-harder.md)
4. [Building Rheo as an Elixir/OTP library](https://github.com/thanos/rheo/blob/main/docs/tutorials/04-rheo-as-otp-library.md)
5. [Demand, backpressure, and database consumers](https://github.com/thanos/rheo/blob/main/docs/tutorials/05-demand-and-backpressure.md)
6. [MongoDB as a searchable event log](https://github.com/thanos/rheo/blob/main/docs/tutorials/06-mongodb-searchable-event-log.md)
7. [Killing consumers on purpose](https://github.com/thanos/rheo/blob/main/docs/tutorials/07-killing-consumers.md)
8. [Searching the stream](https://github.com/thanos/rheo/blob/main/docs/tutorials/08-searching-the-stream.md)
9. [Why Rheo 0.2 broke its 0.1 API](https://github.com/thanos/rheo/blob/main/docs/tutorials/09-why-rheo-0-2-broke-its-0-1-api.md)
10. [If Rheo really is database-agnostic, prove it with ETS](https://github.com/thanos/rheo/blob/main/docs/tutorials/10-if-rheo-is-database-agnostic-prove-it-with-ets.md)
11. [Search and replay the event history](https://github.com/thanos/rheo/blob/main/docs/tutorials/11-search-and-replay-the-event-history.md)
12. [ACKs are not a cursor](https://github.com/thanos/rheo/blob/main/docs/tutorials/12-acks-are-not-a-cursor.md) — partitions, frontier, lag
13. [One consumer API, PostgreSQL and SQLite underneath](https://github.com/thanos/rheo/blob/main/docs/tutorials/13-one-consumer-api-postgresql-and-sqlite.md)
14. [Rheo is not Broadway — it feeds Broadway](https://github.com/thanos/rheo/blob/main/docs/tutorials/14-rheo-is-not-broadway-it-feeds-broadway.md)
15. [Breaking Rheo before anyone depends on the wrong abstraction](https://github.com/thanos/rheo/blob/main/docs/tutorials/15-breaking-rheo-before-anyone-depends-on-the-wrong-abstraction.md)
16. [Rheo on Redis Streams: portable sequence, native PEL](https://github.com/thanos/rheo/blob/main/docs/tutorials/16-rheo-on-redis-streams-portable-sequence-native-pel.md)
17. [Freezing Rheo before 1.0](https://github.com/thanos/rheo/blob/main/docs/tutorials/17-freezing-rheo-before-1-0.md)

Hands-on: [Livebook demos](https://hexdocs.pm/rheo/rheo_demo.html)
([source index](https://github.com/thanos/rheo/blob/main/notebooks/rheo_demo.livemd)).

Upgrading: [Upgrading index](https://hexdocs.pm/rheo/upgrading.html).
