# Blog App (Coop) Content management, Ghost CMS sync, navigation, and the prose editor for the Rose Ash cooperative platform. Runs database migrations on startup and serves as the primary content hub. ## Structure ``` app.py # Application factory (create_base_app + blueprints) path_setup.py # Adds project root + app dir to sys.path entrypoint.sh # Container entrypoint (migrations, Redis flush, start) bp/ blog/ # Post listing, Ghost CMS sync, webhooks post/ # Single post view and admin admin/ # Settings admin interface menu_items/ # Navigation menu management snippets/ # Reusable content snippets fragments/ # nav-tree fragment for cross-app navigation models/ # Re-export stubs pointing to shared/models/ services/ # register_domain_services() — wires blog + calendar + market + cart templates/ # Blog-specific templates (override shared/) ``` ## Cross-domain communication All inter-app communication uses typed service contracts (no HTTP APIs): - `services.calendar.*` — calendar/entry queries via CalendarService protocol - `services.market.*` — marketplace queries via MarketService protocol - `services.cart.*` — cart summary via CartService protocol - `services.federation.*` — AP publishing via FederationService protocol ## Fragments served - **nav-tree** — site navigation tree, fetched by all other apps ## Fragments consumed - **cart-mini** (from cart) — cart icon + badge - **auth-menu** (from account) — sign-in / user menu - **container-nav** (from events, market) — sidebar widgets - **container-cards** (from events) — event cards on listing pages