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.1.tar.gz (5.4 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.1-py3-none-any.whl (5.4 MB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for shopyo-4.18.1.tar.gz
Algorithm Hash digest
SHA256 fbdbea4e547e9e7190dbb12de7ead0cd371a1b2647a2cd9894cc054d21adda92
MD5 c0484f2adc911b1c01fb982b4c668910
BLAKE2b-256 8a6a99e786b7f3ddd16f403eac4cead501124d3ad8781a231032d3b4c05d58ad

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for shopyo-4.18.1-py3-none-any.whl
Algorithm Hash digest
SHA256 299eac3cd8e598e1e767730f41bdc753d281ed07b0ffeb85e882c66f1104d478
MD5 bfce200a3b21755b3abe1510aa429584
BLAKE2b-256 571142aa66d0d49b42b6a7649fc668c5162a7d912f78c6700236c21493803aaa

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