Skip to main content

Build large Flask apps without losing your sanity. Auth, admin, modular architecture in one pip install.

Project description

shopyo

Build large Flask apps without losing your sanity.
Auth, admin panel, modular architecture โ€” all the batteries, none of the boilerplate.

Downloads Codecov Tests PyPI Docs CII OpenSSF

๐Ÿ“– Docs โ€ข ๐Ÿ’ฌ Discord โ€ข ๐ŸŽฏ Contribute โ€ข ๐Ÿฆ Twitter


Your Flask app works. Until it doesn't.

You start with a single app.py. Then you add auth. Then an admin panel. Then a few blueprints. Suddenly you have 5,000 lines and no idea where anything lives. You think about Django โ€” but you chose Flask for a reason.

Shopyo is the answer. It gives you the modular architecture, auth, admin dashboard, CLI scaffolding, and project structure that Flask is missing โ€” in one pip install.

pip install shopyo
shopyo new myapp
cd myapp && shopyo initialise && flask run --debug
# โ†’ Working app with auth, admin panel, and dashboard at localhost:5000

Featured on Python Weekly issue 436 and presented at EuroPython 2023.


Why Shopyo?

Instead of this... You get this
Wiring up Flask-Login, Flask-Admin, Flask-Migrate, Flask-WTF, and 5 other extensions separately One pip install with everything working together
Manually registering blueprints and hoping you didn't miss one Auto-discovery: drop a module in modules/ and it just works
Googling "how to structure a large Flask app" for the 10th time A proven architecture that scales from day one
Configuring static files differently for dev and prod Zero-friction assets: one url_for() call works everywhere
Writing the same user management UI for every project Built-in admin dashboard and user management

Features

  • ๐Ÿ” Auth built-in โ€” Login, registration, password reset, email confirmation, API tokens, rate limiting, password complexity, roles, and an events system. Drop-in, no wiring required.
  • ๐Ÿ“ฆ 2-level modularity โ€” Organize features as modules and group them into boxes. Add, remove, or replace parts without touching the rest of your app.
  • ๐Ÿ–ฅ๏ธ Admin dashboard โ€” User management, settings, and a customizable admin panel. Works out of the box, fully hackable.
  • ๐Ÿชœ CLI scaffolding โ€” shopyo new creates a project. shopyo startapp creates a module. shopyo startbox creates a box. No boilerplate to write.
  • ๐ŸŒ… Zero-friction assets โ€” Use standard Flask url_for('static', ...) in development and production. Transparent static shadowing handles the rest.
  • โš›๏ธ i18n ready โ€” Internationalization setup included.
  • ๐ŸŽจ Theme system โ€” Front-end and back-end theming with pluggable CSS themes.
  • ๐Ÿ”ง Production-ready โ€” Session hardening, CSRF protection, environment-enforced secrets, rate limiting, multi-platform CI/CD, 75%+ test coverage.
  • ๐Ÿ”‘ Policy-based authorization โ€” Role-based access control with fine-grained permissions, grant/revoke semantics, and a require decorator for protecting views.
  • ๐Ÿ”„ Persistent login โ€” Optional "remember me" functionality with configurable cookie duration.
  • ๐Ÿ“ Customizable auth pages โ€” Override login and registration templates via config without touching package internals.
  • ๐Ÿงฉ Modular packages โ€” Auth, dashboard, page, i18n, settings, theme, and appadmin extracted as independent packages with URL override support.
  • โšก Modern UI โ€” Tailwind CSS, AlpineJS, and FontAwesome 6.5.1 bundled locally for offline reliability.
  • ๐Ÿ–Š๏ธ Rich text editing โ€” Quill editor integrated for a lightweight writing experience.
  • ๐ŸŽฏ Demo scaffolding โ€” shopyo new --demo creates a project pre-loaded with demo apps.

Quick start

pip install shopyo
shopyo new blog
cd blog
shopyo initialise
flask run --debug

Open http://localhost:5000/dashboard โ€” credentials: admin@domain.com / pass.

You can also run shopyo new inside an existing directory to scaffold Shopyo in place. Note: shopyo new . does not work โ€” the project name must be alphanumeric. Use shopyo new (no argument) instead to create the project in the current directory.

What does "modular" mean?

Every feature in Shopyo is a module. Modules are self-contained Flask blueprints with their own models, views, forms, templates, and static assets.

myproject/
โ”œโ”€โ”€ modules/
โ”‚   โ”œโ”€โ”€ www/              # Homepage, public routes
โ”‚   โ”œโ”€โ”€ blog/             # Blog module (you create this)
โ”‚   โ”œโ”€โ”€ analytics/        # Analytics module (you create this)
โ”‚   โ””โ”€โ”€ box__billing/     # Box: group of related modules
โ”‚       โ”œโ”€โ”€ subscriptions/
โ”‚       โ””โ”€โ”€ invoices/
โ”œโ”€โ”€ config.py
โ”œโ”€โ”€ app.py
โ””โ”€โ”€ requirements.txt

Add a module by dropping a folder into modules/. Shopyo auto-discovers and registers it. No blueprint registration, no configuration files to update.

Who uses Shopyo?

Site Description
Maurilearn.com Elearning platform
Linkolearn.com Learn by links
FlaskCon.com Conference software

Built something with Shopyo? Let us know and we'll add you to the list.

Why not Django?

Django is excellent for Django-shaped problems. But if you want:

  • Flask's flexibility (swap SQLAlchemy for Peewee, Jinja for Mako)
  • A flat project structure (no nested proj/proj)
  • Granular modularity (modules and boxes, not Django "apps")
  • Zero boilerplate (auto-discovery, no manual registration)

...then Shopyo gives you Django's batteries without Django's constraints.

Why not plain Flask?

Flask is perfect for small projects. As you grow, you need:

  • A project architecture that doesn't collapse at 10k lines
  • Auth that works out of the box (not 6 extensions you wire up yourself)
  • An admin panel that isn't an afterthought
  • CLI commands for scaffolding, not copy-paste from Stack Overflow

Shopyo gives you all of this while keeping 100% Flask compatibility. Every Shopyo project is still a Flask project.

First time contributing?

We have a 100% first-timers friendly policy. Check out the testimonials.

"One of the best onboarding experiences I've had. Learned a lot too." โ€” Ramon from Codesee.io

๐Ÿ‘‰ Get started contributing ๐Ÿ‘‰ Join the Discord

License

MIT โ€” see LICENSE.

Contact

Project details


Release history Release notifications | RSS feed

Download files

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

Source Distribution

shopyo-4.18.2.tar.gz (5.5 MB view details)

Uploaded Source

Built Distribution

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

shopyo-4.18.2-py3-none-any.whl (5.5 MB view details)

Uploaded Python 3

File details

Details for the file shopyo-4.18.2.tar.gz.

File metadata

  • Download URL: shopyo-4.18.2.tar.gz
  • Upload date:
  • Size: 5.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.15

File hashes

Hashes for shopyo-4.18.2.tar.gz
Algorithm Hash digest
SHA256 35bc58fc14ef02eeda3d8fb97a3e1595428c3f67148010a320e485e38e8e97fc
MD5 be66926458c60d62ee6aa6201a36c153
BLAKE2b-256 a1e51ad269e0becdc521a4cdd0942e896281f87c8a5595ed863885afbf254d58

See more details on using hashes here.

File details

Details for the file shopyo-4.18.2-py3-none-any.whl.

File metadata

  • Download URL: shopyo-4.18.2-py3-none-any.whl
  • Upload date:
  • Size: 5.5 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.15

File hashes

Hashes for shopyo-4.18.2-py3-none-any.whl
Algorithm Hash digest
SHA256 f78f1b054a6ea7fe159e6cb656711c7ff8e17861f9766d5b549d6cc59eebde45
MD5 3f7da88f931ed5760ea837cefbda2dd5
BLAKE2b-256 255775d7681484b02a33190d06d02b57940e6d1dfeabdcd6f96e89b29f66f152

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