Skip to main content

aa-shop

An Alliance Auth plugin that lets registered auth members run a publicly available shop stocked from their own (or their corporation's) assets.

Features

  • Members create and manage personal shops; authorized users manage corporation shops.
  • A member back-office at /shop-backoffice/ (lists your shops, create/edit/delete).
  • Each published shop gets a public storefront at /shop/<slug>/ — no login required. Unpublished shops are visible only to their managers (preview).

Requirements

Installation

  1. Install into your Alliance Auth virtual environment:

    pip install aa-shop
    
  2. Add "shop" to INSTALLED_APPS in your auth project's local.py:

    INSTALLED_APPS += ["shop"]
    
  3. Allow the storefront to expose its public (non-gated) views — required, or anonymous visitors are redirected to login:

    APPS_WITH_PUBLIC_VIEWS = ["storefront"]
    
  4. Run migrations and collect static files, then restart your AA services:

    python manage.py migrate
    python manage.py collectstatic
    
  5. EVE universe data: the Hulls picker lists ship types from django-eveuniverse, so make sure your eveuniverse data is populated with ship types (load the full EVE universe, or at least the Ship category, using eveuniverse's load tooling). Ships that aren't loaded won't be selectable.

  6. Grant permissions (Django admin, or via groups/states):

    Permission Grants
    shop.basic_access Access the back-office; create/manage your personal shops
    shop.manage_corporation_shops Create/manage your corporation's shops

Periodic price refresh

Hulls priced as % Jita Buy / % Jita Sell are refreshed by a Celery task every 6 hours. Add to your local.py:

from celery.schedules import crontab

CELERYBEAT_SCHEDULE["shop_refresh_pct_prices"] = {
    "task": "shop.tasks.refresh_pct_prices",
    "schedule": crontab(minute=0, hour="*/6"),
}
CELERYBEAT_SCHEDULE["shop_refresh_all_stock"] = {
    "task": "shop.tasks.refresh_all_stock",
    "schedule": crontab(minute=0),   # hourly
}

Stock is recomputed from memberaudit assets (no ESI). Refresh on demand with python manage.py shop_refresh_stock (--async to enqueue the per-shop tasks).

The task uses the public ESI market endpoint (no token) at low priority (override with SHOP_TASKS_PRIORITY, 1=urgent .. 9=idle; default 7). Prices are best-of-book at Jita 4-4 (highest buy / lowest sell), the same as Janice.

To refresh on demand (e.g. after setting up %-pricing), run inline:

python manage.py shop_refresh_prices           # synchronous, prints results
python manage.py shop_refresh_prices --async    # enqueue Celery tasks instead

Usage

  • Members: open Shop in the auth sidebar (/shop-backoffice/) to create a shop — set a slug, name, type (personal/corporation), and publish it.
  • Public: share /shop/<slug>/; published shops are browsable by anyone.

Contributing

Design docs and implementation plans live in docs/superpowers/. The storefront stylesheet ships compiled (shop/static/shop/storefront.css); to rebuild it after changing storefront templates, use the standalone Tailwind v4 CLI + daisyUI (no Node required):

bash scripts/build-css.sh        # add --watch during development

License

MIT

Metadata

Release files for aa-shop 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for aa-shop 0.1.1
File Size Uploaded
aa_shop-0.1.1.tar.gz 50.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for aa-shop 0.1.1
File Interpreter ABI Platform
aa_shop-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 125.3 kB

Release files / aa_shop-0.1.1.tar.gz

Download URL aa_shop-0.1.1.tar.gz
Size 50.9 kB
Tags Source
SHA-256 checksum
How to use checksums
0a769a4556314b88197360bbbac15619db1f38851ee572e2b2f1fb46f24c15b5
BLAKE2b-256 checksum
How to use checksums
4730e773fd75062eecbb0d885d15895840ac4cf8761d48c5cbb17d75846c8b3b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.13

Release files / aa_shop-0.1.1-py3-none-any.whl

Download URL aa_shop-0.1.1-py3-none-any.whl
Size 74.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0ad2da2d94db0e1ba3332d6cedbc8b26c12fc2684a8448380194fb045c409ff0
BLAKE2b-256 checksum
How to use checksums
a9cfd27cac138e884c06ade1c5ababd1842b424c02368de4dae9bf70d965442d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.13

Release history Release notifications | RSS feed

0.5.0

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.0

2 release files

This release

0.1.1 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page