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.
giles 85ffe34fc9
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 1m11s
Remove cross-domain template copies, use shared macros
- Blog hamburger: removed (inlined in shared layout.html)
- Cart mini: use macros/cart_icon.html for add-to-cart OOB
- Post header: use blog_url() instead of url_for('blog.post.post_detail')

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 17:33:11 +00:00

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 protocol
  • services.federation.* — AP publishing via FederationService protocol
  • shared.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
No description provided
Readme 555 KiB
Languages
Python 73.2%
HTML 26%
Shell 0.5%
Dockerfile 0.3%