Skip to main content

aa-shop

An Alliance Auth plugin that lets auth members run a public shop stocked automatically from their own EVE assets.

Features

  • Create and manage your own shops from the Shop entry in the auth sidebar.
  • Every published shop has a public storefront anyone can browse — no login required. Unpublished shops stay private to you as a preview until you're ready to share.
  • Sell ships, modules (rigs, drones, implants), and blueprint copies, kept in stock automatically from your allianceauth-corptools assets and priced however you choose — a fixed price, "Ask", or a percentage of Jita.
  • Sell fitted ships — mark an assembled ship in-game and it's listed with its fit reconstructed from your assets: the storefront shows the full fitting plus everything that transfers with the ship, and shoppers can copy an EFT export in one click.
  • Run personal shops from your own characters or corporation shops sourced from corp hangar divisions (needs the relevant corptools access).
  • Shoppers browse, search, and open a detail page for anything you list; you can feature and hide individual items.

Requirements

  • Alliance Auth >= 5
  • allianceauth-corptools >= 3, installed and syncing character (and, for corp shops, corporation) assets

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. Let the storefront serve its public pages — 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 ship and blueprint pickers read from django-eveuniverse, so make sure its data is populated (load the full EVE universe, or at least the Ship category, with eveuniverse's load tooling). Types that aren't loaded won't be selectable.

  6. Grant the shop.basic_access permission (Django admin, or via groups/states) to members who should be able to run shops.

  7. Selling blueprint copies additionally needs a read_blueprints ESI token: the character's esi-characters.read_blueprints.v1 for personal shops, or a director's esi-corporations.read_blueprints.v1 for corporation shops. Registering the character with corptools already covers the character scope.

Scheduled tasks

Add these to your local.py so stock and prices stay current:

from celery.schedules import crontab

# Recompute stock for every shop, hourly (ships, modules, blueprint copies).
CELERYBEAT_SCHEDULE["shop_refresh_all_stock"] = {
    "task": "shop.tasks.refresh_all_stock",
    "schedule": crontab(minute=0),
}
# Re-price anything set to a percentage of Jita, every 6 hours.
CELERYBEAT_SCHEDULE["shop_refresh_pct_prices"] = {
    "task": "shop.tasks.refresh_pct_prices",
    "schedule": crontab(minute=0, hour="*/6"),
}

Stock is read from your corptools assets; the hourly task also nudges corptools to pull fresh assets first, so you don't need to tune its update rings. ESI caches assets and blueprints for about an hour, so hourly is as often as is useful. Optional settings: SHOP_REFRESH_CORPTOOLS_ASSETS = False skips the asset nudge, and SHOP_TASKS_PRIORITY (1 = urgent … 9 = idle, default 7) sets the priority of these background tasks.

Usage

Members with access get a Shop entry in the auth sidebar. From there you can create a personal or corporation shop, name it and give it a short link, choose what it sells (ships, modules, blueprint copies, fitted ships), and publish it. While a shop is unpublished only you can see it, as a preview; once published, share its link with anyone.

Stock and prices fill in automatically from your assets on the schedule above — you just set your pricing rules and pick which items to feature or hide.

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

Releasing (maintainers, needs pip install build twine):

bash scripts/release.sh          # build + twine check
bash scripts/release.sh --test   # ...then upload to TestPyPI
bash scripts/release.sh --pypi   # ...then upload to PyPI

License

MIT

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

aa_shop-0.4.0.tar.gz (128.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

aa_shop-0.4.0-py3-none-any.whl (197.2 kB view details)

Uploaded Python 3

File details

Details for the file aa_shop-0.4.0.tar.gz.

File metadata

  • Download URL: aa_shop-0.4.0.tar.gz
  • Upload date:
  • Size: 128.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.6

File hashes

Hashes for aa_shop-0.4.0.tar.gz
Algorithm Hash digest
SHA256 b6cbee7401cd5b5afdaa3615cda718e8bd4f84eb00c387c6c2d7efad9fa92676
MD5 26ca1e577b8e97e3e57387f2d0de6746
BLAKE2b-256 35b7c138e324fdcf9274ab2829bca92135bc655359b5b9cf1c563ab984bea78a

See more details on using hashes here.

File details

Details for the file aa_shop-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: aa_shop-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 197.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.6

File hashes

Hashes for aa_shop-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d2b5b448d3905f7923910753a91542b25f22c1e0adbf5a7fdb1cb4f79971e396
MD5 fff665a3aac00b136f145ba0626cc673
BLAKE2b-256 ff0f3bce7444a06f76d7f67a598de00f4912168e9f16306dbb272918c6568158

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page