|
1 | | - |
2 | | -<div align="center"> |
3 | | - |
4 | | - |
5 | | - |
6 | | -<img src="https://github.com/shopyo/pythoncms/raw/main/assets/logo.png" width="200"/> |
7 | | - |
8 | | -<br><br> |
| 1 | +# pythoncms |
9 | 2 |
|
10 | 3 | [](https://www.firsttimersonly.com/) |
11 | 4 |
|
12 | | -🇲🇺 |
13 | | - |
14 | | -</div> |
15 | | - |
16 | | - |
17 | | - |
18 | | -# Welcome to pythoncms |
| 5 | +**The fastest way to start a CMS in Python.** Build production-grade sites with zero-config, modular themes, and a powerful content API. |
19 | 6 |
|
20 | | -## Try |
| 7 | +## 🚀 Get Started in 10 Seconds |
21 | 8 |
|
22 | | - |
23 | | - |
24 | | -In virtual env |
25 | | - |
26 | | -``` |
| 9 | +```bash |
27 | 10 | pip install pythoncms |
28 | 11 | pythoncms start mysite |
29 | 12 | cd mysite |
| 13 | +# One command to rule them all (Coming in Phase 1) |
30 | 14 | shopyo initialise |
31 | 15 | flask shopyo-seed |
32 | 16 | flask --debug run |
33 | 17 | ``` |
34 | 18 |
|
35 | | -If .env file not created, create .env file with content |
| 19 | +Open your browser to: `http://127.0.0.1:5000/dashboard/` |
| 20 | +**Login:** `admin@domain.com` | `pass` |
36 | 21 |
|
37 | | -```.env |
38 | | -ACTIVE_FRONT_THEME = 'editorial' |
39 | | -ACTIVE_BACK_THEME = 'sneat' |
40 | | -APP_NAME = 'Demo' |
41 | | -ACTIVE_ICONSET = 'boxicons' |
42 | | -SITE_TITLE = 'Site title' |
43 | | -SITE_DESCRIPTION = 'Site title' |
44 | | -``` |
| 22 | +--- |
45 | 23 |
|
46 | | -## Local dev |
| 24 | +## ✨ Features |
47 | 25 |
|
48 | | -Install package |
| 26 | +- 🏗️ **Content Types:** Define custom schemas with JSON. |
| 27 | +- 🎨 **Theme Support:** Switch between beautiful, responsive themes instantly. |
| 28 | +- 🔐 **Built-in Auth:** Secure admin and user management out of the box. |
| 29 | +- 🍱 **Modular Architecture:** Extend functionality with a robust plugin system. |
| 30 | +- 🖼️ **Media Management:** Simple upload and resource handling. |
| 31 | +- ⚡ **Flask Powered:** Minimal, fast, and easy to customize. |
49 | 32 |
|
50 | | -! Important: Please create and activate a virtual environment. |
| 33 | +--- |
51 | 34 |
|
52 | | -``` |
53 | | -python -m pip install -e . |
54 | | -``` |
55 | | -Then initialise |
| 35 | +## 📸 See it in Action |
56 | 36 |
|
57 | | -``` |
58 | | -cd pythoncms |
59 | | -shopyo initialise |
60 | | -flask --debug run |
61 | | -``` |
| 37 | +### Admin Dashboard |
| 38 | + |
62 | 39 |
|
63 | | -for migrating |
| 40 | +### Page Editor |
| 41 | + |
64 | 42 |
|
65 | | -``` |
66 | | -flask db migrate |
67 | | -flask db upgrade |
68 | | -``` |
| 43 | +### Website Frontend |
| 44 | + |
69 | 45 |
|
70 | | -run |
| 46 | +--- |
71 | 47 |
|
72 | | -``` |
73 | | -flask --debug run |
74 | | -``` |
| 48 | +## 🛠️ Local Development |
75 | 49 |
|
76 | | -dashboard |
| 50 | +If you want to contribute to the core or customize the engine: |
77 | 51 |
|
78 | | -login with `admin@domain.com` | `pass` |
79 | | -``` |
80 | | -http://127.0.0.1:5000/dashboard/ |
81 | | -``` |
| 52 | +1. **Clone and Install:** |
| 53 | + ```bash |
| 54 | + python -m pip install -e . |
| 55 | + ``` |
82 | 56 |
|
83 | | -## Theme |
| 57 | +2. **Initialize:** |
| 58 | + ```bash |
| 59 | + cd pythoncms |
| 60 | + shopyo initialise |
| 61 | + flask --debug run |
| 62 | + ``` |
84 | 63 |
|
85 | | -Themes are located at '/static/themes/' |
| 64 | +3. **Database Migrations:** |
| 65 | + ```bash |
| 66 | + flask db migrate |
| 67 | + flask db upgrade |
| 68 | + ``` |
86 | 69 |
|
87 | | -Each front theme must have |
| 70 | +--- |
88 | 71 |
|
89 | | -``` |
90 | | -index.html |
91 | | -contact.html |
92 | | -page.html |
93 | | -``` |
| 72 | +## 🎨 Themes & Customization |
94 | 73 |
|
95 | | -Each back theme must have |
| 74 | +Themes are located at `/static/themes/`. |
96 | 75 |
|
97 | | -``` |
98 | | -base.html |
99 | | -login.html |
100 | | -register.html |
101 | | -unconfirmed.html |
102 | | -``` |
| 76 | +### Front Themes |
| 77 | +Must include `index.html`, `contact.html`, and `page.html`. |
103 | 78 |
|
104 | | -- info.json |
| 79 | +### Back Themes |
| 80 | +Must include `base.html`, `login.html`, `register.html`, and `unconfirmed.html`. |
105 | 81 |
|
106 | | -```json |
107 | | -{ |
108 | | - "author": "ARJ", |
109 | | - "version": "1.0.20000000000003" |
110 | | -} |
111 | | -``` |
| 82 | +--- |
112 | 83 |
|
113 | | -## Info json |
| 84 | +## 📄 License & Community |
114 | 85 |
|
115 | | -``` |
116 | | -{ |
117 | | - "display_string": "Admin", |
118 | | - "type": "show", // hidden if hide |
119 | | - "icons":{ |
120 | | - "fa": "fas fa-user-lock", // set according to ACTIVE_ICONSET |
121 | | - "boxicons": "", // set according to ACTIVE_ICONSET |
122 | | - "file": "icon.svg" // if present, will be used and searched for |
123 | | - // in module/static. Make sure to shopyo collecstatic in production |
124 | | - }, |
125 | | - "url_prefix": "/appadmin", |
126 | | - "menu": { |
127 | | - "list users":"/", // url-prefix will be concatenated with it for sub menus. |
128 | | - "add user": "/add", |
129 | | - "roles":"/roles" |
130 | | - }, |
131 | | - "menu-type": "show-menu", // or no-menu. Expects menu key if show-menu. |
132 | | - "module_name": "appadmin", |
133 | | - "author": { |
134 | | - "name":"Abdur-Rahmaan Janhangeer", |
135 | | - "website":"https://www.pythonkitchen.com/about-me/", |
136 | | - "mail":"arj.python@gmail.com" |
137 | | - } |
138 | | -} |
139 | | -``` |
140 | | -## Changelog |
| 86 | +- **License:** MIT |
| 87 | +- **Discord:** [Join our community](https://discord.com/invite/k37Ef6w) |
| 88 | +- **Issues:** [Report a bug](https://github.com/shopyo/pythoncms/issues) |
141 | 89 |
|
142 | | -1.2.0 |
| 90 | +--- |
143 | 91 |
|
144 | | -- Tiny MCE configured |
145 | | -- start command |
| 92 | +*Powered by the Shopyo engine.* |
0 commit comments