```mermaid sequenceDiagram participant User participant Engineering as Engineering Folder
(priv/blog/engineering) participant Blogex as Blogex Library participant PhoenixApp as Firehose Web App participant Browser Note over User,Browser: New Markdown File Flow User->>Engineering: Create markdown file
(e.g., new-post.md) Note over Engineering: File appears in directory Note over Blogex: Blogex reads markdown files at app startup
via config (priv/blog/engineering/**/*.md) PhoenixApp->>Blogex: Request post index via BlogController
(GET /blog/engineering) Blogex->>Engineering: Read markdown files from priv/blog/engineering/ Blogex->>Blogex: Parse markdown + frontmatter Blogex->>Blogex: Create %Blogex.Post{ structs} Note over Blogex: Blogex renders HTML using its own
templates in blogex/components.ex (post_index, post_show) PhoenixApp->>PhoenixApp: Render blog_html/index.html.heex (via BlogHTML) Note over PhoenixApp,Browser: Individual Post Request
(GET /blog/engineering/:slug) Browser->>PhoenixApp: HTTP GET /blog/engineering/new-post PhoenixApp->>PhoenixApp: FirehoseWeb.BlogController.show PhoenixApp->>Blogex: Get post by slug Blogex->>Engineering: Read markdown file Blogex->>Blogex: Parse and return %Blogex.Post{} Note over Blogex: Blogex renders show_page for individual posts PhoenixApp->>PhoenixApp: Render blog_html/show.html.heex (via BlogHTML) PhoenixApp->>PhoenixApp: Apply FirehoseWeb.Layouts.app layout PhoenixApp->>PhoenixApp: Wrap with FirehoseWeb.Layouts.root layout Note over PhoenixApp: Layout provides:
- Navbar (Engineering/Releases/QWAN)
- Theme toggle
- Global CSS (app.css with Tailwind/daisyUI)
- Footer/flash messages PhoenixApp->>Browser: Return full HTML page Browser->>Browser: Render page with app styling ```