# Slackbox v0.1.0 - Table of Contents

> A Swoosh-style Slack library — send Slack messages through one choke point with per-environment adapters, plus a fake Slack dev UI and test assertions.

## Pages

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

## Modules

- [Slackbox](Slackbox.md): Slackbox — a Swoosh-style Slack library.
- [Slackbox.Adapter](Slackbox.Adapter.md): The contract every Slackbox adapter implements (`Live`, `Local`, `Test`).
- [Slackbox.Adapters.Live](Slackbox.Adapters.Live.md): Live adapter. A thin, owned [`Req`](https://hexdocs.pm/req)-based Slack Web API
client — the SAME app code that renders in the fake dev UI (`Local`) actually
posts to Slack when this adapter is configured.
- [Slackbox.Adapters.Local](Slackbox.Adapters.Local.md): Local adapter. Persists outbound messages into the in-memory `Slackbox.Store`
(which powers the fake-Slack dev UI) instead of talking to the real Slack API.
- [Slackbox.Adapters.Test](Slackbox.Adapters.Test.md): Test adapter. Captures each outbound call by sending `{:slackbox, action, args}`
to the current process and to every pid in `$callers` (so captures survive
`Task.async` and `async: true` tests). Pair with `Slackbox.TestAssertions`.

- [Slackbox.DashboardLive](Slackbox.DashboardLive.md): A Slack-like "fake Slack" dashboard, rendered live. A host app can mount it
with `live "/dev/slack", Slackbox.DashboardLive`.
- [Slackbox.Demo](Slackbox.Demo.md): A one-command demo server for the fake-Slack dev UI.
- [Slackbox.Demo.SlackApp](Slackbox.Demo.SlackApp.md): A sample Slack app standing in for *the user's own app* in the demo. It plays
the role of the app that receives interactions and events
- [Slackbox.Message](Slackbox.Message.md): A Slack message with composable pipe builders — the Slack analogue of
`Swoosh.Email`. The struct alone fully determines what the fake Slack dev UI
renders, so message *content* lives here (not in per-call options).
- [Slackbox.Notifier](Slackbox.Notifier.md): Turns a module into your app's Slack notifier — the single choke point every
outbound Slack call flows through, dispatching to a per-environment adapter.
- [Slackbox.ResponsePlug](Slackbox.ResponsePlug.md): A `Plug.Router` a host app mounts to receive Slack `response_url` callbacks.
- [Slackbox.Signature](Slackbox.Signature.md): Slack request signing (HMAC-SHA256).
- [Slackbox.Simulator](Slackbox.Simulator.md): Turns a UI button click in the fake-Slack dashboard into a realistic inbound
Slack interaction.
- [Slackbox.Store](Slackbox.Store.md): In-memory store of Slack messages for the fake-Slack dev UI.
- [Slackbox.Test](Slackbox.Test.md): Pure inbound-payload builders for unit-testing your Slack endpoints.
- [Slackbox.TestAssertions](Slackbox.TestAssertions.md): Assertions for the `Slackbox.Adapters.Test` adapter, in the spirit of
`Swoosh.TestAssertions`. `import` it in your test module

## Mix Tasks

- [mix slackbox.demo](Mix.Tasks.Slackbox.Demo.md): Boot a self-contained demo server for the fake-Slack dev UI.

