Shuup is an Open Source E-Commerce Platform based on Django and Python.
https://shuup.com/ Copyright ---------
Copyright (c) 2012-2021 by Shuup Commerce Inc. <[email protected]>
Shuup is International Registered Trademark & Property of Shuup Commerce Inc., Business ID: BC1126729, Business Address: 1500 West Georgia Suite 1300, Vancouver, BC, V6G-2Z6, Canada.
Current Build Docs can be found at https://sluup.travispickle.work.
Contributor License Agreement is required for any contribution to this project. Agreement is signed as a part of pull request process. See the CLA.rst file distributed with Shuup.
Shuup is published under Open Software License version 3.0 (OSL-3.0). See the LICENSE file distributed with Shuup.
Some external libraries and contributions bundled with Shuup may be published under other compatible licenses. For these, please refer to VENDOR-LICENSES.md file in the source code tree or the licenses included within each package.
We have a Gitter chat room for Shuup. Come chat with us!
# Heads up: A pushed container is on its way as soon as the first dev release passes tests.
Modern setup with uv (recommended):
docker-compose -f docker-compose.uv.yml upTraditional setup:
docker-compose upOpen localhost:8000/sa in a browser,
log in with username: admin password: admin
For development with live code reloading:
docker-compose -f docker-compose-dev.yml upSee Getting Started.
For simple project example see our Django-project template.
See Getting Started with Shuup Development.
Shuup now uses uv for fast dependency management and Hatchling as the build backend:
# Install uv (if not already installed)
curl -LsSf https://astral.sh/uv/install.sh | sh
# Clone and setup the project
git clone https://github.com/shuup/shuup.git
cd shuup
# Create virtual environment and install dependencies
uv sync
# Run the development server
uv run shuup_workbench runserver 0.0.0.0:8000 --settings=shuup_workbench.settings.dev
# Run tests
uv run pytest shuup_tests -v
# Build static resources
uv run shuup-build-resourcesShuup uses pyproject.toml as the single source of truth for all dependencies. All requirements*.txt files are automatically generated from pyproject.toml.
Automatic Generation:
The requirements files are automatically generated in several scenarios:
- Pre-commit hooks - When pyproject.toml changes, pre-commit automatically regenerates requirements
- Make commands - Running
make buildormake requirementsupdates all requirements files - CI/CD pipeline - GitHub Actions automatically checks and updates requirements files
- Manual generation - Use
./regenerate_requirements.shorpython -m shuup_setup_utils generate_requirements
Available Requirements Files:
# Regenerate all requirements files
./regenerate_requirements.sh
# Or use make
make requirementsThis creates both full (with transitive dependencies) and minimal (direct dependencies only) versions:
- Full files:
requirements.txt,requirements-dev.txt, etc. - Include all transitive dependencies - Minimal files:
requirements-minimal.txt,requirements-dev-minimal.txt, etc. - Only direct dependencies
For Contributors:
Never edit requirements*.txt files directly! Instead:
- Add dependencies to pyproject.toml in the appropriate section
- Run
make requirementsto regenerate all requirements files - Commit both pyproject.toml and the updated requirements*.txt files
For Docker/Containers:
Use minimal files for Docker builds and full files for exact reproducibility:
# Use minimal requirements for faster builds
COPY requirements-minimal.txt .
RUN uv pip install -r requirements-minimal.txtUse uv for semantic versioning:
uv version # Show current version
uv version --bump patch # Bump patch version
uv version --bump minor # Bump minor version
uv version --bump major # Bump major versionFor projects not yet ready to migrate to uv, the traditional setup still works:
pip install -r requirements-dev.txt
python setup.py build_resourcesInterested in contributing to Shuup? Please see our Contribution Guide.
Shuup documentation is available online at Read the Docs.
Documentation is built with Sphinx.
Build documentation using uv:
uv sync --group docs
cd doc && uv run make htmlOr using traditional pip:
pip install -r requirements-doc.txt
cd doc && make htmlTo update the API documentation rst files, e.g. after adding new modules, use command:
./generate_apidoc.py- Initial Django 3.x support
- Latest Jinja support
- Deprecate theme folders under Shuup front which are used to override individual macros in macro folders. This does not work well with latest Jinja and adds extra complexity.
- Move Shuup front, xtheme and theming features to own addons. This so that projects not ready for updating theme or front can still get latest Shuup.
- Introduce new default theme and overhaul templates structure to be more simple (likely Bootstrap 5 will be used).
- Bump admin Bootstrap version to match with the new front
- Move various other not essential apps in this repository to addons for better version management.
- Django-project template. Django-project template.
- Provides system.
- Core settings.
- Front settings.
- Admin settings.
- Extending Shuup.