This repository has been archived on 2026-02-24 . You can view files and clone it. You cannot open issues or pull requests or push a commit.
93f830ff13d1dad5736f3e6d17e85fd1b0d176f8
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 54s
The cart-mini fragment is fetched via HTTP from the cart app, which uses its own DB connection. Without committing first, the cart app sees stale data (no new item). Commit the transaction, start a new one so after_request can still commit cleanly. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Market App
Product browsing and marketplace service for the Rose Ash cooperative. Displays products scraped from Suma Wholesale.
Architecture
One of five Quart microservices sharing a single PostgreSQL database:
| App | Port | Domain |
|---|---|---|
| blog (coop) | 8000 | Auth, blog, admin, menus, snippets |
| market | 8001 | Product browsing, Suma scraping |
| cart | 8002 | Shopping cart, checkout, orders |
| events | 8003 | Calendars, bookings, tickets |
| federation | 8004 | ActivityPub, fediverse social |
Structure
app.py # Application factory (create_base_app + blueprints)
path_setup.py # Adds project root + app dir to sys.path
config/app-config.yaml # App URLs, feature flags
models/ # Market-domain models (+ re-export stubs)
bp/ # Blueprints
market/ # Market root, navigation, category listing
browse/ # Product browsing with filters and infinite scroll
product/ # Product detail pages
cart/ # Page-scoped cart views
api/ # Product sync API (used by scraper)
scrape/ # Suma Wholesale scraper
services/ # register_domain_services() — wires market + cart
shared/ # Submodule -> git.rose-ash.com/coop/shared.git
Cross-Domain Communication
services.cart.*— cart summary via CartService protocolservices.federation.*— AP publishing via FederationService protocolshared.services.navigation— site navigation tree
Scraping
bash scrape.sh # Full Suma Wholesale catalogue
bash scrape-test.sh # Limited test scrape
Running
export DATABASE_URL_ASYNC=postgresql+asyncpg://user:pass@localhost/coop
export REDIS_URL=redis://localhost:6379/0
export SECRET_KEY=your-secret-key
hypercorn app:app --bind 0.0.0.0:8001
Description
Languages
Python
73.2%
HTML
26%
Shell
0.5%
Dockerfile
0.3%