Highly modular web framework built for big apps on top of Flask with Django advantages
Project description
Featured on Weekly Python issue 436 🌟
A 45 mins talk was dedicated to it at EuroPython 🌟
Must watch: Shopyo: Your Mega Flask Machine (short vid)
E-commerce modules transferred to ShopCube
[ DOCS | DISCORD | CONTRIBUTE | TWITTER]
What?
Your next-level modular web framework. Get organisation & scalability from day 1.
Built on top of Flask, it offers most Django features, sometimes a tidbit more with far more flexibility.
Why?
Perk | |
---|---|
🥏 No learning | Does not get into the way, uses common flask-packages. You only need to know Flask. |
🏗️ Architecture | Never think about architecture of your app, just build & integrate extensions. |
🏢 Scalable | As your app grows, Shopyo caters for your codebase with powerful features. |
🥢 Good practices | Testing, docs etc are covered. Don't make those afterthoughts. |
🔧 Ease your life | We've been there. Awesome utils to ease development. |
🪜 Scaffolding | Don't waste time writing boilerplate code. We've got you covered. |
🖍️ Theming system | You need theme in your apps? We integrate a default theme system. |
Features
- ⚛️ i18n setup
- 🔐 Login & Auth
- 📦 2-level modularity
- 🪐 Designed for really BIG apps
- 🌅 Assets management
Quick start
pip install shopyo>=4.11
mkdir blog
cd blog
shopyo new -m # -m adds static files
cd blog
# comment out in app.py
# from shopyo_base import ShopyoBase
# ...
# sh_theme.init_app(app)
shopyo initialise
flask shopyo-seed
flask run --debug
If errors do (linux, use set <VAR>
for Windows):
export SHOPYO_CONFIG_PROFILE=development
export FLASK_ENV=development # < flask 2.2.x
export ENV=development
export FLASK_DEBUG=development # < flask 2.2.x
export FLASK_APP=app.py
SHOPYO_CONFIG_PROFILE
is what is defined as keys of app_config
in config.py
It is recommended to use a venv in root folder.
python -m venv venv
If for dev install dev_requirements.txt also.
python -m pip install -r requirements/dev.txt
go to http://127.0.0.1:5000/dashboard with credentials admin@domain.com / pass
- Not framework docs but docs for the project you are building.
First time contributing?
We have a 100% first-timers friendly policy. Check out the testimonials.
Thank you! One of the best onboarding experiences I've had. Learned a lot too (Ramon from Codesee.io)
Glimpse
Who uses Shopyo?
site name | description |
---|---|
Maurilearn.com | Elearning platform |
Linkolearn.com | Learn By links |
FlaskCon.com | Conference soft |
Big??
Powered by apps / modules. Add as many as you like.
Apps are not enough, organise them in boxes and get the ultimate order you need.
You need a customised Django? This is the project. You need to build an ERP? This is the project.
Linux??
Hackable to the core. Even the dashboard is but a module.
Don't need our modules? Nuke them. Look boring? modify them
Reliable?
We don't maintain middlewares. We rely on battle tested batteries like:
- flask_sqlalchemy
- flask_login & co
Heck remove them if you don't want. Want to use Peewee? You can.
Rich Flask API
Common flask patterns are integrated, the structure is over the moon.
Common flask tasks are provided with an API: custom notifications, bulk form errors
Back office feel & Theme
All looks are 100% customisable with themes ~ Backend, bootstrap included by default.
Again blow it up & use what you want. It's possible
Transparent: Code your own web distro
Everything is clear, not hidden. You can 100% customise whatever you want.
We did not hardcode our choices. Our APIS are incremental. You can always use barebones.
Plug & Play
The modules are put by copy paste. No blueprint codes to write.
Contribute
We follow a 100% first-timers friendly policy.
👉 Get started here
👉 Join the Discord, ask questions & learn about Flask tricks during our dev talks!
📚 Docs
👉 Link: shopyo.readthedocs.io/
📞 Contact (inlcuding in case of vulns)
Support team if you are stuck
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.