projectstarter-cli 0.1.0__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.
- projectstarter_cli-0.1.0/LICENSE +21 -0
- projectstarter_cli-0.1.0/PKG-INFO +662 -0
- projectstarter_cli-0.1.0/README.md +641 -0
- projectstarter_cli-0.1.0/projectstarter/__init__.py +0 -0
- projectstarter_cli-0.1.0/projectstarter/cli.py +173 -0
- projectstarter_cli-0.1.0/projectstarter/doctor.py +31 -0
- projectstarter_cli-0.1.0/projectstarter/generator.py +427 -0
- projectstarter_cli-0.1.0/projectstarter/registry.py +43 -0
- projectstarter_cli-0.1.0/projectstarter/utils.py +12 -0
- projectstarter_cli-0.1.0/projectstarter_cli.egg-info/PKG-INFO +662 -0
- projectstarter_cli-0.1.0/projectstarter_cli.egg-info/SOURCES.txt +18 -0
- projectstarter_cli-0.1.0/projectstarter_cli.egg-info/dependency_links.txt +1 -0
- projectstarter_cli-0.1.0/projectstarter_cli.egg-info/entry_points.txt +2 -0
- projectstarter_cli-0.1.0/projectstarter_cli.egg-info/top_level.txt +1 -0
- projectstarter_cli-0.1.0/pyproject.toml +51 -0
- projectstarter_cli-0.1.0/setup.cfg +4 -0
- projectstarter_cli-0.1.0/tests/test_cli.py +102 -0
- projectstarter_cli-0.1.0/tests/test_generator.py +84 -0
- projectstarter_cli-0.1.0/tests/test_registry.py +24 -0
- projectstarter_cli-0.1.0/tests/test_utils.py +19 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Mohamed Ali
|
|
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.
|
|
@@ -0,0 +1,662 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: projectstarter-cli
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: A Python CLI tool for quickly generating Python, Django, Flask, and FastAPI projects
|
|
5
|
+
Author-email: Mohamed Ali Ismail Jami <mohamedali32947@gmail.com>
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/hamada-cool/projectstarter
|
|
8
|
+
Project-URL: Repository, https://github.com/hamada-cool/projectstarter
|
|
9
|
+
Project-URL: Issues, https://github.com/hamada-cool/projectstarter/issues
|
|
10
|
+
Keywords: cli,project-generator,project-starter,python,django,flask,fastapi
|
|
11
|
+
Classifier: Development Status :: 4 - Beta
|
|
12
|
+
Classifier: Environment :: Console
|
|
13
|
+
Classifier: Intended Audience :: Developers
|
|
14
|
+
Classifier: Programming Language :: Python :: 3
|
|
15
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
16
|
+
Classifier: Topic :: Software Development :: Build Tools
|
|
17
|
+
Requires-Python: >=3.9
|
|
18
|
+
Description-Content-Type: text/markdown
|
|
19
|
+
License-File: LICENSE
|
|
20
|
+
Dynamic: license-file
|
|
21
|
+
|
|
22
|
+
# ProjectStarter ๐
|
|
23
|
+
|
|
24
|
+
ProjectStarter is a Python CLI tool created by **Mohamed Ali** for quickly creating ready-to-use project structures.
|
|
25
|
+
|
|
26
|
+
It helps developers avoid manually creating folders, files, virtual environments, installing framework dependencies, and preparing basic project documentation.
|
|
27
|
+
|
|
28
|
+
## โจ Features
|
|
29
|
+
|
|
30
|
+
- ๐ Create basic Python projects
|
|
31
|
+
- ๐ Create Django projects
|
|
32
|
+
- โก Create Flask projects
|
|
33
|
+
- ๐ Create FastAPI projects
|
|
34
|
+
- ๐ฆ Automatically create `.venv` for Django, Flask, and FastAPI projects
|
|
35
|
+
- โฌ๏ธ Automatically upgrade `pip`
|
|
36
|
+
- ๐ง Automatically install required framework packages
|
|
37
|
+
- ๐ Automatically generate `requirements.txt`
|
|
38
|
+
- ๐ซ Automatically generate `.gitignore`
|
|
39
|
+
- ๐ Automatically generate a README for generated projects
|
|
40
|
+
- ๐ List supported project types
|
|
41
|
+
- โน๏ธ Show information about each project type
|
|
42
|
+
- ๐ฉบ Check the ProjectStarter installation with `doctor`
|
|
43
|
+
- ๐งช Includes automated tests
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## ๐ Supported Project Types
|
|
48
|
+
|
|
49
|
+
| Project Type | Virtual Environment | Automatic Dependency Installation | Run Command |
|
|
50
|
+
|---|---|---|---|
|
|
51
|
+
| Python | No | No | `python src/<project_name>/main.py` |
|
|
52
|
+
| Django | Yes | Yes | `python manage.py runserver` |
|
|
53
|
+
| Flask | Yes | Yes | `python run.py` |
|
|
54
|
+
| FastAPI | Yes | Yes | `uvicorn app.main:app --reload` |
|
|
55
|
+
|
|
56
|
+
> The basic Python generator creates the project structure directly. Django, Flask, and FastAPI projects receive their own `.venv` and framework dependencies automatically.
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
# ๐ฆ Installation
|
|
61
|
+
|
|
62
|
+
Install ProjectStarter from PyPI:
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
pip install projectstarter
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
Check that it is installed:
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
projectstarter --version
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
Show the available commands:
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
projectstarter --help
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
# ๐ Usage
|
|
83
|
+
|
|
84
|
+
## 1. Create a project interactively
|
|
85
|
+
|
|
86
|
+
Run:
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
projectstarter create
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
ProjectStarter will show the available project types:
|
|
93
|
+
|
|
94
|
+
```text
|
|
95
|
+
Choose a project type:
|
|
96
|
+
|
|
97
|
+
1. python
|
|
98
|
+
2. django
|
|
99
|
+
3. flask
|
|
100
|
+
4. fastapi
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
Then enter the number of the project type and the project name.
|
|
104
|
+
|
|
105
|
+
Example:
|
|
106
|
+
|
|
107
|
+
```text
|
|
108
|
+
Enter your choice: 2
|
|
109
|
+
Enter project name: myproject
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
ProjectStarter will create the project automatically.
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
116
|
+
## 2. Create a Python project
|
|
117
|
+
|
|
118
|
+
Run:
|
|
119
|
+
|
|
120
|
+
```bash
|
|
121
|
+
projectstarter create python myproject
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
The generated structure is:
|
|
125
|
+
|
|
126
|
+
```text
|
|
127
|
+
myproject/
|
|
128
|
+
โโโ src/
|
|
129
|
+
โ โโโ myproject/
|
|
130
|
+
โ โโโ __init__.py
|
|
131
|
+
โ โโโ main.py
|
|
132
|
+
โโโ tests/
|
|
133
|
+
โ โโโ test_main.py
|
|
134
|
+
โโโ .gitignore
|
|
135
|
+
โโโ requirements.txt
|
|
136
|
+
โโโ README.md
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
### Run the Python project
|
|
140
|
+
|
|
141
|
+
Windows:
|
|
142
|
+
|
|
143
|
+
```powershell
|
|
144
|
+
python src/myproject/main.py
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
The generated application contains a simple `main()` function.
|
|
148
|
+
|
|
149
|
+
---
|
|
150
|
+
|
|
151
|
+
# ๐ Django
|
|
152
|
+
|
|
153
|
+
Create a Django project:
|
|
154
|
+
|
|
155
|
+
```bash
|
|
156
|
+
projectstarter create django myproject
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
ProjectStarter automatically:
|
|
160
|
+
|
|
161
|
+
1. Creates the project directory.
|
|
162
|
+
2. Creates `.venv`.
|
|
163
|
+
3. Upgrades `pip`.
|
|
164
|
+
4. Installs Django.
|
|
165
|
+
5. Creates the Django project using the `config` package.
|
|
166
|
+
6. Creates `requirements.txt`.
|
|
167
|
+
7. Creates `.gitignore`.
|
|
168
|
+
8. Creates a project README.
|
|
169
|
+
|
|
170
|
+
The main structure is:
|
|
171
|
+
|
|
172
|
+
```text
|
|
173
|
+
myproject/
|
|
174
|
+
โโโ .venv/
|
|
175
|
+
โโโ config/
|
|
176
|
+
โ โโโ __init__.py
|
|
177
|
+
โ โโโ asgi.py
|
|
178
|
+
โ โโโ settings.py
|
|
179
|
+
โ โโโ urls.py
|
|
180
|
+
โ โโโ wsgi.py
|
|
181
|
+
โโโ manage.py
|
|
182
|
+
โโโ requirements.txt
|
|
183
|
+
โโโ .gitignore
|
|
184
|
+
โโโ README.md
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
### Activate the virtual environment
|
|
188
|
+
|
|
189
|
+
Windows:
|
|
190
|
+
|
|
191
|
+
```powershell
|
|
192
|
+
cd myproject
|
|
193
|
+
.venv\Scripts\activate
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
macOS/Linux:
|
|
197
|
+
|
|
198
|
+
```bash
|
|
199
|
+
cd myproject
|
|
200
|
+
source .venv/bin/activate
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
### Run Django
|
|
204
|
+
|
|
205
|
+
```bash
|
|
206
|
+
python manage.py runserver
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
Open:
|
|
210
|
+
|
|
211
|
+
```text
|
|
212
|
+
http://127.0.0.1:8000/
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
---
|
|
216
|
+
|
|
217
|
+
# โก Flask
|
|
218
|
+
|
|
219
|
+
Create a Flask project:
|
|
220
|
+
|
|
221
|
+
```bash
|
|
222
|
+
projectstarter create flask myproject
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
ProjectStarter automatically:
|
|
226
|
+
|
|
227
|
+
1. Creates the project directory.
|
|
228
|
+
2. Creates `.venv`.
|
|
229
|
+
3. Upgrades `pip`.
|
|
230
|
+
4. Installs Flask.
|
|
231
|
+
5. Creates the `app` package.
|
|
232
|
+
6. Creates `templates` and `static` directories.
|
|
233
|
+
7. Creates `run.py`.
|
|
234
|
+
8. Creates `requirements.txt`.
|
|
235
|
+
9. Creates `.gitignore`.
|
|
236
|
+
10. Creates a project README.
|
|
237
|
+
|
|
238
|
+
The generated structure is:
|
|
239
|
+
|
|
240
|
+
```text
|
|
241
|
+
myproject/
|
|
242
|
+
โโโ .venv/
|
|
243
|
+
โโโ app/
|
|
244
|
+
โ โโโ __init__.py
|
|
245
|
+
โ โโโ templates/
|
|
246
|
+
โ โโโ static/
|
|
247
|
+
โโโ run.py
|
|
248
|
+
โโโ requirements.txt
|
|
249
|
+
โโโ .gitignore
|
|
250
|
+
โโโ README.md
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
### Activate the virtual environment
|
|
254
|
+
|
|
255
|
+
Windows:
|
|
256
|
+
|
|
257
|
+
```powershell
|
|
258
|
+
cd myproject
|
|
259
|
+
.venv\Scripts\activate
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
macOS/Linux:
|
|
263
|
+
|
|
264
|
+
```bash
|
|
265
|
+
cd myproject
|
|
266
|
+
source .venv/bin/activate
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
### Run Flask
|
|
270
|
+
|
|
271
|
+
```bash
|
|
272
|
+
python run.py
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
Open:
|
|
276
|
+
|
|
277
|
+
```text
|
|
278
|
+
http://127.0.0.1:5000/
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
---
|
|
282
|
+
|
|
283
|
+
# ๐ FastAPI
|
|
284
|
+
|
|
285
|
+
Create a FastAPI project:
|
|
286
|
+
|
|
287
|
+
```bash
|
|
288
|
+
projectstarter create fastapi myproject
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
ProjectStarter automatically:
|
|
292
|
+
|
|
293
|
+
1. Creates the project directory.
|
|
294
|
+
2. Creates `.venv`.
|
|
295
|
+
3. Upgrades `pip`.
|
|
296
|
+
4. Installs FastAPI.
|
|
297
|
+
5. Installs Uvicorn.
|
|
298
|
+
6. Creates the `app` package.
|
|
299
|
+
7. Creates `app/main.py`.
|
|
300
|
+
8. Creates `requirements.txt`.
|
|
301
|
+
9. Creates `.gitignore`.
|
|
302
|
+
10. Creates a project README.
|
|
303
|
+
|
|
304
|
+
The generated structure is:
|
|
305
|
+
|
|
306
|
+
```text
|
|
307
|
+
myproject/
|
|
308
|
+
โโโ .venv/
|
|
309
|
+
โโโ app/
|
|
310
|
+
โ โโโ __init__.py
|
|
311
|
+
โ โโโ main.py
|
|
312
|
+
โโโ requirements.txt
|
|
313
|
+
โโโ .gitignore
|
|
314
|
+
โโโ README.md
|
|
315
|
+
```
|
|
316
|
+
|
|
317
|
+
### Activate the virtual environment
|
|
318
|
+
|
|
319
|
+
Windows:
|
|
320
|
+
|
|
321
|
+
```powershell
|
|
322
|
+
cd myproject
|
|
323
|
+
.venv\Scripts\activate
|
|
324
|
+
```
|
|
325
|
+
|
|
326
|
+
macOS/Linux:
|
|
327
|
+
|
|
328
|
+
```bash
|
|
329
|
+
cd myproject
|
|
330
|
+
source .venv/bin/activate
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
### Run FastAPI
|
|
334
|
+
|
|
335
|
+
```bash
|
|
336
|
+
uvicorn app.main:app --reload
|
|
337
|
+
```
|
|
338
|
+
|
|
339
|
+
API:
|
|
340
|
+
|
|
341
|
+
```text
|
|
342
|
+
http://127.0.0.1:8000/
|
|
343
|
+
```
|
|
344
|
+
|
|
345
|
+
Swagger documentation:
|
|
346
|
+
|
|
347
|
+
```text
|
|
348
|
+
http://127.0.0.1:8000/docs
|
|
349
|
+
```
|
|
350
|
+
|
|
351
|
+
---
|
|
352
|
+
|
|
353
|
+
# ๐ List Project Types
|
|
354
|
+
|
|
355
|
+
To see all available generators:
|
|
356
|
+
|
|
357
|
+
```bash
|
|
358
|
+
projectstarter list
|
|
359
|
+
```
|
|
360
|
+
|
|
361
|
+
Example:
|
|
362
|
+
|
|
363
|
+
```text
|
|
364
|
+
Available project types:
|
|
365
|
+
|
|
366
|
+
python
|
|
367
|
+
django
|
|
368
|
+
flask
|
|
369
|
+
fastapi
|
|
370
|
+
```
|
|
371
|
+
|
|
372
|
+
---
|
|
373
|
+
|
|
374
|
+
# โน๏ธ Project Information
|
|
375
|
+
|
|
376
|
+
Use the `info` command to see information about a generator.
|
|
377
|
+
|
|
378
|
+
Example:
|
|
379
|
+
|
|
380
|
+
```bash
|
|
381
|
+
projectstarter info django
|
|
382
|
+
```
|
|
383
|
+
|
|
384
|
+
Example output:
|
|
385
|
+
|
|
386
|
+
```text
|
|
387
|
+
Django
|
|
388
|
+
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
389
|
+
Description: Python web framework
|
|
390
|
+
Virtual environment: Yes
|
|
391
|
+
Automatic installation: Yes
|
|
392
|
+
|
|
393
|
+
Run:
|
|
394
|
+
python manage.py runserver
|
|
395
|
+
```
|
|
396
|
+
|
|
397
|
+
You can also check other project types:
|
|
398
|
+
|
|
399
|
+
```bash
|
|
400
|
+
projectstarter info python
|
|
401
|
+
projectstarter info flask
|
|
402
|
+
projectstarter info fastapi
|
|
403
|
+
```
|
|
404
|
+
|
|
405
|
+
---
|
|
406
|
+
|
|
407
|
+
# ๐ฉบ Doctor
|
|
408
|
+
|
|
409
|
+
ProjectStarter includes a built-in diagnostic command:
|
|
410
|
+
|
|
411
|
+
```bash
|
|
412
|
+
projectstarter doctor
|
|
413
|
+
```
|
|
414
|
+
|
|
415
|
+
It checks:
|
|
416
|
+
|
|
417
|
+
- Python
|
|
418
|
+
- Project registry
|
|
419
|
+
- Available generators
|
|
420
|
+
- Project information
|
|
421
|
+
|
|
422
|
+
Example:
|
|
423
|
+
|
|
424
|
+
```text
|
|
425
|
+
ProjectStarter Doctor
|
|
426
|
+
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
427
|
+
โ Python
|
|
428
|
+
Version: 3.x.x
|
|
429
|
+
โ Registry
|
|
430
|
+
โ Generators (4)
|
|
431
|
+
- python
|
|
432
|
+
- django
|
|
433
|
+
- flask
|
|
434
|
+
- fastapi
|
|
435
|
+
โ Project Info
|
|
436
|
+
All project information is available.
|
|
437
|
+
|
|
438
|
+
Everything looks good! โ
|
|
439
|
+
```
|
|
440
|
+
|
|
441
|
+
---
|
|
442
|
+
|
|
443
|
+
# ๐งช Testing ProjectStarter
|
|
444
|
+
|
|
445
|
+
ProjectStarter uses `pytest` for automated testing.
|
|
446
|
+
|
|
447
|
+
Install pytest for development:
|
|
448
|
+
|
|
449
|
+
```bash
|
|
450
|
+
python -m pip install pytest
|
|
451
|
+
```
|
|
452
|
+
|
|
453
|
+
Run all tests:
|
|
454
|
+
|
|
455
|
+
```bash
|
|
456
|
+
python -m pytest
|
|
457
|
+
```
|
|
458
|
+
|
|
459
|
+
The test suite covers:
|
|
460
|
+
|
|
461
|
+
- Project name validation
|
|
462
|
+
- Generator registry
|
|
463
|
+
- Project information
|
|
464
|
+
- Python project generation
|
|
465
|
+
- Django project generation
|
|
466
|
+
- Flask project generation
|
|
467
|
+
- FastAPI project generation
|
|
468
|
+
- CLI commands
|
|
469
|
+
- Interactive project creation
|
|
470
|
+
- Doctor command
|
|
471
|
+
|
|
472
|
+
---
|
|
473
|
+
|
|
474
|
+
# ๐๏ธ ProjectStarter Development Structure
|
|
475
|
+
|
|
476
|
+
The ProjectStarter source code is organized as follows:
|
|
477
|
+
|
|
478
|
+
```text
|
|
479
|
+
projectstarter/
|
|
480
|
+
โโโ projectstarter/
|
|
481
|
+
โ โโโ __init__.py
|
|
482
|
+
โ โโโ cli.py
|
|
483
|
+
โ โโโ doctor.py
|
|
484
|
+
โ โโโ generator.py
|
|
485
|
+
โ โโโ registry.py
|
|
486
|
+
โ โโโ utils.py
|
|
487
|
+
โ
|
|
488
|
+
โโโ templates/
|
|
489
|
+
โ โโโ python/
|
|
490
|
+
โ โโโ main.py
|
|
491
|
+
โ
|
|
492
|
+
โโโ tests/
|
|
493
|
+
โ โโโ test_cli.py
|
|
494
|
+
โ โโโ test_generator.py
|
|
495
|
+
โ โโโ test_registry.py
|
|
496
|
+
โ โโโ test_utils.py
|
|
497
|
+
โ
|
|
498
|
+
โโโ README.md
|
|
499
|
+
โโโ LICENSE
|
|
500
|
+
โโโ pyproject.toml
|
|
501
|
+
```
|
|
502
|
+
|
|
503
|
+
## Main Components
|
|
504
|
+
|
|
505
|
+
### `cli.py`
|
|
506
|
+
|
|
507
|
+
Handles the command-line interface and commands such as:
|
|
508
|
+
|
|
509
|
+
```text
|
|
510
|
+
create
|
|
511
|
+
list
|
|
512
|
+
info
|
|
513
|
+
doctor
|
|
514
|
+
--version
|
|
515
|
+
```
|
|
516
|
+
|
|
517
|
+
### `generator.py`
|
|
518
|
+
|
|
519
|
+
Contains the project generation logic for:
|
|
520
|
+
|
|
521
|
+
- Python
|
|
522
|
+
- Django
|
|
523
|
+
- Flask
|
|
524
|
+
- FastAPI
|
|
525
|
+
|
|
526
|
+
It also handles virtual environment creation and dependency installation for supported frameworks.
|
|
527
|
+
|
|
528
|
+
### `registry.py`
|
|
529
|
+
|
|
530
|
+
Contains the registered project generators and project information.
|
|
531
|
+
|
|
532
|
+
### `utils.py`
|
|
533
|
+
|
|
534
|
+
Contains utility functions such as project-name validation.
|
|
535
|
+
|
|
536
|
+
### `doctor.py`
|
|
537
|
+
|
|
538
|
+
Provides the `projectstarter doctor` diagnostic command.
|
|
539
|
+
|
|
540
|
+
### `tests/`
|
|
541
|
+
|
|
542
|
+
Contains the automated test suite.
|
|
543
|
+
|
|
544
|
+
---
|
|
545
|
+
|
|
546
|
+
# โ Adding a New Generator
|
|
547
|
+
|
|
548
|
+
ProjectStarter is designed so that new project types can be added to the generator system.
|
|
549
|
+
|
|
550
|
+
A new generator generally needs:
|
|
551
|
+
|
|
552
|
+
1. A generator function in `generator.py`.
|
|
553
|
+
2. Registration in `registry.py`.
|
|
554
|
+
3. Project information in `PROJECT_INFO`.
|
|
555
|
+
4. Tests in `tests/test_generator.py`.
|
|
556
|
+
5. CLI tests when necessary.
|
|
557
|
+
6. Documentation in this README.
|
|
558
|
+
|
|
559
|
+
This keeps the CLI organized and makes the tool easier to extend.
|
|
560
|
+
|
|
561
|
+
---
|
|
562
|
+
|
|
563
|
+
# ๐ Project Name Rules
|
|
564
|
+
|
|
565
|
+
ProjectStarter validates project names before creating projects.
|
|
566
|
+
|
|
567
|
+
Valid examples:
|
|
568
|
+
|
|
569
|
+
```text
|
|
570
|
+
myproject
|
|
571
|
+
my_project
|
|
572
|
+
project123
|
|
573
|
+
```
|
|
574
|
+
|
|
575
|
+
Invalid examples:
|
|
576
|
+
|
|
577
|
+
```text
|
|
578
|
+
my-project
|
|
579
|
+
my project
|
|
580
|
+
123project
|
|
581
|
+
```
|
|
582
|
+
|
|
583
|
+
Project names must use letters, numbers, and underscores and must not start with a number.
|
|
584
|
+
|
|
585
|
+
---
|
|
586
|
+
|
|
587
|
+
# ๐จโ๐ป Author
|
|
588
|
+
|
|
589
|
+
**Mohamed Ali**
|
|
590
|
+
|
|
591
|
+
ProjectStarter was created and is maintained by Mohamed Ali.
|
|
592
|
+
|
|
593
|
+
## ๐ Contact
|
|
594
|
+
|
|
595
|
+
For questions, suggestions, bug reports, or contributions, contact the project maintainer through GitHub.
|
|
596
|
+
|
|
597
|
+
- GitHub: https://github.com/hamada-cool
|
|
598
|
+
- Project Repository: https://github.com/hamada-cool/projectstarter
|
|
599
|
+
- Bug Reports / Issues: https://github.com/hamada-cool/projectstarter/issues
|
|
600
|
+
- Email: `mohamedali32947@gmail.com`
|
|
601
|
+
- Phone / WhatsApp: `+918341391506` & `+249919532947`
|
|
602
|
+
|
|
603
|
+
You can also open a GitHub Issue if you find a bug or have an idea for improving ProjectStarter.
|
|
604
|
+
|
|
605
|
+
---
|
|
606
|
+
|
|
607
|
+
# ๐ค Contributing
|
|
608
|
+
|
|
609
|
+
Contributions, bug reports, suggestions, and improvements are welcome.
|
|
610
|
+
|
|
611
|
+
Before submitting changes:
|
|
612
|
+
|
|
613
|
+
1. Create a branch for your change.
|
|
614
|
+
2. Make your changes.
|
|
615
|
+
3. Run the test suite.
|
|
616
|
+
4. Make sure all tests pass.
|
|
617
|
+
5. Open a pull request.
|
|
618
|
+
|
|
619
|
+
Run tests with:
|
|
620
|
+
|
|
621
|
+
```bash
|
|
622
|
+
python -m pytest
|
|
623
|
+
```
|
|
624
|
+
|
|
625
|
+
---
|
|
626
|
+
|
|
627
|
+
# ๐ License
|
|
628
|
+
|
|
629
|
+
ProjectStarter is licensed under the **MIT License**.
|
|
630
|
+
|
|
631
|
+
See the `LICENSE` file for the complete license text.
|
|
632
|
+
|
|
633
|
+
---
|
|
634
|
+
|
|
635
|
+
# ๐ฏ Project Status
|
|
636
|
+
|
|
637
|
+
ProjectStarter currently supports:
|
|
638
|
+
|
|
639
|
+
- Python
|
|
640
|
+
- Django
|
|
641
|
+
- Flask
|
|
642
|
+
- FastAPI
|
|
643
|
+
|
|
644
|
+
The project is under active development, and more generators and features may be added in future releases.
|
|
645
|
+
|
|
646
|
+
---
|
|
647
|
+
|
|
648
|
+
## โญ Support the Project
|
|
649
|
+
|
|
650
|
+
If you find ProjectStarter useful, you can support the project by:
|
|
651
|
+
|
|
652
|
+
- โญ Starring the GitHub repository
|
|
653
|
+
- ๐ Reporting bugs
|
|
654
|
+
- ๐ก Suggesting features
|
|
655
|
+
- ๐ค Contributing code
|
|
656
|
+
- ๐ข Sharing the project with other developers
|
|
657
|
+
|
|
658
|
+
---
|
|
659
|
+
|
|
660
|
+
**ProjectStarter โ Start your next Python project faster. ๐**
|
|
661
|
+
|
|
662
|
+
Created by **Mohamed Ali**.
|