# kevinodongo/fizzy architecture

> Architecture diagram of the GitHub repository kevinodongo/fizzy, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/kevinodongo/fizzy
- Repository: https://github.com/kevinodongo/fizzy

## Overview

Fizzy is a multi-tenant Kanban application for tracking issues and ideas. A user works with board columns and cards, moving cards between workflow states; the browser’s drag-and-drop controller submits a Turbo Stream request to the URL supplied by the rendered target. The tree also shows distinct collaboration, discovery, account, storage, notification, and SaaS billing capabilities. Source excerpts are limited, so connections among most Rails controllers, models, jobs, and external services are not asserted where their runtime calls were not shown.

Main entry points: [`app/javascript/controllers/drag_and_drop_controller.js`](https://github.com/kevinodongo/fizzy/blob/main/app/javascript/controllers/drag_and_drop_controller.js) (Board interactions), [`saas/app/controllers/account/subscriptions_controller.rb`](https://github.com/kevinodongo/fizzy/blob/main/saas/app/controllers/account/subscriptions_controller.rb) (SaaS billing), [`app/controllers/boards`](https://github.com/kevinodongo/fizzy/tree/main/app/controllers/boards) (Board and drop endpoints), [`app/controllers/cards`](https://github.com/kevinodongo/fizzy/tree/main/app/controllers/cards) (Card endpoints)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_work["Kanban workflow"]
  node_work_ui["Board interactions"]
  node_board_endpoints["Board and drop endpoints"]
  node_card_endpoints["Card endpoints"]
  node_column_endpoints["Column endpoints"]
  node_board_model["Boards and columns<br/>[board.rb]"]
  node_card_model["Cards and workflow<br/>[card.rb]"]
end

subgraph group_collab["Collaboration and discovery"]
  node_collab_endpoints["Comments and activity"]
  node_notification_endpoints["Notifications"]
  node_search_endpoints["Search"]
  node_filters_timeline["Filters and timelines"]
  node_event_model["Events and mentions<br/>[event.rb]"]
end

subgraph group_accounts["Accounts and tenancy"]
  node_account_endpoints["Account settings"]
  node_identity_model["Users and identities<br/>[user.rb]"]
  node_account_model["Tenant accounts<br/>[account.rb]"]
end

subgraph group_platform["Platform services"]
  node_storage_model["Upload storage ledger<br/>[storage.rb]"]
  node_storage_database[("Application database<br/>[schema.rb]")]
  node_background_jobs["Background jobs"]
  node_mailers["Email delivery"]
  node_push["Web push<br/>[push.rb]"]
  node_billing["SaaS billing"]
end

node_user(("Fizzy user"))
node_browser(("Web browser"))
node_stripe(("Stripe"))

node_user -->|"uses"| node_browser
node_browser -->|"interacts"| node_work_ui
node_work_ui -->|"posts drop"| node_column_endpoints
node_user -->|"requests boards"| node_board_endpoints
node_user -->|"works with cards"| node_card_endpoints
node_user -->|"collaborates"| node_collab_endpoints
node_user -->|"searches"| node_search_endpoints
node_user -->|"filters activity"| node_filters_timeline
node_user -->|"manages account"| node_account_endpoints
node_user -->|"reviews alerts"| node_notification_endpoints
node_billing -.->|"billing integration"| node_stripe

click node_work_ui "https://github.com/kevinodongo/fizzy/blob/main/app/javascript/controllers/drag_and_drop_controller.js"
click node_board_endpoints "https://github.com/kevinodongo/fizzy/tree/main/app/controllers/boards"
click node_card_endpoints "https://github.com/kevinodongo/fizzy/tree/main/app/controllers/cards"
click node_column_endpoints "https://github.com/kevinodongo/fizzy/tree/main/app/controllers/columns"
click node_board_model "https://github.com/kevinodongo/fizzy/blob/main/app/models/board.rb"
click node_card_model "https://github.com/kevinodongo/fizzy/blob/main/app/models/card.rb"
click node_collab_endpoints "https://github.com/kevinodongo/fizzy/blob/main/app/controllers/cards/comments_controller.rb"
click node_notification_endpoints "https://github.com/kevinodongo/fizzy/blob/main/app/controllers/notifications_controller.rb"
click node_search_endpoints "https://github.com/kevinodongo/fizzy/blob/main/app/controllers/searches_controller.rb"
click node_filters_timeline "https://github.com/kevinodongo/fizzy/blob/main/app/controllers/filters_controller.rb"
click node_event_model "https://github.com/kevinodongo/fizzy/blob/main/app/models/event.rb"
click node_account_endpoints "https://github.com/kevinodongo/fizzy/tree/main/app/controllers/account"
click node_identity_model "https://github.com/kevinodongo/fizzy/blob/main/app/models/user.rb"
click node_account_model "https://github.com/kevinodongo/fizzy/blob/main/app/models/account.rb"
click node_storage_model "https://github.com/kevinodongo/fizzy/blob/main/app/models/storage.rb"
click node_storage_database "https://github.com/kevinodongo/fizzy/blob/main/db/schema.rb"
click node_background_jobs "https://github.com/kevinodongo/fizzy/tree/main/app/jobs"
click node_mailers "https://github.com/kevinodongo/fizzy/tree/main/app/mailers"
click node_push "https://github.com/kevinodongo/fizzy/blob/main/app/models/push.rb"
click node_billing "https://github.com/kevinodongo/fizzy/blob/main/saas/app/controllers/account/subscriptions_controller.rb"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_work_ui,node_board_endpoints,node_card_endpoints,node_column_endpoints,node_board_model,node_card_model,node_user,node_browser toneBlue
class node_collab_endpoints,node_notification_endpoints,node_search_endpoints,node_filters_timeline,node_event_model toneAmber
class node_account_endpoints,node_identity_model,node_account_model toneMint
class node_storage_model,node_storage_database,node_background_jobs,node_mailers,node_push,node_billing toneRose
class node_stripe toneIndigo
```

## Components

### Kanban workflow

- [Board interactions](https://github.com/kevinodongo/fizzy/blob/main/app/javascript/controllers/drag_and_drop_controller.js): `app/javascript/controllers/drag_and_drop_controller.js`
- [Board and drop endpoints](https://github.com/kevinodongo/fizzy/tree/main/app/controllers/boards): `app/controllers/boards`
- [Card endpoints](https://github.com/kevinodongo/fizzy/tree/main/app/controllers/cards): `app/controllers/cards`
- [Column endpoints](https://github.com/kevinodongo/fizzy/tree/main/app/controllers/columns): `app/controllers/columns`
- [Boards and columns](https://github.com/kevinodongo/fizzy/blob/main/app/models/board.rb): `app/models/board.rb`
- [Cards and workflow](https://github.com/kevinodongo/fizzy/blob/main/app/models/card.rb): `app/models/card.rb`

### Collaboration and discovery

- [Comments and activity](https://github.com/kevinodongo/fizzy/blob/main/app/controllers/cards/comments_controller.rb): `app/controllers/cards/comments_controller.rb`
- [Notifications](https://github.com/kevinodongo/fizzy/blob/main/app/controllers/notifications_controller.rb): `app/controllers/notifications_controller.rb`
- [Search](https://github.com/kevinodongo/fizzy/blob/main/app/controllers/searches_controller.rb): `app/controllers/searches_controller.rb`
- [Filters and timelines](https://github.com/kevinodongo/fizzy/blob/main/app/controllers/filters_controller.rb): `app/controllers/filters_controller.rb`
- [Events and mentions](https://github.com/kevinodongo/fizzy/blob/main/app/models/event.rb): `app/models/event.rb`

### Accounts and tenancy

- [Account settings](https://github.com/kevinodongo/fizzy/tree/main/app/controllers/account): `app/controllers/account`
- [Users and identities](https://github.com/kevinodongo/fizzy/blob/main/app/models/user.rb): `app/models/user.rb`
- [Tenant accounts](https://github.com/kevinodongo/fizzy/blob/main/app/models/account.rb): `app/models/account.rb`

### Platform services

- [Upload storage ledger](https://github.com/kevinodongo/fizzy/blob/main/app/models/storage.rb): `app/models/storage.rb`
- [Application database](https://github.com/kevinodongo/fizzy/blob/main/db/schema.rb): `db/schema.rb`
- [Background jobs](https://github.com/kevinodongo/fizzy/tree/main/app/jobs): `app/jobs`
- [Email delivery](https://github.com/kevinodongo/fizzy/tree/main/app/mailers): `app/mailers`
- [Web push](https://github.com/kevinodongo/fizzy/blob/main/app/models/push.rb): `app/models/push.rb`
- [SaaS billing](https://github.com/kevinodongo/fizzy/blob/main/saas/app/controllers/account/subscriptions_controller.rb): `saas/app/controllers/account/subscriptions_controller.rb`

### Other components

- **Fizzy user**
- **Web browser**
- **Stripe**

## Connections

- Fizzy user → Web browser: uses
- Web browser → Board interactions: interacts
- Board interactions → Column endpoints: posts drop
- Fizzy user → Board and drop endpoints: requests boards
- Fizzy user → Card endpoints: works with cards
- Fizzy user → Comments and activity: collaborates
- Fizzy user → Search: searches
- Fizzy user → Filters and timelines: filters activity
- Fizzy user → Account settings: manages account
- Fizzy user → Notifications: reviews alerts
- SaaS billing → Stripe: billing integration
