pythoncms
The fastest way to start a CMS in Python. Build production-grade sites with zero-config, modular themes, and a powerful content API.
🚀 Quickstart
The new unified CLI makes it easier than ever to get started:
pip install pythoncms
pythoncms start mysite --run
This single command will:
- Create your project directory.
- Generate a secure
.envfile. - Initialise the database.
- Seed the default admin user.
- Start the development server.
Open: http://localhost:5000/dashboard
Login: admin@domain.com / pass
🛠️ Unified CLI Commands
Manage your entire project from one place:
pythoncms start <name>: Create a new project.pythoncms run: Start the dev server.pythoncms initialise: Set up database and assets.pythoncms seed: Reset default data.pythoncms deploy: Generate production files (Dockerfile, docker-compose.yml).pythoncms --version: Check your version.
🚀 Production Deployment
Deploying your CMS with a production-grade Nginx reverse proxy is now a single command:
pythoncms deploy
This generates:
- Dockerfile: Optimized for Gunicorn performance.
- nginx.conf: Configured for request buffering and fast static file serving.
- docker-compose.yml: Orchestrates the app and Nginx containers.
Quick Start
- Run
pythoncms deploy. - (Optional) Edit
nginx.confto add your domain. - Run
docker-compose up --build -d.
Your site will be live on port 80 with Nginx handling all incoming traffic.
📡 REST API
Your content is automatically exposed via a JSON API.
Endpoint: /api/v1/<content_type_name>
Pagination & Sorting
?limit=10&offset=0?sort_by=created_at&order=desc
Authentication (Optional)
Set API_TOKEN in your .env to secure the API.
Requests must then include header: Authorization: Bearer <API_TOKEN>
⚙️ Configuration
Your project settings are managed via the .env file in your root directory.
Database Connection
By default, pythoncms uses SQLite. To use a different database, update the SQLALCHEMY_DATABASE_URI:
# SQLite (default)
SQLALCHEMY_DATABASE_URI = "sqlite:///mysite.db"
# PostgreSQL
SQLALCHEMY_DATABASE_URI = "postgresql://user:password@localhost/dbname"
Other Settings
APP_NAME: Change the display name of your application.SECRET_KEY: Used for session encryption. Automatically generated onstart.ACTIVE_FRONT_THEME: Choose betweeneditorialorhyperspace.ACTIVE_BACK_THEME: Choose betweensneatorsbadmin.
✨ Features
- 🏗️ Content Types: Define custom schemas with JSON.
- 🎨 Theme Support: Switch between beautiful, responsive themes instantly.
- 🔐 Built-in Auth: Secure admin and user management out of the box.
- 🍱 Modular Architecture: Extend functionality with a robust plugin system.
- 🖼️ Media Management: Simple upload and resource handling.
- ⚡ Flask Powered: Minimal, fast, and easy to customize.
📸 See it in Action
Admin Dashboard
Page Editor
Website Frontend
🛠️ Local Development
If you want to contribute to the core or customize the engine:
-
Clone and Install:
python -m pip install -e .
-
Initialize:
cd pythoncms shopyo initialise flask --debug run
-
Database Migrations:
flask db migrate flask db upgrade
🎨 Themes & Customization
Themes are located at /static/themes/.
Front Themes
Must include index.html, contact.html, and page.html.
Back Themes
Must include base.html, login.html, register.html, and unconfirmed.html.
📄 License & Community
- License: MIT
- Discord: Join our community
- Issues: Report a bug
Powered by the Shopyo engine.
Release files for pythoncms 2.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pythoncms-2.0.0.tar.gz | 6.0 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pythoncms-2.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 12.0 MB
Release files / pythoncms-2.0.0.tar.gz
| Download URL | pythoncms-2.0.0.tar.gz |
|---|---|
| Size | 6.0 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
8efe66a7be14bbf1f2199541ff84aae9103cad16dec08bcdbc2703eff13be874
|
|
BLAKE2b-256 checksum How to use checksums |
227074c5ea7effb37f13de758db49cfd0603ad9922abf047628580232bfd105e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.15
|
Release files / pythoncms-2.0.0-py3-none-any.whl
| Download URL | pythoncms-2.0.0-py3-none-any.whl |
|---|---|
| Size | 6.1 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
db14787cc5bfd73ec008e2f9dfe8d943d6f40da0cf94229a74200469d9d85949
|
|
BLAKE2b-256 checksum How to use checksums |
0ae944c06e7edbe955d56694352158352ea1f5ce5ed148e4fff39dbb1507eb89
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.15
|