projectstarter-cli 0.1.0__tar.gz → 0.1.2__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.
Files changed (20) hide show
  1. {projectstarter_cli-0.1.0 → projectstarter_cli-0.1.2}/LICENSE +2 -2
  2. {projectstarter_cli-0.1.0 → projectstarter_cli-0.1.2}/PKG-INFO +29 -28
  3. {projectstarter_cli-0.1.0 → projectstarter_cli-0.1.2}/README.md +27 -27
  4. {projectstarter_cli-0.1.0 → projectstarter_cli-0.1.2}/projectstarter/cli.py +3 -3
  5. {projectstarter_cli-0.1.0 → projectstarter_cli-0.1.2}/projectstarter/generator.py +65 -23
  6. {projectstarter_cli-0.1.0 → projectstarter_cli-0.1.2}/projectstarter_cli.egg-info/PKG-INFO +29 -28
  7. {projectstarter_cli-0.1.0 → projectstarter_cli-0.1.2}/pyproject.toml +2 -1
  8. {projectstarter_cli-0.1.0 → projectstarter_cli-0.1.2}/projectstarter/__init__.py +0 -0
  9. {projectstarter_cli-0.1.0 → projectstarter_cli-0.1.2}/projectstarter/doctor.py +0 -0
  10. {projectstarter_cli-0.1.0 → projectstarter_cli-0.1.2}/projectstarter/registry.py +0 -0
  11. {projectstarter_cli-0.1.0 → projectstarter_cli-0.1.2}/projectstarter/utils.py +0 -0
  12. {projectstarter_cli-0.1.0 → projectstarter_cli-0.1.2}/projectstarter_cli.egg-info/SOURCES.txt +0 -0
  13. {projectstarter_cli-0.1.0 → projectstarter_cli-0.1.2}/projectstarter_cli.egg-info/dependency_links.txt +0 -0
  14. {projectstarter_cli-0.1.0 → projectstarter_cli-0.1.2}/projectstarter_cli.egg-info/entry_points.txt +0 -0
  15. {projectstarter_cli-0.1.0 → projectstarter_cli-0.1.2}/projectstarter_cli.egg-info/top_level.txt +0 -0
  16. {projectstarter_cli-0.1.0 → projectstarter_cli-0.1.2}/setup.cfg +0 -0
  17. {projectstarter_cli-0.1.0 → projectstarter_cli-0.1.2}/tests/test_cli.py +0 -0
  18. {projectstarter_cli-0.1.0 → projectstarter_cli-0.1.2}/tests/test_generator.py +0 -0
  19. {projectstarter_cli-0.1.0 → projectstarter_cli-0.1.2}/tests/test_registry.py +0 -0
  20. {projectstarter_cli-0.1.0 → projectstarter_cli-0.1.2}/tests/test_utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2026 Mohamed Ali
3
+ Copyright (c) 2026 Mohamed Ali Ismail Jami
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
@@ -18,4 +18,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
18
  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
19
  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
20
  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
21
+ SOFTWARE.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: projectstarter-cli
3
- Version: 0.1.0
3
+ Version: 0.1.2
4
4
  Summary: A Python CLI tool for quickly generating Python, Django, Flask, and FastAPI projects
5
5
  Author-email: Mohamed Ali Ismail Jami <mohamedali32947@gmail.com>
6
6
  License-Expression: MIT
@@ -13,15 +13,16 @@ Classifier: Environment :: Console
13
13
  Classifier: Intended Audience :: Developers
14
14
  Classifier: Programming Language :: Python :: 3
15
15
  Classifier: Programming Language :: Python :: 3 :: Only
16
+ Classifier: Programming Language :: Python :: 3.13
16
17
  Classifier: Topic :: Software Development :: Build Tools
17
18
  Requires-Python: >=3.9
18
19
  Description-Content-Type: text/markdown
19
20
  License-File: LICENSE
20
21
  Dynamic: license-file
21
22
 
22
- # ProjectStarter 🚀
23
+ # projectstarter-cli 🚀
23
24
 
24
- ProjectStarter is a Python CLI tool created by **Mohamed Ali** for quickly creating ready-to-use project structures.
25
+ projectstarter-cli is a Python CLI tool created by **Mohamed Ali Ismail Jami** for quickly creating ready-to-use project structures.
25
26
 
26
27
  It helps developers avoid manually creating folders, files, virtual environments, installing framework dependencies, and preparing basic project documentation.
27
28
 
@@ -39,7 +40,7 @@ It helps developers avoid manually creating folders, files, virtual environments
39
40
  - 📝 Automatically generate a README for generated projects
40
41
  - 📋 List supported project types
41
42
  - ℹ️ Show information about each project type
42
- - 🩺 Check the ProjectStarter installation with `doctor`
43
+ - 🩺 Check the projectstarter-cli installation with `doctor`
43
44
  - 🧪 Includes automated tests
44
45
 
45
46
  ---
@@ -59,10 +60,10 @@ It helps developers avoid manually creating folders, files, virtual environments
59
60
 
60
61
  # 📦 Installation
61
62
 
62
- Install ProjectStarter from PyPI:
63
+ Install projectstarter-cli from PyPI:
63
64
 
64
65
  ```bash
65
- pip install projectstarter
66
+ pip install projectstarter-cli
66
67
  ```
67
68
 
68
69
  Check that it is installed:
@@ -89,7 +90,7 @@ Run:
89
90
  projectstarter create
90
91
  ```
91
92
 
92
- ProjectStarter will show the available project types:
93
+ projectstarter-cli will show the available project types:
93
94
 
94
95
  ```text
95
96
  Choose a project type:
@@ -109,7 +110,7 @@ Enter your choice: 2
109
110
  Enter project name: myproject
110
111
  ```
111
112
 
112
- ProjectStarter will create the project automatically.
113
+ projectstarter-cli will create the project automatically.
113
114
 
114
115
  ---
115
116
 
@@ -156,7 +157,7 @@ Create a Django project:
156
157
  projectstarter create django myproject
157
158
  ```
158
159
 
159
- ProjectStarter automatically:
160
+ projectstarter-cli automatically:
160
161
 
161
162
  1. Creates the project directory.
162
163
  2. Creates `.venv`.
@@ -222,7 +223,7 @@ Create a Flask project:
222
223
  projectstarter create flask myproject
223
224
  ```
224
225
 
225
- ProjectStarter automatically:
226
+ projectstarter-cli automatically:
226
227
 
227
228
  1. Creates the project directory.
228
229
  2. Creates `.venv`.
@@ -288,7 +289,7 @@ Create a FastAPI project:
288
289
  projectstarter create fastapi myproject
289
290
  ```
290
291
 
291
- ProjectStarter automatically:
292
+ projectstarter-cli automatically:
292
293
 
293
294
  1. Creates the project directory.
294
295
  2. Creates `.venv`.
@@ -406,7 +407,7 @@ projectstarter info fastapi
406
407
 
407
408
  # 🩺 Doctor
408
409
 
409
- ProjectStarter includes a built-in diagnostic command:
410
+ projectstarter-cli includes a built-in diagnostic command:
410
411
 
411
412
  ```bash
412
413
  projectstarter doctor
@@ -422,7 +423,7 @@ It checks:
422
423
  Example:
423
424
 
424
425
  ```text
425
- ProjectStarter Doctor
426
+ projectstarter-cli Doctor
426
427
  ──────────────────────────────
427
428
  ✓ Python
428
429
  Version: 3.x.x
@@ -440,9 +441,9 @@ Everything looks good! ✓
440
441
 
441
442
  ---
442
443
 
443
- # 🧪 Testing ProjectStarter
444
+ # 🧪 Testing projectstarter-cli
444
445
 
445
- ProjectStarter uses `pytest` for automated testing.
446
+ projectstarter-cli uses `pytest` for automated testing.
446
447
 
447
448
  Install pytest for development:
448
449
 
@@ -471,9 +472,9 @@ The test suite covers:
471
472
 
472
473
  ---
473
474
 
474
- # 🏗️ ProjectStarter Development Structure
475
+ # 🏗️ projectstarter-cli Development Structure
475
476
 
476
- The ProjectStarter source code is organized as follows:
477
+ The projectstarter-cli source code is organized as follows:
477
478
 
478
479
  ```text
479
480
  projectstarter/
@@ -545,7 +546,7 @@ Contains the automated test suite.
545
546
 
546
547
  # ➕ Adding a New Generator
547
548
 
548
- ProjectStarter is designed so that new project types can be added to the generator system.
549
+ projectstarter-cli is designed so that new project types can be added to the generator system.
549
550
 
550
551
  A new generator generally needs:
551
552
 
@@ -562,7 +563,7 @@ This keeps the CLI organized and makes the tool easier to extend.
562
563
 
563
564
  # 🔐 Project Name Rules
564
565
 
565
- ProjectStarter validates project names before creating projects.
566
+ projectstarter-cli validates project names before creating projects.
566
567
 
567
568
  Valid examples:
568
569
 
@@ -586,9 +587,9 @@ Project names must use letters, numbers, and underscores and must not start with
586
587
 
587
588
  # 👨‍💻 Author
588
589
 
589
- **Mohamed Ali**
590
+ **Mohamed Ali Ismail Jami**
590
591
 
591
- ProjectStarter was created and is maintained by Mohamed Ali.
592
+ projectstarter-cli was created and is maintained by Mohamed Ali Ismail Jami.
592
593
 
593
594
  ## 📞 Contact
594
595
 
@@ -598,9 +599,9 @@ For questions, suggestions, bug reports, or contributions, contact the project m
598
599
  - Project Repository: https://github.com/hamada-cool/projectstarter
599
600
  - Bug Reports / Issues: https://github.com/hamada-cool/projectstarter/issues
600
601
  - Email: `mohamedali32947@gmail.com`
601
- - Phone / WhatsApp: `+918341391506` & `+249919532947`
602
+ - Phone / WhatsApp: `+918341391506` and `+249919532947`
602
603
 
603
- You can also open a GitHub Issue if you find a bug or have an idea for improving ProjectStarter.
604
+ You can also open a GitHub Issue if you find a bug or have an idea for improving projectstarter-cli.
604
605
 
605
606
  ---
606
607
 
@@ -626,7 +627,7 @@ python -m pytest
626
627
 
627
628
  # 📄 License
628
629
 
629
- ProjectStarter is licensed under the **MIT License**.
630
+ projectstarter-cli is licensed under the **MIT License**.
630
631
 
631
632
  See the `LICENSE` file for the complete license text.
632
633
 
@@ -634,7 +635,7 @@ See the `LICENSE` file for the complete license text.
634
635
 
635
636
  # 🎯 Project Status
636
637
 
637
- ProjectStarter currently supports:
638
+ projectstarter-cli currently supports:
638
639
 
639
640
  - Python
640
641
  - Django
@@ -647,7 +648,7 @@ The project is under active development, and more generators and features may be
647
648
 
648
649
  ## ⭐ Support the Project
649
650
 
650
- If you find ProjectStarter useful, you can support the project by:
651
+ If you find projectstarter-cli useful, you can support the project by:
651
652
 
652
653
  - ⭐ Starring the GitHub repository
653
654
  - 🐛 Reporting bugs
@@ -657,6 +658,6 @@ If you find ProjectStarter useful, you can support the project by:
657
658
 
658
659
  ---
659
660
 
660
- **ProjectStarter — Start your next Python project faster. 🚀**
661
+ **projectstarter-cli — Start your next Python project faster. 🚀**
661
662
 
662
- Created by **Mohamed Ali**.
663
+ Created by **Mohamed Ali Ismail Jami**.
@@ -1,6 +1,6 @@
1
- # ProjectStarter 🚀
1
+ # projectstarter-cli 🚀
2
2
 
3
- ProjectStarter is a Python CLI tool created by **Mohamed Ali** for quickly creating ready-to-use project structures.
3
+ projectstarter-cli is a Python CLI tool created by **Mohamed Ali Ismail Jami** for quickly creating ready-to-use project structures.
4
4
 
5
5
  It helps developers avoid manually creating folders, files, virtual environments, installing framework dependencies, and preparing basic project documentation.
6
6
 
@@ -18,7 +18,7 @@ It helps developers avoid manually creating folders, files, virtual environments
18
18
  - 📝 Automatically generate a README for generated projects
19
19
  - 📋 List supported project types
20
20
  - ℹ️ Show information about each project type
21
- - 🩺 Check the ProjectStarter installation with `doctor`
21
+ - 🩺 Check the projectstarter-cli installation with `doctor`
22
22
  - 🧪 Includes automated tests
23
23
 
24
24
  ---
@@ -38,10 +38,10 @@ It helps developers avoid manually creating folders, files, virtual environments
38
38
 
39
39
  # 📦 Installation
40
40
 
41
- Install ProjectStarter from PyPI:
41
+ Install projectstarter-cli from PyPI:
42
42
 
43
43
  ```bash
44
- pip install projectstarter
44
+ pip install projectstarter-cli
45
45
  ```
46
46
 
47
47
  Check that it is installed:
@@ -68,7 +68,7 @@ Run:
68
68
  projectstarter create
69
69
  ```
70
70
 
71
- ProjectStarter will show the available project types:
71
+ projectstarter-cli will show the available project types:
72
72
 
73
73
  ```text
74
74
  Choose a project type:
@@ -88,7 +88,7 @@ Enter your choice: 2
88
88
  Enter project name: myproject
89
89
  ```
90
90
 
91
- ProjectStarter will create the project automatically.
91
+ projectstarter-cli will create the project automatically.
92
92
 
93
93
  ---
94
94
 
@@ -135,7 +135,7 @@ Create a Django project:
135
135
  projectstarter create django myproject
136
136
  ```
137
137
 
138
- ProjectStarter automatically:
138
+ projectstarter-cli automatically:
139
139
 
140
140
  1. Creates the project directory.
141
141
  2. Creates `.venv`.
@@ -201,7 +201,7 @@ Create a Flask project:
201
201
  projectstarter create flask myproject
202
202
  ```
203
203
 
204
- ProjectStarter automatically:
204
+ projectstarter-cli automatically:
205
205
 
206
206
  1. Creates the project directory.
207
207
  2. Creates `.venv`.
@@ -267,7 +267,7 @@ Create a FastAPI project:
267
267
  projectstarter create fastapi myproject
268
268
  ```
269
269
 
270
- ProjectStarter automatically:
270
+ projectstarter-cli automatically:
271
271
 
272
272
  1. Creates the project directory.
273
273
  2. Creates `.venv`.
@@ -385,7 +385,7 @@ projectstarter info fastapi
385
385
 
386
386
  # 🩺 Doctor
387
387
 
388
- ProjectStarter includes a built-in diagnostic command:
388
+ projectstarter-cli includes a built-in diagnostic command:
389
389
 
390
390
  ```bash
391
391
  projectstarter doctor
@@ -401,7 +401,7 @@ It checks:
401
401
  Example:
402
402
 
403
403
  ```text
404
- ProjectStarter Doctor
404
+ projectstarter-cli Doctor
405
405
  ──────────────────────────────
406
406
  ✓ Python
407
407
  Version: 3.x.x
@@ -419,9 +419,9 @@ Everything looks good! ✓
419
419
 
420
420
  ---
421
421
 
422
- # 🧪 Testing ProjectStarter
422
+ # 🧪 Testing projectstarter-cli
423
423
 
424
- ProjectStarter uses `pytest` for automated testing.
424
+ projectstarter-cli uses `pytest` for automated testing.
425
425
 
426
426
  Install pytest for development:
427
427
 
@@ -450,9 +450,9 @@ The test suite covers:
450
450
 
451
451
  ---
452
452
 
453
- # 🏗️ ProjectStarter Development Structure
453
+ # 🏗️ projectstarter-cli Development Structure
454
454
 
455
- The ProjectStarter source code is organized as follows:
455
+ The projectstarter-cli source code is organized as follows:
456
456
 
457
457
  ```text
458
458
  projectstarter/
@@ -524,7 +524,7 @@ Contains the automated test suite.
524
524
 
525
525
  # ➕ Adding a New Generator
526
526
 
527
- ProjectStarter is designed so that new project types can be added to the generator system.
527
+ projectstarter-cli is designed so that new project types can be added to the generator system.
528
528
 
529
529
  A new generator generally needs:
530
530
 
@@ -541,7 +541,7 @@ This keeps the CLI organized and makes the tool easier to extend.
541
541
 
542
542
  # 🔐 Project Name Rules
543
543
 
544
- ProjectStarter validates project names before creating projects.
544
+ projectstarter-cli validates project names before creating projects.
545
545
 
546
546
  Valid examples:
547
547
 
@@ -565,9 +565,9 @@ Project names must use letters, numbers, and underscores and must not start with
565
565
 
566
566
  # 👨‍💻 Author
567
567
 
568
- **Mohamed Ali**
568
+ **Mohamed Ali Ismail Jami**
569
569
 
570
- ProjectStarter was created and is maintained by Mohamed Ali.
570
+ projectstarter-cli was created and is maintained by Mohamed Ali Ismail Jami.
571
571
 
572
572
  ## 📞 Contact
573
573
 
@@ -577,9 +577,9 @@ For questions, suggestions, bug reports, or contributions, contact the project m
577
577
  - Project Repository: https://github.com/hamada-cool/projectstarter
578
578
  - Bug Reports / Issues: https://github.com/hamada-cool/projectstarter/issues
579
579
  - Email: `mohamedali32947@gmail.com`
580
- - Phone / WhatsApp: `+918341391506` & `+249919532947`
580
+ - Phone / WhatsApp: `+918341391506` and `+249919532947`
581
581
 
582
- You can also open a GitHub Issue if you find a bug or have an idea for improving ProjectStarter.
582
+ You can also open a GitHub Issue if you find a bug or have an idea for improving projectstarter-cli.
583
583
 
584
584
  ---
585
585
 
@@ -605,7 +605,7 @@ python -m pytest
605
605
 
606
606
  # 📄 License
607
607
 
608
- ProjectStarter is licensed under the **MIT License**.
608
+ projectstarter-cli is licensed under the **MIT License**.
609
609
 
610
610
  See the `LICENSE` file for the complete license text.
611
611
 
@@ -613,7 +613,7 @@ See the `LICENSE` file for the complete license text.
613
613
 
614
614
  # 🎯 Project Status
615
615
 
616
- ProjectStarter currently supports:
616
+ projectstarter-cli currently supports:
617
617
 
618
618
  - Python
619
619
  - Django
@@ -626,7 +626,7 @@ The project is under active development, and more generators and features may be
626
626
 
627
627
  ## ⭐ Support the Project
628
628
 
629
- If you find ProjectStarter useful, you can support the project by:
629
+ If you find projectstarter-cli useful, you can support the project by:
630
630
 
631
631
  - ⭐ Starring the GitHub repository
632
632
  - 🐛 Reporting bugs
@@ -636,6 +636,6 @@ If you find ProjectStarter useful, you can support the project by:
636
636
 
637
637
  ---
638
638
 
639
- **ProjectStarter — Start your next Python project faster. 🚀**
639
+ **projectstarter-cli — Start your next Python project faster. 🚀**
640
640
 
641
- Created by **Mohamed Ali**.
641
+ Created by **Mohamed Ali Ismail Jami**.
@@ -6,13 +6,13 @@ from .doctor import run_doctor
6
6
 
7
7
  def main():
8
8
  parser = argparse.ArgumentParser(
9
- description="ProjectStarter - Create projects quickly"
9
+ description="ProjectStarter-cli - Create projects quickly"
10
10
  )
11
11
 
12
12
  parser.add_argument(
13
13
  "--version",
14
14
  action="version",
15
- version="ProjectStarter 0.1.0"
15
+ version="ProjectStarter-cli 0.1.1"
16
16
  )
17
17
 
18
18
  subparsers = parser.add_subparsers(
@@ -53,7 +53,7 @@ def main():
53
53
  # doctor command
54
54
  subparsers.add_parser(
55
55
  "doctor",
56
- help="Check ProjectStarter installation"
56
+ help="Check ProjectStarter-cli installation"
57
57
  )
58
58
 
59
59
  info_parser.add_argument(
@@ -3,9 +3,14 @@ import subprocess
3
3
  import sys
4
4
 
5
5
 
6
+ # ==============================
7
+ # Utility Functions
8
+ # ==============================
9
+
6
10
  def run_command(command, cwd=None):
7
- """Run a command."""
8
- subprocess.run(
11
+ """Run a shell command safely."""
12
+
13
+ return subprocess.run(
9
14
  command,
10
15
  cwd=cwd,
11
16
  check=True
@@ -13,8 +18,9 @@ def run_command(command, cwd=None):
13
18
 
14
19
 
15
20
  def create_virtual_environment(project_path):
16
- """Create a virtual environment."""
21
+ """Create a cross-platform virtual environment."""
17
22
 
23
+ project_path = Path(project_path).resolve()
18
24
  venv_path = project_path / ".venv"
19
25
 
20
26
  print("Creating virtual environment...")
@@ -25,13 +31,23 @@ def create_virtual_environment(project_path):
25
31
  )
26
32
 
27
33
  if sys.platform == "win32":
28
- return venv_path / "Scripts" / "python.exe"
34
+ python_exe = venv_path / "Scripts" / "python.exe"
35
+ else:
36
+ python_exe = venv_path / "bin" / "python"
37
+
38
+ # Return an absolute path to avoid cwd-related issues.
39
+ python_exe = python_exe.resolve()
29
40
 
30
- return venv_path / "bin" / "python"
41
+ if not python_exe.exists():
42
+ raise FileNotFoundError(
43
+ f"Virtual environment Python not found: {python_exe}"
44
+ )
45
+
46
+ return python_exe
31
47
 
32
48
 
33
49
  def upgrade_pip(python_exe):
34
- """Upgrade pip."""
50
+ """Upgrade pip inside the virtual environment."""
35
51
 
36
52
  print("Upgrading pip...")
37
53
 
@@ -48,7 +64,7 @@ def upgrade_pip(python_exe):
48
64
 
49
65
 
50
66
  def install_package(python_exe, package):
51
- """Install a package."""
67
+ """Install a package inside the virtual environment."""
52
68
 
53
69
  print(f"Installing {package}...")
54
70
 
@@ -64,7 +80,9 @@ def install_package(python_exe, package):
64
80
 
65
81
 
66
82
  def save_requirements(python_exe, project_path):
67
- """Create requirements.txt."""
83
+ """Generate requirements.txt using pip freeze."""
84
+
85
+ project_path = Path(project_path).resolve()
68
86
 
69
87
  result = subprocess.run(
70
88
  [
@@ -85,7 +103,7 @@ def save_requirements(python_exe, project_path):
85
103
 
86
104
 
87
105
  def create_gitignore(project_path, django=False):
88
- """Create .gitignore."""
106
+ """Create a .gitignore file."""
89
107
 
90
108
  content = """__pycache__/
91
109
  *.py[cod]
@@ -108,6 +126,26 @@ venv/
108
126
  )
109
127
 
110
128
 
129
+ def activation_instructions():
130
+ """Return cross-platform virtual environment instructions."""
131
+
132
+ return """## Activate virtual environment
133
+
134
+ Windows:
135
+
136
+ .venv\\Scripts\\activate
137
+
138
+ Linux / macOS:
139
+
140
+ source .venv/bin/activate
141
+
142
+ """
143
+
144
+
145
+ # ==============================
146
+ # Python Project Generator
147
+ # ==============================
148
+
111
149
  def create_python_project(project_name):
112
150
  """Create a basic Python project."""
113
151
 
@@ -160,11 +198,8 @@ if __name__ == "__main__":
160
198
  f"# {project_name}\n\n"
161
199
  "A Python project created with ProjectStarter.\n\n"
162
200
  "## Run\n\n"
163
- "Activate the virtual environment on Windows:\n\n"
164
- ".venv\\Scripts\\activate\n\n"
165
201
  "Run the application:\n\n"
166
- "python src/"
167
- f"{project_name}/main.py\n"
202
+ f"python src/{project_name}/main.py\n"
168
203
  )
169
204
 
170
205
  (project_path / "README.md").write_text(
@@ -177,6 +212,10 @@ if __name__ == "__main__":
177
212
  )
178
213
 
179
214
 
215
+ # ==============================
216
+ # Django Project Generator
217
+ # ==============================
218
+
180
219
  def create_django_project(project_name):
181
220
  """Create a Django project."""
182
221
 
@@ -213,7 +252,7 @@ def create_django_project(project_name):
213
252
  "config",
214
253
  "."
215
254
  ],
216
- cwd=project_path
255
+ cwd=project_path.resolve()
217
256
  )
218
257
 
219
258
  save_requirements(
@@ -229,9 +268,7 @@ def create_django_project(project_name):
229
268
  readme = (
230
269
  f"# {project_name}\n\n"
231
270
  "A Django project created with ProjectStarter.\n\n"
232
- "## Activate virtual environment\n\n"
233
- "Windows:\n\n"
234
- ".venv\\Scripts\\activate\n\n"
271
+ f"{activation_instructions()}"
235
272
  "## Run the project\n\n"
236
273
  "python manage.py runserver\n\n"
237
274
  "## Project URL\n\n"
@@ -249,6 +286,10 @@ def create_django_project(project_name):
249
286
  )
250
287
 
251
288
 
289
+ # ==============================
290
+ # Flask Project Generator
291
+ # ==============================
292
+
252
293
  def create_flask_project(project_name):
253
294
  """Create a Flask project."""
254
295
 
@@ -322,9 +363,7 @@ if __name__ == "__main__":
322
363
  readme = (
323
364
  f"# {project_name}\n\n"
324
365
  "A Flask project created with ProjectStarter.\n\n"
325
- "## Activate virtual environment\n\n"
326
- "Windows:\n\n"
327
- ".venv\\Scripts\\activate\n\n"
366
+ f"{activation_instructions()}"
328
367
  "## Run the project\n\n"
329
368
  "python run.py\n\n"
330
369
  "## Project URL\n\n"
@@ -341,6 +380,11 @@ if __name__ == "__main__":
341
380
  "created successfully!"
342
381
  )
343
382
 
383
+
384
+ # ==============================
385
+ # FastAPI Project Generator
386
+ # ==============================
387
+
344
388
  def create_fastapi_project(project_name):
345
389
  """Create a FastAPI project."""
346
390
 
@@ -405,9 +449,7 @@ def home():
405
449
  readme = (
406
450
  f"# {project_name}\n\n"
407
451
  "A FastAPI project created with ProjectStarter.\n\n"
408
- "## Activate virtual environment\n\n"
409
- "Windows:\n\n"
410
- ".venv\\Scripts\\activate\n\n"
452
+ f"{activation_instructions()}"
411
453
  "## Run\n\n"
412
454
  "uvicorn app.main:app --reload\n\n"
413
455
  "## API\n\n"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: projectstarter-cli
3
- Version: 0.1.0
3
+ Version: 0.1.2
4
4
  Summary: A Python CLI tool for quickly generating Python, Django, Flask, and FastAPI projects
5
5
  Author-email: Mohamed Ali Ismail Jami <mohamedali32947@gmail.com>
6
6
  License-Expression: MIT
@@ -13,15 +13,16 @@ Classifier: Environment :: Console
13
13
  Classifier: Intended Audience :: Developers
14
14
  Classifier: Programming Language :: Python :: 3
15
15
  Classifier: Programming Language :: Python :: 3 :: Only
16
+ Classifier: Programming Language :: Python :: 3.13
16
17
  Classifier: Topic :: Software Development :: Build Tools
17
18
  Requires-Python: >=3.9
18
19
  Description-Content-Type: text/markdown
19
20
  License-File: LICENSE
20
21
  Dynamic: license-file
21
22
 
22
- # ProjectStarter 🚀
23
+ # projectstarter-cli 🚀
23
24
 
24
- ProjectStarter is a Python CLI tool created by **Mohamed Ali** for quickly creating ready-to-use project structures.
25
+ projectstarter-cli is a Python CLI tool created by **Mohamed Ali Ismail Jami** for quickly creating ready-to-use project structures.
25
26
 
26
27
  It helps developers avoid manually creating folders, files, virtual environments, installing framework dependencies, and preparing basic project documentation.
27
28
 
@@ -39,7 +40,7 @@ It helps developers avoid manually creating folders, files, virtual environments
39
40
  - 📝 Automatically generate a README for generated projects
40
41
  - 📋 List supported project types
41
42
  - ℹ️ Show information about each project type
42
- - 🩺 Check the ProjectStarter installation with `doctor`
43
+ - 🩺 Check the projectstarter-cli installation with `doctor`
43
44
  - 🧪 Includes automated tests
44
45
 
45
46
  ---
@@ -59,10 +60,10 @@ It helps developers avoid manually creating folders, files, virtual environments
59
60
 
60
61
  # 📦 Installation
61
62
 
62
- Install ProjectStarter from PyPI:
63
+ Install projectstarter-cli from PyPI:
63
64
 
64
65
  ```bash
65
- pip install projectstarter
66
+ pip install projectstarter-cli
66
67
  ```
67
68
 
68
69
  Check that it is installed:
@@ -89,7 +90,7 @@ Run:
89
90
  projectstarter create
90
91
  ```
91
92
 
92
- ProjectStarter will show the available project types:
93
+ projectstarter-cli will show the available project types:
93
94
 
94
95
  ```text
95
96
  Choose a project type:
@@ -109,7 +110,7 @@ Enter your choice: 2
109
110
  Enter project name: myproject
110
111
  ```
111
112
 
112
- ProjectStarter will create the project automatically.
113
+ projectstarter-cli will create the project automatically.
113
114
 
114
115
  ---
115
116
 
@@ -156,7 +157,7 @@ Create a Django project:
156
157
  projectstarter create django myproject
157
158
  ```
158
159
 
159
- ProjectStarter automatically:
160
+ projectstarter-cli automatically:
160
161
 
161
162
  1. Creates the project directory.
162
163
  2. Creates `.venv`.
@@ -222,7 +223,7 @@ Create a Flask project:
222
223
  projectstarter create flask myproject
223
224
  ```
224
225
 
225
- ProjectStarter automatically:
226
+ projectstarter-cli automatically:
226
227
 
227
228
  1. Creates the project directory.
228
229
  2. Creates `.venv`.
@@ -288,7 +289,7 @@ Create a FastAPI project:
288
289
  projectstarter create fastapi myproject
289
290
  ```
290
291
 
291
- ProjectStarter automatically:
292
+ projectstarter-cli automatically:
292
293
 
293
294
  1. Creates the project directory.
294
295
  2. Creates `.venv`.
@@ -406,7 +407,7 @@ projectstarter info fastapi
406
407
 
407
408
  # 🩺 Doctor
408
409
 
409
- ProjectStarter includes a built-in diagnostic command:
410
+ projectstarter-cli includes a built-in diagnostic command:
410
411
 
411
412
  ```bash
412
413
  projectstarter doctor
@@ -422,7 +423,7 @@ It checks:
422
423
  Example:
423
424
 
424
425
  ```text
425
- ProjectStarter Doctor
426
+ projectstarter-cli Doctor
426
427
  ──────────────────────────────
427
428
  ✓ Python
428
429
  Version: 3.x.x
@@ -440,9 +441,9 @@ Everything looks good! ✓
440
441
 
441
442
  ---
442
443
 
443
- # 🧪 Testing ProjectStarter
444
+ # 🧪 Testing projectstarter-cli
444
445
 
445
- ProjectStarter uses `pytest` for automated testing.
446
+ projectstarter-cli uses `pytest` for automated testing.
446
447
 
447
448
  Install pytest for development:
448
449
 
@@ -471,9 +472,9 @@ The test suite covers:
471
472
 
472
473
  ---
473
474
 
474
- # 🏗️ ProjectStarter Development Structure
475
+ # 🏗️ projectstarter-cli Development Structure
475
476
 
476
- The ProjectStarter source code is organized as follows:
477
+ The projectstarter-cli source code is organized as follows:
477
478
 
478
479
  ```text
479
480
  projectstarter/
@@ -545,7 +546,7 @@ Contains the automated test suite.
545
546
 
546
547
  # ➕ Adding a New Generator
547
548
 
548
- ProjectStarter is designed so that new project types can be added to the generator system.
549
+ projectstarter-cli is designed so that new project types can be added to the generator system.
549
550
 
550
551
  A new generator generally needs:
551
552
 
@@ -562,7 +563,7 @@ This keeps the CLI organized and makes the tool easier to extend.
562
563
 
563
564
  # 🔐 Project Name Rules
564
565
 
565
- ProjectStarter validates project names before creating projects.
566
+ projectstarter-cli validates project names before creating projects.
566
567
 
567
568
  Valid examples:
568
569
 
@@ -586,9 +587,9 @@ Project names must use letters, numbers, and underscores and must not start with
586
587
 
587
588
  # 👨‍💻 Author
588
589
 
589
- **Mohamed Ali**
590
+ **Mohamed Ali Ismail Jami**
590
591
 
591
- ProjectStarter was created and is maintained by Mohamed Ali.
592
+ projectstarter-cli was created and is maintained by Mohamed Ali Ismail Jami.
592
593
 
593
594
  ## 📞 Contact
594
595
 
@@ -598,9 +599,9 @@ For questions, suggestions, bug reports, or contributions, contact the project m
598
599
  - Project Repository: https://github.com/hamada-cool/projectstarter
599
600
  - Bug Reports / Issues: https://github.com/hamada-cool/projectstarter/issues
600
601
  - Email: `mohamedali32947@gmail.com`
601
- - Phone / WhatsApp: `+918341391506` & `+249919532947`
602
+ - Phone / WhatsApp: `+918341391506` and `+249919532947`
602
603
 
603
- You can also open a GitHub Issue if you find a bug or have an idea for improving ProjectStarter.
604
+ You can also open a GitHub Issue if you find a bug or have an idea for improving projectstarter-cli.
604
605
 
605
606
  ---
606
607
 
@@ -626,7 +627,7 @@ python -m pytest
626
627
 
627
628
  # 📄 License
628
629
 
629
- ProjectStarter is licensed under the **MIT License**.
630
+ projectstarter-cli is licensed under the **MIT License**.
630
631
 
631
632
  See the `LICENSE` file for the complete license text.
632
633
 
@@ -634,7 +635,7 @@ See the `LICENSE` file for the complete license text.
634
635
 
635
636
  # 🎯 Project Status
636
637
 
637
- ProjectStarter currently supports:
638
+ projectstarter-cli currently supports:
638
639
 
639
640
  - Python
640
641
  - Django
@@ -647,7 +648,7 @@ The project is under active development, and more generators and features may be
647
648
 
648
649
  ## ⭐ Support the Project
649
650
 
650
- If you find ProjectStarter useful, you can support the project by:
651
+ If you find projectstarter-cli useful, you can support the project by:
651
652
 
652
653
  - ⭐ Starring the GitHub repository
653
654
  - 🐛 Reporting bugs
@@ -657,6 +658,6 @@ If you find ProjectStarter useful, you can support the project by:
657
658
 
658
659
  ---
659
660
 
660
- **ProjectStarter — Start your next Python project faster. 🚀**
661
+ **projectstarter-cli — Start your next Python project faster. 🚀**
661
662
 
662
- Created by **Mohamed Ali**.
663
+ Created by **Mohamed Ali Ismail Jami**.
@@ -5,7 +5,7 @@ build-backend = "setuptools.build_meta"
5
5
 
6
6
  [project]
7
7
  name = "projectstarter-cli"
8
- version = "0.1.0"
8
+ version = "0.1.2"
9
9
  description = "A Python CLI tool for quickly generating Python, Django, Flask, and FastAPI projects"
10
10
  readme = "README.md"
11
11
  requires-python = ">=3.9"
@@ -33,6 +33,7 @@ classifiers = [
33
33
  "Intended Audience :: Developers",
34
34
  "Programming Language :: Python :: 3",
35
35
  "Programming Language :: Python :: 3 :: Only",
36
+ "Programming Language :: Python :: 3.13",
36
37
  "Topic :: Software Development :: Build Tools",
37
38
  ]
38
39