plinth-cli 1.0.2__tar.gz → 1.0.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of plinth-cli might be problematic. Click here for more details.
- plinth_cli-1.0.3/LICENSE +21 -0
- {plinth_cli-1.0.2 → plinth_cli-1.0.3}/PKG-INFO +57 -33
- {plinth_cli-1.0.2 → plinth_cli-1.0.3}/README.md +34 -31
- plinth_cli-1.0.3/ROADMAP.md +128 -0
- {plinth_cli-1.0.2 → plinth_cli-1.0.3}/docs/developer-guide.md +40 -40
- {plinth_cli-1.0.2 → plinth_cli-1.0.3}/docs/plinth-complete-guide.md +40 -40
- {plinth_cli-1.0.2 → plinth_cli-1.0.3}/pyproject.toml +3 -3
- {plinth_cli-1.0.2 → plinth_cli-1.0.3}/src/plinth/cli.py +0 -3
- {plinth_cli-1.0.2 → plinth_cli-1.0.3}/src/plinth/commands/add.py +0 -1
- {plinth_cli-1.0.2 → plinth_cli-1.0.3}/src/plinth/commands/doctor.py +0 -1
- {plinth_cli-1.0.2 → plinth_cli-1.0.3}/src/plinth/config.py +0 -1
- {plinth_cli-1.0.2 → plinth_cli-1.0.3}/src/plinth/logger.py +0 -1
- {plinth_cli-1.0.2 → plinth_cli-1.0.3}/src/plinth/packages.py +2 -3
- {plinth_cli-1.0.2 → plinth_cli-1.0.3}/src/plinth/templates/base/.gitignore +1 -0
- {plinth_cli-1.0.2 → plinth_cli-1.0.3}/src/plinth/templates.py +0 -1
- plinth_cli-1.0.3/tests/__init__.py +1 -0
- plinth_cli-1.0.3/tests/test_config.py +144 -0
- plinth_cli-1.0.3/tests/test_exceptions.py +205 -0
- plinth_cli-1.0.3/tests/test_state.py +285 -0
- plinth_cli-1.0.2/src/plinth/templates/base/.env.local +0 -1
- {plinth_cli-1.0.2 → plinth_cli-1.0.3}/requirements.txt +0 -0
- {plinth_cli-1.0.2 → plinth_cli-1.0.3}/src/plinth/__init__.py +0 -0
- {plinth_cli-1.0.2 → plinth_cli-1.0.3}/src/plinth/__main__.py +0 -0
- {plinth_cli-1.0.2 → plinth_cli-1.0.3}/src/plinth/commands/__init__.py +0 -0
- {plinth_cli-1.0.2 → plinth_cli-1.0.3}/src/plinth/commands/init.py +0 -0
- {plinth_cli-1.0.2 → plinth_cli-1.0.3}/src/plinth/commands/list.py +0 -0
- {plinth_cli-1.0.2 → plinth_cli-1.0.3}/src/plinth/commands/remove.py +0 -0
- {plinth_cli-1.0.2 → plinth_cli-1.0.3}/src/plinth/exceptions.py +0 -0
- {plinth_cli-1.0.2 → plinth_cli-1.0.3}/src/plinth/injector.py +0 -0
- {plinth_cli-1.0.2 → plinth_cli-1.0.3}/src/plinth/state.py +0 -0
- {plinth_cli-1.0.2 → plinth_cli-1.0.3}/src/plinth/templates/base/.env.example +0 -0
- {plinth_cli-1.0.2 → plinth_cli-1.0.3}/src/plinth/templates/base/README.md.j2 +0 -0
- {plinth_cli-1.0.2 → plinth_cli-1.0.3}/src/plinth/templates/base/pyproject.toml.j2 +0 -0
- {plinth_cli-1.0.2 → plinth_cli-1.0.3}/src/plinth/templates/base/src/__init__.py +0 -0
- {plinth_cli-1.0.2 → plinth_cli-1.0.3}/src/plinth/templates/base/src/api/__init__.py +0 -0
- {plinth_cli-1.0.2 → plinth_cli-1.0.3}/src/plinth/templates/base/src/api/v1/__init__.py +0 -0
- {plinth_cli-1.0.2 → plinth_cli-1.0.3}/src/plinth/templates/base/src/api/v1/health.py +0 -0
- {plinth_cli-1.0.2 → plinth_cli-1.0.3}/src/plinth/templates/base/src/config.py.j2 +0 -0
- {plinth_cli-1.0.2 → plinth_cli-1.0.3}/src/plinth/templates/base/src/core/__init__.py +0 -0
- {plinth_cli-1.0.2 → plinth_cli-1.0.3}/src/plinth/templates/base/src/core/config.py.j2 +0 -0
- {plinth_cli-1.0.2 → plinth_cli-1.0.3}/src/plinth/templates/base/src/core/database.py.j2 +0 -0
- {plinth_cli-1.0.2 → plinth_cli-1.0.3}/src/plinth/templates/base/src/core/registry.py +0 -0
- {plinth_cli-1.0.2 → plinth_cli-1.0.3}/src/plinth/templates/base/src/main.py.j2 +0 -0
- {plinth_cli-1.0.2 → plinth_cli-1.0.3}/src/plinth/templates/base/src/models/__init__.py +0 -0
- {plinth_cli-1.0.2 → plinth_cli-1.0.3}/src/plinth/templates/base/tests/__init__.py +0 -0
plinth_cli-1.0.3/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Plinth Contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: plinth-cli
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.3
|
|
4
4
|
Summary: Scaffold FastAPI projects in seconds, add features as you grow
|
|
5
5
|
Project-URL: Homepage, https://github.com/cybertycoon/plinth
|
|
6
6
|
Project-URL: Documentation, https://github.com/cybertycoon/plinth/blob/main/docs
|
|
@@ -8,7 +8,28 @@ Project-URL: Repository, https://github.com/cybertycoon/plinth.git
|
|
|
8
8
|
Project-URL: Issues, https://github.com/cybertycoon/plinth/issues
|
|
9
9
|
Project-URL: Changelog, https://github.com/cybertycoon/plinth/blob/main/CHANGELOG.md
|
|
10
10
|
Author-email: Silas Okanlawon <okanlawonsilas@gmail.com>
|
|
11
|
-
License: MIT
|
|
11
|
+
License: MIT License
|
|
12
|
+
|
|
13
|
+
Copyright (c) 2026 Plinth Contributors
|
|
14
|
+
|
|
15
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
16
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
17
|
+
in the Software without restriction, including without limitation the rights
|
|
18
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
19
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
20
|
+
furnished to do so, subject to the following conditions:
|
|
21
|
+
|
|
22
|
+
The above copyright notice and this permission notice shall be included in all
|
|
23
|
+
copies or substantial portions of the Software.
|
|
24
|
+
|
|
25
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
26
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
27
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
28
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
29
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
30
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
31
|
+
SOFTWARE.
|
|
32
|
+
License-File: LICENSE
|
|
12
33
|
Keywords: api,cli,fastapi,framework,generator,scaffolding,web
|
|
13
34
|
Classifier: Development Status :: 4 - Beta
|
|
14
35
|
Classifier: Environment :: Console
|
|
@@ -33,7 +54,9 @@ Requires-Dist: toml>=0.10.2
|
|
|
33
54
|
Requires-Dist: typer[all]>=0.12.0
|
|
34
55
|
Description-Content-Type: text/markdown
|
|
35
56
|
|
|
36
|
-
# 🪨 Plinth
|
|
57
|
+
# 🪨 Plinth-CLI
|
|
58
|
+
|
|
59
|
+
[](LICENSE)
|
|
37
60
|
|
|
38
61
|
> Stop building the "basement" of your FastAPI project.
|
|
39
62
|
|
|
@@ -50,20 +73,20 @@ Every new FastAPI project starts with the same 2-hour slog:
|
|
|
50
73
|
|
|
51
74
|
## The Solution
|
|
52
75
|
|
|
53
|
-
Plinth scaffolds production-ready FastAPI projects in **2 seconds**, then lets you add features incrementally without breaking your code.
|
|
76
|
+
Plinth-CLI scaffolds production-ready FastAPI projects in **2 seconds**, then lets you add features incrementally without breaking your code.
|
|
54
77
|
|
|
55
78
|
```bash
|
|
56
79
|
# Start with exactly what you need
|
|
57
|
-
plinth init my-api --db postgres --auth jwt
|
|
80
|
+
plinth-cli init my-api --db postgres --auth jwt
|
|
58
81
|
|
|
59
82
|
# Change your mind later? No problem.
|
|
60
|
-
plinth add redis
|
|
61
|
-
plinth add auth-session
|
|
83
|
+
plinth-cli add redis
|
|
84
|
+
plinth-cli add auth-session
|
|
62
85
|
```
|
|
63
86
|
|
|
64
|
-
## Why Plinth?
|
|
87
|
+
## Why Plinth-CLI?
|
|
65
88
|
|
|
66
|
-
| Without Plinth
|
|
89
|
+
| Without Plinth-CLI | With Plinth-CLI |
|
|
67
90
|
| --------------------------------------------- | ---------------------------------------------- |
|
|
68
91
|
| Copy-paste boilerplate from old projects | Generate clean, consistent structure instantly |
|
|
69
92
|
| Fear of adding features mid-project | Add/remove modules anytime safely |
|
|
@@ -88,7 +111,7 @@ uv tool install plinth-cli
|
|
|
88
111
|
|
|
89
112
|
```bash
|
|
90
113
|
git clone https://github.com/cybertycoon/plinth.git
|
|
91
|
-
cd plinth
|
|
114
|
+
cd plinth-cli
|
|
92
115
|
pip install -r requirements.txt
|
|
93
116
|
pip install -e .
|
|
94
117
|
```
|
|
@@ -98,7 +121,7 @@ pip install -e .
|
|
|
98
121
|
### Create a Basic Project
|
|
99
122
|
|
|
100
123
|
```bash
|
|
101
|
-
plinth init my-app
|
|
124
|
+
plinth-cli init my-app
|
|
102
125
|
cd my-app
|
|
103
126
|
uv run uvicorn src.main:app --reload
|
|
104
127
|
```
|
|
@@ -106,7 +129,7 @@ uv run uvicorn src.main:app --reload
|
|
|
106
129
|
### Create with Database & Auth
|
|
107
130
|
|
|
108
131
|
```bash
|
|
109
|
-
plinth init my-api --db postgres --auth jwt --redis
|
|
132
|
+
plinth-cli init my-api --db postgres --auth jwt --redis
|
|
110
133
|
```
|
|
111
134
|
|
|
112
135
|
### Add Features Later
|
|
@@ -115,27 +138,27 @@ plinth init my-api --db postgres --auth jwt --redis
|
|
|
115
138
|
cd my-api
|
|
116
139
|
|
|
117
140
|
# Add Redis caching
|
|
118
|
-
plinth add redis
|
|
141
|
+
plinth-cli add redis
|
|
119
142
|
|
|
120
143
|
# Add JWT authentication
|
|
121
|
-
plinth add auth-jwt
|
|
144
|
+
plinth-cli add auth-jwt
|
|
122
145
|
```
|
|
123
146
|
|
|
124
147
|
## Commands
|
|
125
148
|
|
|
126
|
-
### `plinth init <name>` — Create New Project
|
|
149
|
+
### `plinth-cli init <name>` — Create New Project
|
|
127
150
|
|
|
128
151
|
Scaffold a new FastAPI project with your chosen features.
|
|
129
152
|
|
|
130
153
|
```bash
|
|
131
154
|
# Basic project
|
|
132
|
-
plinth init my-app
|
|
155
|
+
plinth-cli init my-app
|
|
133
156
|
|
|
134
157
|
# With database and auth
|
|
135
|
-
plinth init my-api --db postgres --auth jwt
|
|
158
|
+
plinth-cli init my-api --db postgres --auth jwt
|
|
136
159
|
|
|
137
160
|
# Full stack
|
|
138
|
-
plinth init my-service --db postgres --redis --auth jwt
|
|
161
|
+
plinth-cli init my-service --db postgres --redis --auth jwt
|
|
139
162
|
```
|
|
140
163
|
|
|
141
164
|
**Options:**
|
|
@@ -144,7 +167,7 @@ plinth init my-service --db postgres --redis --auth jwt
|
|
|
144
167
|
- `--redis` — Add Redis caching
|
|
145
168
|
- `--auth jwt|session` — Add authentication
|
|
146
169
|
|
|
147
|
-
### `plinth add <module>` — Add Features Later
|
|
170
|
+
### `plinth-cli add <module>` — Add Features Later
|
|
148
171
|
|
|
149
172
|
Add modules to an existing project without breaking your code.
|
|
150
173
|
|
|
@@ -152,38 +175,38 @@ Add modules to an existing project without breaking your code.
|
|
|
152
175
|
cd my-api
|
|
153
176
|
|
|
154
177
|
# Add Redis for caching
|
|
155
|
-
plinth add redis
|
|
178
|
+
plinth-cli add redis
|
|
156
179
|
|
|
157
180
|
# Add JWT authentication
|
|
158
|
-
plinth add auth-jwt
|
|
181
|
+
plinth-cli add auth-jwt
|
|
159
182
|
|
|
160
183
|
# Add database (if not added during init)
|
|
161
|
-
plinth add postgres
|
|
184
|
+
plinth-cli add postgres
|
|
162
185
|
```
|
|
163
186
|
|
|
164
|
-
### `plinth remove <module>` — Remove Features
|
|
187
|
+
### `plinth-cli remove <module>` — Remove Features
|
|
165
188
|
|
|
166
189
|
Cleanly remove a module and its code.
|
|
167
190
|
|
|
168
191
|
```bash
|
|
169
|
-
plinth remove redis
|
|
170
|
-
plinth remove auth-jwt
|
|
192
|
+
plinth-cli remove redis
|
|
193
|
+
plinth-cli remove auth-jwt
|
|
171
194
|
```
|
|
172
195
|
|
|
173
|
-
### `plinth list` — See What's Available
|
|
196
|
+
### `plinth-cli list` — See What's Available
|
|
174
197
|
|
|
175
198
|
Shows installed modules and available modules you can add.
|
|
176
199
|
|
|
177
200
|
```bash
|
|
178
|
-
plinth list
|
|
201
|
+
plinth-cli list
|
|
179
202
|
```
|
|
180
203
|
|
|
181
|
-
### `plinth doctor` — Check Project Health
|
|
204
|
+
### `plinth-cli doctor` — Check Project Health
|
|
182
205
|
|
|
183
|
-
Diagnoses issues with your Plinth project.
|
|
206
|
+
Diagnoses issues with your Plinth-CLI project.
|
|
184
207
|
|
|
185
208
|
```bash
|
|
186
|
-
plinth doctor
|
|
209
|
+
plinth-cli doctor
|
|
187
210
|
```
|
|
188
211
|
|
|
189
212
|
## Available Modules
|
|
@@ -195,7 +218,7 @@ plinth doctor
|
|
|
195
218
|
|
|
196
219
|
## How It Works
|
|
197
220
|
|
|
198
|
-
Plinth doesn't just copy files—it **understands** your Python code using AST manipulation. When you run `plinth add redis`, it:
|
|
221
|
+
Plinth-CLI doesn't just copy files—it **understands** your Python code using AST manipulation. When you run `plinth-cli add redis`, it:
|
|
199
222
|
|
|
200
223
|
1. Injects Redis connection code into your main app
|
|
201
224
|
2. Updates `.env` with Redis URL
|
|
@@ -234,8 +257,9 @@ my-app/
|
|
|
234
257
|
|
|
235
258
|
## Documentation
|
|
236
259
|
|
|
237
|
-
- [Complete User Guide](docs/plinth-complete-guide.md)
|
|
238
|
-
- [Developer Guide](docs/developer-guide.md)
|
|
260
|
+
- [Complete User Guide](https://github.com/CyberTycoon/plinth/blob/main/docs/plinth-complete-guide.md)
|
|
261
|
+
- [Developer Guide](https://github.com/CyberTycoon/plinth/blob/main/docs/developer-guide.md)
|
|
262
|
+
- [Roadmap](https://github.com/CyberTycoon/plinth/blob/main/ROADMAP.md)
|
|
239
263
|
|
|
240
264
|
## License
|
|
241
265
|
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
# 🪨 Plinth
|
|
1
|
+
# 🪨 Plinth-CLI
|
|
2
|
+
|
|
3
|
+
[](LICENSE)
|
|
2
4
|
|
|
3
5
|
> Stop building the "basement" of your FastAPI project.
|
|
4
6
|
|
|
@@ -15,20 +17,20 @@ Every new FastAPI project starts with the same 2-hour slog:
|
|
|
15
17
|
|
|
16
18
|
## The Solution
|
|
17
19
|
|
|
18
|
-
Plinth scaffolds production-ready FastAPI projects in **2 seconds**, then lets you add features incrementally without breaking your code.
|
|
20
|
+
Plinth-CLI scaffolds production-ready FastAPI projects in **2 seconds**, then lets you add features incrementally without breaking your code.
|
|
19
21
|
|
|
20
22
|
```bash
|
|
21
23
|
# Start with exactly what you need
|
|
22
|
-
plinth init my-api --db postgres --auth jwt
|
|
24
|
+
plinth-cli init my-api --db postgres --auth jwt
|
|
23
25
|
|
|
24
26
|
# Change your mind later? No problem.
|
|
25
|
-
plinth add redis
|
|
26
|
-
plinth add auth-session
|
|
27
|
+
plinth-cli add redis
|
|
28
|
+
plinth-cli add auth-session
|
|
27
29
|
```
|
|
28
30
|
|
|
29
|
-
## Why Plinth?
|
|
31
|
+
## Why Plinth-CLI?
|
|
30
32
|
|
|
31
|
-
| Without Plinth
|
|
33
|
+
| Without Plinth-CLI | With Plinth-CLI |
|
|
32
34
|
| --------------------------------------------- | ---------------------------------------------- |
|
|
33
35
|
| Copy-paste boilerplate from old projects | Generate clean, consistent structure instantly |
|
|
34
36
|
| Fear of adding features mid-project | Add/remove modules anytime safely |
|
|
@@ -53,7 +55,7 @@ uv tool install plinth-cli
|
|
|
53
55
|
|
|
54
56
|
```bash
|
|
55
57
|
git clone https://github.com/cybertycoon/plinth.git
|
|
56
|
-
cd plinth
|
|
58
|
+
cd plinth-cli
|
|
57
59
|
pip install -r requirements.txt
|
|
58
60
|
pip install -e .
|
|
59
61
|
```
|
|
@@ -63,7 +65,7 @@ pip install -e .
|
|
|
63
65
|
### Create a Basic Project
|
|
64
66
|
|
|
65
67
|
```bash
|
|
66
|
-
plinth init my-app
|
|
68
|
+
plinth-cli init my-app
|
|
67
69
|
cd my-app
|
|
68
70
|
uv run uvicorn src.main:app --reload
|
|
69
71
|
```
|
|
@@ -71,7 +73,7 @@ uv run uvicorn src.main:app --reload
|
|
|
71
73
|
### Create with Database & Auth
|
|
72
74
|
|
|
73
75
|
```bash
|
|
74
|
-
plinth init my-api --db postgres --auth jwt --redis
|
|
76
|
+
plinth-cli init my-api --db postgres --auth jwt --redis
|
|
75
77
|
```
|
|
76
78
|
|
|
77
79
|
### Add Features Later
|
|
@@ -80,27 +82,27 @@ plinth init my-api --db postgres --auth jwt --redis
|
|
|
80
82
|
cd my-api
|
|
81
83
|
|
|
82
84
|
# Add Redis caching
|
|
83
|
-
plinth add redis
|
|
85
|
+
plinth-cli add redis
|
|
84
86
|
|
|
85
87
|
# Add JWT authentication
|
|
86
|
-
plinth add auth-jwt
|
|
88
|
+
plinth-cli add auth-jwt
|
|
87
89
|
```
|
|
88
90
|
|
|
89
91
|
## Commands
|
|
90
92
|
|
|
91
|
-
### `plinth init <name>` — Create New Project
|
|
93
|
+
### `plinth-cli init <name>` — Create New Project
|
|
92
94
|
|
|
93
95
|
Scaffold a new FastAPI project with your chosen features.
|
|
94
96
|
|
|
95
97
|
```bash
|
|
96
98
|
# Basic project
|
|
97
|
-
plinth init my-app
|
|
99
|
+
plinth-cli init my-app
|
|
98
100
|
|
|
99
101
|
# With database and auth
|
|
100
|
-
plinth init my-api --db postgres --auth jwt
|
|
102
|
+
plinth-cli init my-api --db postgres --auth jwt
|
|
101
103
|
|
|
102
104
|
# Full stack
|
|
103
|
-
plinth init my-service --db postgres --redis --auth jwt
|
|
105
|
+
plinth-cli init my-service --db postgres --redis --auth jwt
|
|
104
106
|
```
|
|
105
107
|
|
|
106
108
|
**Options:**
|
|
@@ -109,7 +111,7 @@ plinth init my-service --db postgres --redis --auth jwt
|
|
|
109
111
|
- `--redis` — Add Redis caching
|
|
110
112
|
- `--auth jwt|session` — Add authentication
|
|
111
113
|
|
|
112
|
-
### `plinth add <module>` — Add Features Later
|
|
114
|
+
### `plinth-cli add <module>` — Add Features Later
|
|
113
115
|
|
|
114
116
|
Add modules to an existing project without breaking your code.
|
|
115
117
|
|
|
@@ -117,38 +119,38 @@ Add modules to an existing project without breaking your code.
|
|
|
117
119
|
cd my-api
|
|
118
120
|
|
|
119
121
|
# Add Redis for caching
|
|
120
|
-
plinth add redis
|
|
122
|
+
plinth-cli add redis
|
|
121
123
|
|
|
122
124
|
# Add JWT authentication
|
|
123
|
-
plinth add auth-jwt
|
|
125
|
+
plinth-cli add auth-jwt
|
|
124
126
|
|
|
125
127
|
# Add database (if not added during init)
|
|
126
|
-
plinth add postgres
|
|
128
|
+
plinth-cli add postgres
|
|
127
129
|
```
|
|
128
130
|
|
|
129
|
-
### `plinth remove <module>` — Remove Features
|
|
131
|
+
### `plinth-cli remove <module>` — Remove Features
|
|
130
132
|
|
|
131
133
|
Cleanly remove a module and its code.
|
|
132
134
|
|
|
133
135
|
```bash
|
|
134
|
-
plinth remove redis
|
|
135
|
-
plinth remove auth-jwt
|
|
136
|
+
plinth-cli remove redis
|
|
137
|
+
plinth-cli remove auth-jwt
|
|
136
138
|
```
|
|
137
139
|
|
|
138
|
-
### `plinth list` — See What's Available
|
|
140
|
+
### `plinth-cli list` — See What's Available
|
|
139
141
|
|
|
140
142
|
Shows installed modules and available modules you can add.
|
|
141
143
|
|
|
142
144
|
```bash
|
|
143
|
-
plinth list
|
|
145
|
+
plinth-cli list
|
|
144
146
|
```
|
|
145
147
|
|
|
146
|
-
### `plinth doctor` — Check Project Health
|
|
148
|
+
### `plinth-cli doctor` — Check Project Health
|
|
147
149
|
|
|
148
|
-
Diagnoses issues with your Plinth project.
|
|
150
|
+
Diagnoses issues with your Plinth-CLI project.
|
|
149
151
|
|
|
150
152
|
```bash
|
|
151
|
-
plinth doctor
|
|
153
|
+
plinth-cli doctor
|
|
152
154
|
```
|
|
153
155
|
|
|
154
156
|
## Available Modules
|
|
@@ -160,7 +162,7 @@ plinth doctor
|
|
|
160
162
|
|
|
161
163
|
## How It Works
|
|
162
164
|
|
|
163
|
-
Plinth doesn't just copy files—it **understands** your Python code using AST manipulation. When you run `plinth add redis`, it:
|
|
165
|
+
Plinth-CLI doesn't just copy files—it **understands** your Python code using AST manipulation. When you run `plinth-cli add redis`, it:
|
|
164
166
|
|
|
165
167
|
1. Injects Redis connection code into your main app
|
|
166
168
|
2. Updates `.env` with Redis URL
|
|
@@ -199,8 +201,9 @@ my-app/
|
|
|
199
201
|
|
|
200
202
|
## Documentation
|
|
201
203
|
|
|
202
|
-
- [Complete User Guide](docs/plinth-complete-guide.md)
|
|
203
|
-
- [Developer Guide](docs/developer-guide.md)
|
|
204
|
+
- [Complete User Guide](https://github.com/CyberTycoon/plinth/blob/main/docs/plinth-complete-guide.md)
|
|
205
|
+
- [Developer Guide](https://github.com/CyberTycoon/plinth/blob/main/docs/developer-guide.md)
|
|
206
|
+
- [Roadmap](https://github.com/CyberTycoon/plinth/blob/main/ROADMAP.md)
|
|
204
207
|
|
|
205
208
|
## License
|
|
206
209
|
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
# 🗺️ Plinth-CLI Roadmap
|
|
2
|
+
|
|
3
|
+
> This roadmap outlines our vision for Plinth-CLI through 2027 and beyond. We are committed to long-term maintenance and continuous improvement.
|
|
4
|
+
|
|
5
|
+
**Legend:**
|
|
6
|
+
|
|
7
|
+
- ✅ **Implemented** — Available now
|
|
8
|
+
- 🚧 **In Progress** — Actively being developed
|
|
9
|
+
- 📋 **Planned** — Committed for this quarter
|
|
10
|
+
- 💡 **Proposed** — Under consideration, may change based on community feedback
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## Current Status
|
|
15
|
+
|
|
16
|
+
Plinth-CLI is actively maintained and production-ready at v1.0.2. We follow semantic versioning and maintain backward compatibility within major versions.
|
|
17
|
+
|
|
18
|
+
### ✅ Implemented Features
|
|
19
|
+
|
|
20
|
+
- **Core Commands:** `init`, `add`, `list`, `remove`, `doctor`
|
|
21
|
+
- **Database Modules:** PostgreSQL, MySQL, SQLite with SQLAlchemy 2.0
|
|
22
|
+
- **Authentication:** JWT and session-based auth
|
|
23
|
+
- **Caching:** Redis integration
|
|
24
|
+
- **Code Injection:** AST-aware modifications via LibCST
|
|
25
|
+
- **State Management:** `.plinth.json` for tracking project configuration
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## 2026 Milestones
|
|
30
|
+
|
|
31
|
+
### Q1 2026: Stability & Core Extensions
|
|
32
|
+
|
|
33
|
+
**Focus:** Hardening existing features and expanding the module catalog
|
|
34
|
+
|
|
35
|
+
- [ ] 📋 **Testing Module** — `plinth add pytest` for test scaffolding with fixtures
|
|
36
|
+
- [ ] 📋 **Docker Module** — Enhanced Docker Compose with PostgreSQL/Redis services
|
|
37
|
+
- [ ] 📋 **Linting Module** — `plinth add ruff` for code formatting and linting
|
|
38
|
+
- [ ] 📋 **MongoDB Module** — NoSQL database support via Motor
|
|
39
|
+
- [ ] 📋 **Doctor Enhancements** — Better diagnostics for missing dependencies
|
|
40
|
+
|
|
41
|
+
### Q2 2026: Developer Experience
|
|
42
|
+
|
|
43
|
+
**Focus:** Making Plinth-CLI more powerful for existing FastAPI projects
|
|
44
|
+
|
|
45
|
+
- [ ] 📋 **Project Templates** — `plinth init --template microservice` for different architectures
|
|
46
|
+
- [ ] 📋 **Alembic Integration** — `plinth add migrations` with auto-generated revision support
|
|
47
|
+
- [ ] 📋 **Celery Module** — Background task queues with Redis/RabbitMQ
|
|
48
|
+
- [ ] 📋 **Environment Sync** — `plinth sync` to reconcile .env with pyproject.toml
|
|
49
|
+
- [ ] 📋 **Upgrade Command** — `plinth upgrade` to update modules to latest versions
|
|
50
|
+
|
|
51
|
+
### Q3 2026: Ecosystem Growth
|
|
52
|
+
|
|
53
|
+
**Focus:** Community modules and integrations
|
|
54
|
+
|
|
55
|
+
- [ ] 💡 **Module Registry** — Public index for community-contributed modules
|
|
56
|
+
- [ ] 💡 **Webhook Module** — Stripe, GitHub webhook handlers
|
|
57
|
+
- [ ] 💡 **Email Module** — FastMail, SendGrid integration templates
|
|
58
|
+
- [ ] 💡 **GraphQL Module** — Strawberry GraphQL scaffolding
|
|
59
|
+
- [ ] 💡 **OpenAPI Enhancements** — Better documentation generation
|
|
60
|
+
|
|
61
|
+
### Q4 2026: Enterprise & Scale
|
|
62
|
+
|
|
63
|
+
**Focus:** Supporting larger teams and deployments
|
|
64
|
+
|
|
65
|
+
- [ ] 💡 **Configuration Profiles** — Save and share project templates
|
|
66
|
+
- [ ] 💡 **CI/CD Templates** — GitHub Actions, GitLab CI scaffolding
|
|
67
|
+
- [ ] 💡 **Monitoring Module** — Prometheus metrics endpoints
|
|
68
|
+
- [ ] 💡 **Structured Logging** — JSON logging with correlation IDs
|
|
69
|
+
- [ ] 💡 **Health Checks** — Advanced health check endpoints with dependency status
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## 2027 Milestones
|
|
74
|
+
|
|
75
|
+
### Q1 2027: Platform Foundations
|
|
76
|
+
|
|
77
|
+
**Focus:** Building infrastructure for broader adoption
|
|
78
|
+
|
|
79
|
+
- [ ] 💡 **Plugin System** — Third-party module loading
|
|
80
|
+
- [ ] 💡 **Private Registries** — Self-hosted module hosting
|
|
81
|
+
- [ ] 💡 **Team Features** — Shared templates within organizations
|
|
82
|
+
- [ ] 💡 **VS Code Extension** — IDE integration for module management
|
|
83
|
+
|
|
84
|
+
### Q2 2027+ : Long-Term Vision
|
|
85
|
+
|
|
86
|
+
**Focus:** Expanding beyond core functionality
|
|
87
|
+
|
|
88
|
+
- [ ] 💡 **Framework Expansion** — Experimental Django/Flask scaffolding
|
|
89
|
+
- [ ] 💡 **Cloud Integrations** — AWS CDK, Azure Bicep templates
|
|
90
|
+
- [ ] 💡 **Kubernetes Support** — Helm chart generation
|
|
91
|
+
- [ ] 💡 **AI-Assisted Scaffolding** — Intelligent module recommendations
|
|
92
|
+
|
|
93
|
+
---
|
|
94
|
+
|
|
95
|
+
## How to Contribute
|
|
96
|
+
|
|
97
|
+
We welcome contributions! To propose a new module or feature:
|
|
98
|
+
|
|
99
|
+
1. Open a [GitHub Discussion](https://github.com/cybertycoon/plinth/discussions)
|
|
100
|
+
2. Submit a [GitHub Issue](https://github.com/cybertycoon/plinth/issues)
|
|
101
|
+
|
|
102
|
+
### Contributing New Modules
|
|
103
|
+
|
|
104
|
+
Modules are Jinja2 templates in `src/plinth/templates/`. See existing modules for patterns:
|
|
105
|
+
|
|
106
|
+
- [`src/plinth/templates/base/`](src/plinth/templates/base/) — Base project template
|
|
107
|
+
- Add module metadata to [`plinth_config.AVAILABLE_MODULES`](src/plinth/config.py:72)
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
## Version Support Policy
|
|
112
|
+
|
|
113
|
+
| Version | Status | Support Until |
|
|
114
|
+
| ------- | ------------------ | ------------------ |
|
|
115
|
+
| 1.x | Active Development | Q4 2027 |
|
|
116
|
+
| 0.x | End of Life | Already deprecated |
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
## Changelog
|
|
121
|
+
|
|
122
|
+
See [CHANGELOG.md](./CHANGELOG.md) for detailed release notes.
|
|
123
|
+
|
|
124
|
+
---
|
|
125
|
+
|
|
126
|
+
_Last updated: March 2026_
|
|
127
|
+
|
|
128
|
+
_This roadmap is a living document. Priorities may shift based on community feedback and maintainer capacity. Features marked with 💡 are aspirational and subject to change._
|