Skip to main content

aa-shop

Discord

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

aa-shop storefront

Features

A public storefront, stocked from your assets. Publish a shop and anyone gets a clean, searchable storefront — no login required to browse. Stock and prices fill in automatically from your allianceauth-corptools assets, so the shop stays current with no manual upkeep. Unpublished shops stay private to you as a preview until you're ready to share the link.

Sell what you actually have:

  • Ships — hulls listed straight from your hangars, unlimited (build-to-order) or capped at what's in stock.
  • Modules, rigs, drones & implants — auto-listed from a dedicated container or hangar.
  • Blueprint copies — every ME / TE / runs variant listed on its own, each with its own price and stock.
  • Fitted ships — mark an assembled ship in-game and it lists automatically with its fit reconstructed from your assets. The storefront shows the full fitting and everything that transfers with the ship (drones, fighters, fuel, ships in the maintenance bay), and shoppers copy an EFT export in one click.

Pricing on your terms. A fixed price, "Ask" (negotiate / contract in-game), or a live percentage of Jita that refreshes on a schedule.

Real orders, not just a catalogue. Shoppers build a cart and send a request — logging in with their EVE character only at checkout. You get an Alliance Auth notification (and an optional Discord ping), then work the order from a back-office queue with a status workflow and click-to-copy buyer contact.

Personal and corporation shops. Run a shop from your own characters, or a corp shop sourced from corp hangar divisions (with the relevant corptools access).

Curate the shopfront. Feature items to pin them up top, hide what you don't want shown, and give each shop a Markdown description.

Screenshots

Every listing gets a detail page — and a fitted ship's page reconstructs the whole fit from your assets, lists everything that transfers with it, and exports EFT in one click:

A fitted ship's detail page — the reconstructed fit, the "Also included" manifest, and Copy EFT

Featured items lead each section — from titans to officer modules:

Featured hulls: Avatar, Azariel and Nyx

Modules: featured officer mods over a searchable grid

And the back-office, where you manage each section's listings and work incoming orders:

Managing hull listings — stock, pricing and featuring

The order queue

Requirements

  • Alliance Auth >= 5
  • allianceauth-corptools >= 3.2.0, installed and syncing character (and, for corp shops, corporation) assets (3.2.0 adds the blueprint ME/TE/runs the BPC section reads)

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.

Support

Feedback is very welcome — if you're running aa-shop, I'd love to hear how it's going.

License

MIT

Metadata

Release files for aa-shop 0.5.0

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.5.0
File Size Uploaded Provenance
aa_shop-0.5.0.tar.gz 149.1 kB Without provenance Details

Built distribution (wheel)

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

Total release size: 365.2 kB

Release files / aa_shop-0.5.0.tar.gz

Download URL aa_shop-0.5.0.tar.gz
Size 149.1 kB
Tags Source
SHA-256 checksum
How to use checksums
4904f716bc6cc298dda025353624c53069c30a7af5524cfa7cb00b7be01c580d
BLAKE2b-256 checksum
How to use checksums
4cb7d4229f7478e1bb7ab8a87dcbd309e84eb87a913bb25786e7028420a01f8d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.6

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

Download URL aa_shop-0.5.0-py3-none-any.whl
Size 216.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b1b689c9a700e97cbf0618965ca30fd8c9cdaa5443aa842c8714a66248f967eb
BLAKE2b-256 checksum
How to use checksums
d0b2041b7fd75168217af9fd3db84abcd6c0fe20ba38092978f1be3568f66446
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.6

Security for aa-shop 0.5.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

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