skeleton-framework 0.1.0__tar.gz → 0.1.1__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 (98) hide show
  1. {skeleton_framework-0.1.0/skeleton_framework.egg-info → skeleton_framework-0.1.1}/PKG-INFO +101 -47
  2. skeleton_framework-0.1.0/PKG-INFO → skeleton_framework-0.1.1/README.md +96 -60
  3. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/pyproject.toml +12 -2
  4. skeleton_framework-0.1.0/README.md → skeleton_framework-0.1.1/skeleton_framework.egg-info/PKG-INFO +114 -46
  5. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/LICENSE +0 -0
  6. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/setup.cfg +0 -0
  7. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton/__init__.py +0 -0
  8. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton/cli.py +0 -0
  9. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton/client.py +0 -0
  10. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton/infrastructure/__init__.py +0 -0
  11. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton/infrastructure/bootstrap/__init__.py +0 -0
  12. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton/infrastructure/bootstrap/src/__init__.py +0 -0
  13. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton/infrastructure/bootstrap/src/commands/__init__.py +0 -0
  14. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton/infrastructure/bootstrap/src/commands/client/__init__.py +0 -0
  15. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton/infrastructure/bootstrap/src/commands/client/init.py +0 -0
  16. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton/infrastructure/bootstrap/src/commands/client/install.py +0 -0
  17. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton/infrastructure/bootstrap/src/commands/dev/__init__.py +0 -0
  18. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton/infrastructure/bootstrap/src/commands/dev/build.py +0 -0
  19. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton/infrastructure/bootstrap/src/commands/dev/init.py +0 -0
  20. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton/infrastructure/bootstrap/src/commands/dev/install.py +0 -0
  21. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton/infrastructure/bootstrap/src/commands/dev/pack.py +0 -0
  22. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton/infrastructure/bootstrap/src/config.py +0 -0
  23. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton/infrastructure/bootstrap/src/copy.py +0 -0
  24. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton/infrastructure/bootstrap/src/load.py +0 -0
  25. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton/infrastructure/bootstrap/src/templates/app/backend/requirements.txt +0 -0
  26. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton/infrastructure/bootstrap/src/templates/app/backend/routes.json +0 -0
  27. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton/infrastructure/bootstrap/src/templates/app/backend/src/__init__.py +0 -0
  28. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton/infrastructure/bootstrap/src/templates/app/backend/src/main.py +0 -0
  29. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton/infrastructure/bootstrap/src/templates/app/frontend/package.json +0 -0
  30. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton/infrastructure/bootstrap/src/templates/app/frontend/skeleton-config.json +0 -0
  31. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton/infrastructure/bootstrap/src/templates/app/frontend/src/index.html +0 -0
  32. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton/infrastructure/bootstrap/src/templates/app/frontend/src/main.tsx +0 -0
  33. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton/infrastructure/bootstrap/src/templates/app/frontend/src/static/css/styles.css +0 -0
  34. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton/infrastructure/bootstrap/src/templates/app/frontend/src/static/img/skeleton.png +0 -0
  35. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton/infrastructure/bootstrap/src/templates/app/frontend/src/static/js/script.js +0 -0
  36. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton/infrastructure/bootstrap/src/templates/app/frontend/tsconfig.json +0 -0
  37. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton/infrastructure/bootstrap/src/templates/config/.gitignore +0 -0
  38. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton/infrastructure/bootstrap/src/templates/config/skeleton-dependencies.json +0 -0
  39. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton/infrastructure/bootstrap/src/templates/config/skeleton-layout.json +0 -0
  40. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton/infrastructure/bootstrap/src/templates/config/skeleton-schemas.json +0 -0
  41. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton/infrastructure/bootstrap/src/templates/config/skeleton-servers.json +0 -0
  42. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton/infrastructure/common/__init__.py +0 -0
  43. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton/infrastructure/common/config.json +0 -0
  44. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton/infrastructure/common/src/__init__.py +0 -0
  45. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton/infrastructure/common/src/config.py +0 -0
  46. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton/infrastructure/common/src/constants.py +0 -0
  47. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton/infrastructure/common/src/context.py +0 -0
  48. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton/infrastructure/common/src/env.py +0 -0
  49. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton/infrastructure/common/src/layout.py +0 -0
  50. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton/infrastructure/common/src/loader.py +0 -0
  51. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton/infrastructure/common/src/repository.py +0 -0
  52. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton/infrastructure/common/src/utils.py +0 -0
  53. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton/infrastructure/gateway/__init__.py +0 -0
  54. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton/infrastructure/gateway/settings/proxy.json +0 -0
  55. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton/infrastructure/gateway/settings/services.json +0 -0
  56. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton/infrastructure/gateway/src/__init__.py +0 -0
  57. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton/infrastructure/gateway/src/app.py +0 -0
  58. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton/infrastructure/gateway/src/client.py +0 -0
  59. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton/infrastructure/gateway/src/config.py +0 -0
  60. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton/infrastructure/gateway/src/context.py +0 -0
  61. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton/infrastructure/gateway/src/headers.py +0 -0
  62. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton/infrastructure/gateway/src/lifespan.py +0 -0
  63. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton/infrastructure/gateway/src/loader.py +0 -0
  64. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton/infrastructure/gateway/src/logging.py +0 -0
  65. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton/infrastructure/gateway/src/main.py +0 -0
  66. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton/infrastructure/gateway/src/parser.py +0 -0
  67. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton/infrastructure/gateway/src/registry.py +0 -0
  68. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton/infrastructure/gateway/src/reverseproxy.py +0 -0
  69. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton/infrastructure/gateway/src/router.py +0 -0
  70. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton/infrastructure/gateway/src/schemas.py +0 -0
  71. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton/infrastructure/gateway/src/service.py +0 -0
  72. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton/infrastructure/gateway/src/utils.py +0 -0
  73. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton/infrastructure/gateway/src/validation.py +0 -0
  74. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton/infrastructure/layout.json +0 -0
  75. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton/infrastructure/runners/__init__.py +0 -0
  76. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton/infrastructure/runners/src/__init__.py +0 -0
  77. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton/infrastructure/runners/src/actions.py +0 -0
  78. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton/infrastructure/runners/src/browser.py +0 -0
  79. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton/infrastructure/runners/src/cmd.py +0 -0
  80. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton/infrastructure/runners/src/command.py +0 -0
  81. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton/infrastructure/runners/src/frontend.py +0 -0
  82. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton/infrastructure/runners/src/gateway.py +0 -0
  83. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton/infrastructure/runners/src/hook.py +0 -0
  84. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton/infrastructure/runners/src/main.py +0 -0
  85. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton/infrastructure/runners/src/packages.py +0 -0
  86. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton/infrastructure/runners/src/parser.py +0 -0
  87. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton/infrastructure/runners/src/process.py +0 -0
  88. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton/infrastructure/runners/src/services.py +0 -0
  89. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton/infrastructure/runners/src/utils.py +0 -0
  90. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton/infrastructure/runners/src/validation.py +0 -0
  91. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton/packages/.skeleton/skeleton-cli-1.0.0.tgz +0 -0
  92. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton/packages/.skeleton/skeleton-webpack-1.0.0.tgz +0 -0
  93. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton/root.py +0 -0
  94. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton_framework.egg-info/SOURCES.txt +0 -0
  95. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton_framework.egg-info/dependency_links.txt +0 -0
  96. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton_framework.egg-info/entry_points.txt +0 -0
  97. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton_framework.egg-info/requires.txt +0 -0
  98. {skeleton_framework-0.1.0 → skeleton_framework-0.1.1}/skeleton_framework.egg-info/top_level.txt +0 -0
@@ -1,8 +1,12 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: skeleton-framework
3
- Version: 0.1.0
3
+ Version: 0.1.1
4
4
  Summary: A full-stack app framework: Python orchestration + FastAPI + WebPack frontend.
5
+ Author-email: lambdadotjoburg <lambdadotjoburg@gmail.com>
5
6
  License-Expression: LicenseRef-Proprietary
7
+ Project-URL: Homepage, https://github.com/lambdadotjoburg/skeleton
8
+ Project-URL: Repository, https://github.com/lambdadotjoburg/skeleton
9
+ Project-URL: Issues, https://github.com/lambdadotjoburg/skeleton/issues
6
10
  Requires-Python: >=3.11
7
11
  Description-Content-Type: text/markdown
8
12
  License-File: LICENSE
@@ -14,18 +18,20 @@ Dynamic: license-file
14
18
 
15
19
  # Skeleton Framework
16
20
 
17
- <img width="200px" src ="./skeleton.png"/>
21
+ ![Skeleton Logo](https://raw.githubusercontent.com/lambdadotjoburg/skeleton/main/skeleton.png)
18
22
 
19
- Skeleton is a full-stack application framework that combines Python orchestration, a FastAPI reverse-proxy gateway, a Python backend, and a TypeScript frontend.
23
+ Skeleton is a full-stack application orchestration framework that combines
24
+ Python orchestration, a FastAPI reverse-proxy gateway, a Python backend & TypeScript frontend.
20
25
 
21
- It provides a structured development workflow for configuring, initializing, installing, running, and building full-stack applications.
26
+ It provides a structured development workflow for configuring,
27
+ initializing, installing, running & building full-stack applications.
22
28
 
23
29
  ## Features
24
30
 
25
31
  - **Python orchestration** for application setup and service execution.
26
32
  - **FastAPI gateway** for centralized request routing and communication with backend services.
27
33
  - **Python backend** for application APIs.
28
- - **TypeScript frontend** with React and Webpack tooling.
34
+ - **TypeScript frontend** with Webpack tooling.
29
35
  - **Configurable project structure** through JSON configuration files.
30
36
  - **Separate environments** for framework development and client application dependencies.
31
37
  - **Command-line tooling** for initialization, development, building, and cleanup.
@@ -34,16 +40,16 @@ It provides a structured development workflow for configuring, initializing, ins
34
40
 
35
41
  Skeleton separates the application into cooperating layers:
36
42
 
37
- | Layer | Technology |
38
- |---|---|
39
- | Orchestration and CLI | Python |
40
- | Gateway and backend APIs | FastAPI |
41
- | HTTP server | Uvicorn |
42
- | HTTP communication | HTTPX |
43
- | Frontend | TypeScript and React |
44
- | Frontend bundling | Webpack |
45
- | Development file watching | watchfiles |
46
- | Dependency management | pip and npm |
43
+ | Layer | Technology |
44
+ |---------------------------|-------------|
45
+ | Orchestration and CLI | Python |
46
+ | Gateway and backend APIs | FastAPI |
47
+ | HTTP server | Uvicorn |
48
+ | HTTP communication | HTTPX |
49
+ | Frontend | TypeScript |
50
+ | Frontend bundling | Webpack |
51
+ | Development file watching | watchfiles |
52
+ | Dependency management | pip and npm |
47
53
 
48
54
  The gateway provides a central entry point for browser requests and coordinates communication between the frontend and backend.
49
55
 
@@ -51,9 +57,8 @@ The gateway provides a central entry point for browser requests and coordinates
51
57
 
52
58
  Before getting started, install:
53
59
 
54
- - Python 3.11 or later.
60
+ - Python 3.11 or later & pip.
55
61
  - Node.js and npm.
56
- - pip, included with standard Python installations.
57
62
 
58
63
  ## Installation
59
64
 
@@ -63,6 +68,10 @@ Install Skeleton from PyPI:
63
68
  python -m pip install skeleton-framework
64
69
  ```
65
70
 
71
+ ![client-venv](docs/gif/client/00_client_venv.gif)
72
+
73
+ ![client-pip-install-skeleton-framework](docs/gif/client/01_client_pip_install_skeleton_framework.gif)
74
+
66
75
  The installed Python distribution provides the `skeleton` command.
67
76
 
68
77
  ## Quickstart
@@ -80,6 +89,8 @@ Configure the project, initialize its files, and install its dependencies:
80
89
  skeleton --quickstart
81
90
  ```
82
91
 
92
+ ![client-venv](docs/gif/client/04_client_quickstart.gif)
93
+
83
94
  This combines the configuration, initialization, and installation stages.
84
95
 
85
96
  To run the application:
@@ -100,6 +111,8 @@ Skeleton also exposes the individual stages when you want to configure the appli
100
111
  skeleton --config
101
112
  ```
102
113
 
114
+ ![client-config-init](docs/gif/client/02_client_config_init.gif)
115
+
103
116
  This generates the project's configuration files:
104
117
 
105
118
  - `skeleton-layout.json` — defines the application layout.
@@ -116,6 +129,8 @@ Review and customize these files before initialization if necessary.
116
129
  skeleton --init
117
130
  ```
118
131
 
132
+ ![client-config-init](docs/gif/client/02_client_config_init.gif)
133
+
119
134
  Initialization creates the configured frontend and backend structure from the framework's templates, prepares dependency manifests, and configures the local frontend tooling packages.
120
135
 
121
136
  ### 3. Install dependencies
@@ -124,6 +139,8 @@ Initialization creates the configured frontend and backend structure from the fr
124
139
  skeleton --install
125
140
  ```
126
141
 
142
+ ![client-install](docs/gif/client/03_client_install.gif)
143
+
127
144
  This installs frontend dependencies using npm and backend Python dependencies into the backend's `.venv` environment.
128
145
 
129
146
  ### 4. Start services
@@ -135,22 +152,24 @@ skeleton --start
135
152
  You can also explicitly select services:
136
153
 
137
154
  ```bash
138
- skeleton --start frontend gateway packages --open
155
+ skeleton --start frontend gateway --open
139
156
  ```
140
157
 
158
+ ![client-start](docs/gif/client/05_client_start.gif)
159
+
141
160
  The selected services and runtime options determine which processes are started.
142
161
 
143
162
  ## Frontend commands
144
163
 
145
164
  Run these commands from the client project root:
146
165
 
147
- | Command | Purpose |
148
- |---|---|
149
- | `skeleton --serve` | Start the frontend development server. |
150
- | `skeleton --build` | Build the frontend for distribution. |
151
- | `skeleton --preview` | Run the configured frontend preview script. |
152
- | `skeleton --clean` | Remove generated frontend build artifacts. |
153
- | `skeleton --purge` | Remove frontend build artifacts and disposable development dependencies. |
166
+ | Command | Purpose |
167
+ |----------------------|--------------------------------------------------------------------------|
168
+ | `skeleton --serve` | Start the frontend development server. |
169
+ | `skeleton --build` | Build the frontend for distribution. |
170
+ | `skeleton --preview` | Run the configured frontend preview script. |
171
+ | `skeleton --clean` | Remove generated frontend build artifacts. |
172
+ | `skeleton --purge` | Remove frontend build artifacts and disposable development dependencies. |
154
173
 
155
174
  These commands invoke the corresponding scripts defined in the configured frontend directory's `package.json`.
156
175
 
@@ -158,10 +177,10 @@ These commands invoke the corresponding scripts defined in the configured fronte
158
177
 
159
178
  The default development configuration uses the following ports:
160
179
 
161
- | Service | Address |
162
- |---|---|
163
- | Gateway / reverse proxy | `http://127.0.0.1:8000` |
164
- | Backend API | `http://127.0.0.1:8080` |
180
+ | Service | Address |
181
+ |-----------------------------|-------------------------|
182
+ | Gateway / reverse proxy | `http://127.0.0.1:8000` |
183
+ | Backend API | `http://127.0.0.1:8080` |
165
184
  | Frontend development server | `http://127.0.0.1:3000` |
166
185
 
167
186
  The gateway is the normal entry point for browser access.
@@ -182,7 +201,9 @@ Actual routes depend on the application's server and gateway configuration.
182
201
 
183
202
  ## Project structure
184
203
 
185
- A generated client project follows the configured layout. A typical structure is:
204
+ A generated client project follows the configured layout.
205
+
206
+ A typical structure is:
186
207
 
187
208
  ```text
188
209
  my-app/
@@ -195,7 +216,11 @@ my-app/
195
216
  └── .skeleton/
196
217
  ```
197
218
 
198
- The frontend contains the TypeScript application and its npm tooling. The backend contains the Python application and its own virtual environment. The `.skeleton/` directory holds local framework tooling and generated assets.
219
+ The frontend contains the TypeScript application and its npm tooling.
220
+
221
+ The backend contains the Python application and its own virtual environment.
222
+
223
+ The `.skeleton/` directory holds local framework tooling and generated assets.
199
224
 
200
225
  The exact structure depends on the project's configuration.
201
226
 
@@ -203,9 +228,15 @@ The exact structure depends on the project's configuration.
203
228
 
204
229
  Run `skeleton --clean` to remove generated frontend build outputs.
205
230
 
206
- Run `skeleton --purge` when you want to remove the generated build outputs and disposable frontend development dependencies.
231
+ Run `skeleton --purge` if you want to remove the generated build outputs & disposable frontend development dependencies.
232
+
233
+ **Warning:**
234
+
235
+ Purging is destructive
207
236
 
208
- **Warning:** Purging is destructive. It may remove `node_modules`, lockfiles, and generated local tooling artifacts. Dependencies may need to be installed again.
237
+ It may remove `node_modules`, lockfiles, and generated local tooling artifacts.
238
+
239
+ Dependencies may need to be installed again.
209
240
 
210
241
  ## Troubleshooting
211
242
 
@@ -225,21 +256,23 @@ From the client project root, run:
225
256
  skeleton --install
226
257
  ```
227
258
 
228
- If the project has not yet been initialized, run `skeleton --init` first.
259
+ If the project has not yet been initialized, run `skeleton --config` followed by `skeleton --init` first.
229
260
 
230
261
  ### Application startup fails
231
262
 
232
263
  Check that:
233
264
 
234
- - The project has been configured and initialized.
235
- - Dependencies have been installed.
265
+ - The project has been configured and initialized `skeleton-layout.json`
266
+ - Dependencies have been installed `skeleton-dependencies.json`
236
267
  - The selected services are included in the startup command.
237
- - The required ports are available.
268
+ - The required ports are available `skeleton-servers.json`.
238
269
  - The server configuration matches the configured project layout.
239
270
 
240
271
  ### Framework tooling packages are missing
241
272
 
242
- If working directly from the framework source repository, run the framework's packaging command before initializing a client project:
273
+ If working directly from the framework source repository,
274
+ run the framework's packaging command before initializing
275
+ a client project:
243
276
 
244
277
  ```bash
245
278
  python run.py --pack
@@ -286,12 +319,20 @@ Skeleton is an experimental framework under active development. Its goal is to p
286
319
 
287
320
  These commands are intended for contributors working in the Skeleton framework source repository, not ordinary client projects.
288
321
 
322
+ To get the skeleton framework onto your local machine for development, clone:
323
+
324
+ [https://github.com/lambdadotjoburg/skeleton.git](https://github.com/lambdadotjoburg/skeleton.git)
325
+
326
+ ![dev-clone](docs/gif/dev/00_dev_clone.gif)
327
+
289
328
  ### Initialize the framework development environment
290
329
 
291
330
  ```bash
292
331
  python run.py --bootstrap
293
332
  ```
294
333
 
334
+ ![dev-bootstrap](docs/gif/dev/01_dev_bootstrap.gif)
335
+
295
336
  This combines `--init` and `--install` to initialize and install the framework's development environment.
296
337
 
297
338
  ### Build the framework distribution
@@ -300,7 +341,12 @@ This combines `--init` and `--install` to initialize and install the framework's
300
341
  python run.py --dist
301
342
  ```
302
343
 
303
- This combines `--pack` and `--build`. It prepares the distributable tooling packages and builds the Python distribution in `dist/`.
344
+ ![dev-dist](docs/gif/dev/02_dev_dist.gif)
345
+
346
+ This combines `--pack` and `--build`.
347
+
348
+ It prepares the distributable tooling packages
349
+ & builds the Python distribution in `dist/`.
304
350
 
305
351
  ### Cleanup
306
352
 
@@ -313,7 +359,9 @@ The framework's Python development environment and root `requirements.txt` are p
313
359
 
314
360
  ## Framework Developer: Testing a Local Installation
315
361
 
316
- Use this workflow to test the locally built `skeleton-framework` distribution in a separate client project. This verifies that the installed package works independently of the framework source repository.
362
+ Use this workflow to test the locally built `skeleton-framework` distribution in a separate client project.
363
+
364
+ This verifies that the installed package works independently of the framework source repository.
317
365
 
318
366
  ### 1. Build the distribution
319
367
 
@@ -355,9 +403,13 @@ From the test project directory:
355
403
  python -m pip install --force-reinstall ../framework/dist/skeleton_framework-0.1.0-py3-none-any.whl
356
404
  ```
357
405
 
358
- Adjust the relative path, wheel filename, and version to match your framework checkout and build output.
406
+ Adjust the relative path, wheel filename & version to match your framework checkout and build output.
407
+
408
+ The `--force-reinstall` option reinstalls the wheel even if that version is already present.
359
409
 
360
- The `--force-reinstall` option reinstalls the wheel even if that version is already present. `--no-deps` prevents pip from reinstalling the package's dependencies; use this option when those dependencies are already available in the environment. Otherwise, omit `--no-deps`.
410
+ `--no-deps` prevents pip from reinstalling the package's dependencies.
411
+
412
+ Use this option only when those dependencies are already available in the environment, otherwise, omit `--no-deps`.
361
413
 
362
414
  ### 5. Verify the installation
363
415
 
@@ -412,12 +464,14 @@ python run.py --dist
412
464
  Then reinstall the newly built wheel in the test project's virtual environment using the installation command above.
413
465
 
414
466
  This workflow lets you test packaging, bundled tooling, configuration files, templates,
415
- and CLI behavior without running the client project directly from the framework source tree.
467
+ & CLI behavior without running the client project directly from the framework source tree.
416
468
 
417
469
  **Important:**
470
+
418
471
  The framework development environment and the test project's `.venv` are independent.
419
- Install the locally built wheel into the test environment, and run the client commands
420
- from the test project directory.
472
+
473
+ Install the locally built wheel into the test environment
474
+ & run the client commands from the test project directory.
421
475
 
422
476
  ## Licence
423
477
 
@@ -426,8 +480,8 @@ Skeleton Framework is proprietary software. Copyright © 2026 lambdadotjoburg. A
426
480
  The source code is publicly available for inspection, but public availability
427
481
  does not grant unrestricted rights to use, modify, or redistribute the framework.
428
482
 
429
- Personal learning, educational activities, and non-commercial experimentation are permitted
430
- under the terms of the root [LICENSE](./LICENSE) file.
483
+ Personal learning, educational activities, and non-commercial experimentation
484
+ are permitted under the terms of the root [LICENSE](./LICENSE) file.
431
485
 
432
486
  Commercial use requires a separate paid licence from the copyright holder.
433
487
  Redistribution requires prior written permission.
@@ -1,31 +1,19 @@
1
- Metadata-Version: 2.4
2
- Name: skeleton-framework
3
- Version: 0.1.0
4
- Summary: A full-stack app framework: Python orchestration + FastAPI + WebPack frontend.
5
- License-Expression: LicenseRef-Proprietary
6
- Requires-Python: >=3.11
7
- Description-Content-Type: text/markdown
8
- License-File: LICENSE
9
- Requires-Dist: uvicorn
10
- Requires-Dist: fastapi
11
- Requires-Dist: httpx
12
- Requires-Dist: watchfiles
13
- Dynamic: license-file
14
-
15
1
  # Skeleton Framework
16
2
 
17
- <img width="200px" src ="./skeleton.png"/>
3
+ ![Skeleton Logo](https://raw.githubusercontent.com/lambdadotjoburg/skeleton/main/skeleton.png)
18
4
 
19
- Skeleton is a full-stack application framework that combines Python orchestration, a FastAPI reverse-proxy gateway, a Python backend, and a TypeScript frontend.
5
+ Skeleton is a full-stack application orchestration framework that combines
6
+ Python orchestration, a FastAPI reverse-proxy gateway, a Python backend & TypeScript frontend.
20
7
 
21
- It provides a structured development workflow for configuring, initializing, installing, running, and building full-stack applications.
8
+ It provides a structured development workflow for configuring,
9
+ initializing, installing, running & building full-stack applications.
22
10
 
23
11
  ## Features
24
12
 
25
13
  - **Python orchestration** for application setup and service execution.
26
14
  - **FastAPI gateway** for centralized request routing and communication with backend services.
27
15
  - **Python backend** for application APIs.
28
- - **TypeScript frontend** with React and Webpack tooling.
16
+ - **TypeScript frontend** with Webpack tooling.
29
17
  - **Configurable project structure** through JSON configuration files.
30
18
  - **Separate environments** for framework development and client application dependencies.
31
19
  - **Command-line tooling** for initialization, development, building, and cleanup.
@@ -34,16 +22,16 @@ It provides a structured development workflow for configuring, initializing, ins
34
22
 
35
23
  Skeleton separates the application into cooperating layers:
36
24
 
37
- | Layer | Technology |
38
- |---|---|
39
- | Orchestration and CLI | Python |
40
- | Gateway and backend APIs | FastAPI |
41
- | HTTP server | Uvicorn |
42
- | HTTP communication | HTTPX |
43
- | Frontend | TypeScript and React |
44
- | Frontend bundling | Webpack |
45
- | Development file watching | watchfiles |
46
- | Dependency management | pip and npm |
25
+ | Layer | Technology |
26
+ |---------------------------|-------------|
27
+ | Orchestration and CLI | Python |
28
+ | Gateway and backend APIs | FastAPI |
29
+ | HTTP server | Uvicorn |
30
+ | HTTP communication | HTTPX |
31
+ | Frontend | TypeScript |
32
+ | Frontend bundling | Webpack |
33
+ | Development file watching | watchfiles |
34
+ | Dependency management | pip and npm |
47
35
 
48
36
  The gateway provides a central entry point for browser requests and coordinates communication between the frontend and backend.
49
37
 
@@ -51,9 +39,8 @@ The gateway provides a central entry point for browser requests and coordinates
51
39
 
52
40
  Before getting started, install:
53
41
 
54
- - Python 3.11 or later.
42
+ - Python 3.11 or later & pip.
55
43
  - Node.js and npm.
56
- - pip, included with standard Python installations.
57
44
 
58
45
  ## Installation
59
46
 
@@ -63,6 +50,10 @@ Install Skeleton from PyPI:
63
50
  python -m pip install skeleton-framework
64
51
  ```
65
52
 
53
+ ![client-venv](docs/gif/client/00_client_venv.gif)
54
+
55
+ ![client-pip-install-skeleton-framework](docs/gif/client/01_client_pip_install_skeleton_framework.gif)
56
+
66
57
  The installed Python distribution provides the `skeleton` command.
67
58
 
68
59
  ## Quickstart
@@ -80,6 +71,8 @@ Configure the project, initialize its files, and install its dependencies:
80
71
  skeleton --quickstart
81
72
  ```
82
73
 
74
+ ![client-venv](docs/gif/client/04_client_quickstart.gif)
75
+
83
76
  This combines the configuration, initialization, and installation stages.
84
77
 
85
78
  To run the application:
@@ -100,6 +93,8 @@ Skeleton also exposes the individual stages when you want to configure the appli
100
93
  skeleton --config
101
94
  ```
102
95
 
96
+ ![client-config-init](docs/gif/client/02_client_config_init.gif)
97
+
103
98
  This generates the project's configuration files:
104
99
 
105
100
  - `skeleton-layout.json` — defines the application layout.
@@ -116,6 +111,8 @@ Review and customize these files before initialization if necessary.
116
111
  skeleton --init
117
112
  ```
118
113
 
114
+ ![client-config-init](docs/gif/client/02_client_config_init.gif)
115
+
119
116
  Initialization creates the configured frontend and backend structure from the framework's templates, prepares dependency manifests, and configures the local frontend tooling packages.
120
117
 
121
118
  ### 3. Install dependencies
@@ -124,6 +121,8 @@ Initialization creates the configured frontend and backend structure from the fr
124
121
  skeleton --install
125
122
  ```
126
123
 
124
+ ![client-install](docs/gif/client/03_client_install.gif)
125
+
127
126
  This installs frontend dependencies using npm and backend Python dependencies into the backend's `.venv` environment.
128
127
 
129
128
  ### 4. Start services
@@ -135,22 +134,24 @@ skeleton --start
135
134
  You can also explicitly select services:
136
135
 
137
136
  ```bash
138
- skeleton --start frontend gateway packages --open
137
+ skeleton --start frontend gateway --open
139
138
  ```
140
139
 
140
+ ![client-start](docs/gif/client/05_client_start.gif)
141
+
141
142
  The selected services and runtime options determine which processes are started.
142
143
 
143
144
  ## Frontend commands
144
145
 
145
146
  Run these commands from the client project root:
146
147
 
147
- | Command | Purpose |
148
- |---|---|
149
- | `skeleton --serve` | Start the frontend development server. |
150
- | `skeleton --build` | Build the frontend for distribution. |
151
- | `skeleton --preview` | Run the configured frontend preview script. |
152
- | `skeleton --clean` | Remove generated frontend build artifacts. |
153
- | `skeleton --purge` | Remove frontend build artifacts and disposable development dependencies. |
148
+ | Command | Purpose |
149
+ |----------------------|--------------------------------------------------------------------------|
150
+ | `skeleton --serve` | Start the frontend development server. |
151
+ | `skeleton --build` | Build the frontend for distribution. |
152
+ | `skeleton --preview` | Run the configured frontend preview script. |
153
+ | `skeleton --clean` | Remove generated frontend build artifacts. |
154
+ | `skeleton --purge` | Remove frontend build artifacts and disposable development dependencies. |
154
155
 
155
156
  These commands invoke the corresponding scripts defined in the configured frontend directory's `package.json`.
156
157
 
@@ -158,10 +159,10 @@ These commands invoke the corresponding scripts defined in the configured fronte
158
159
 
159
160
  The default development configuration uses the following ports:
160
161
 
161
- | Service | Address |
162
- |---|---|
163
- | Gateway / reverse proxy | `http://127.0.0.1:8000` |
164
- | Backend API | `http://127.0.0.1:8080` |
162
+ | Service | Address |
163
+ |-----------------------------|-------------------------|
164
+ | Gateway / reverse proxy | `http://127.0.0.1:8000` |
165
+ | Backend API | `http://127.0.0.1:8080` |
165
166
  | Frontend development server | `http://127.0.0.1:3000` |
166
167
 
167
168
  The gateway is the normal entry point for browser access.
@@ -182,7 +183,9 @@ Actual routes depend on the application's server and gateway configuration.
182
183
 
183
184
  ## Project structure
184
185
 
185
- A generated client project follows the configured layout. A typical structure is:
186
+ A generated client project follows the configured layout.
187
+
188
+ A typical structure is:
186
189
 
187
190
  ```text
188
191
  my-app/
@@ -195,7 +198,11 @@ my-app/
195
198
  └── .skeleton/
196
199
  ```
197
200
 
198
- The frontend contains the TypeScript application and its npm tooling. The backend contains the Python application and its own virtual environment. The `.skeleton/` directory holds local framework tooling and generated assets.
201
+ The frontend contains the TypeScript application and its npm tooling.
202
+
203
+ The backend contains the Python application and its own virtual environment.
204
+
205
+ The `.skeleton/` directory holds local framework tooling and generated assets.
199
206
 
200
207
  The exact structure depends on the project's configuration.
201
208
 
@@ -203,9 +210,15 @@ The exact structure depends on the project's configuration.
203
210
 
204
211
  Run `skeleton --clean` to remove generated frontend build outputs.
205
212
 
206
- Run `skeleton --purge` when you want to remove the generated build outputs and disposable frontend development dependencies.
213
+ Run `skeleton --purge` if you want to remove the generated build outputs & disposable frontend development dependencies.
214
+
215
+ **Warning:**
216
+
217
+ Purging is destructive
207
218
 
208
- **Warning:** Purging is destructive. It may remove `node_modules`, lockfiles, and generated local tooling artifacts. Dependencies may need to be installed again.
219
+ It may remove `node_modules`, lockfiles, and generated local tooling artifacts.
220
+
221
+ Dependencies may need to be installed again.
209
222
 
210
223
  ## Troubleshooting
211
224
 
@@ -225,21 +238,23 @@ From the client project root, run:
225
238
  skeleton --install
226
239
  ```
227
240
 
228
- If the project has not yet been initialized, run `skeleton --init` first.
241
+ If the project has not yet been initialized, run `skeleton --config` followed by `skeleton --init` first.
229
242
 
230
243
  ### Application startup fails
231
244
 
232
245
  Check that:
233
246
 
234
- - The project has been configured and initialized.
235
- - Dependencies have been installed.
247
+ - The project has been configured and initialized `skeleton-layout.json`
248
+ - Dependencies have been installed `skeleton-dependencies.json`
236
249
  - The selected services are included in the startup command.
237
- - The required ports are available.
250
+ - The required ports are available `skeleton-servers.json`.
238
251
  - The server configuration matches the configured project layout.
239
252
 
240
253
  ### Framework tooling packages are missing
241
254
 
242
- If working directly from the framework source repository, run the framework's packaging command before initializing a client project:
255
+ If working directly from the framework source repository,
256
+ run the framework's packaging command before initializing
257
+ a client project:
243
258
 
244
259
  ```bash
245
260
  python run.py --pack
@@ -286,12 +301,20 @@ Skeleton is an experimental framework under active development. Its goal is to p
286
301
 
287
302
  These commands are intended for contributors working in the Skeleton framework source repository, not ordinary client projects.
288
303
 
304
+ To get the skeleton framework onto your local machine for development, clone:
305
+
306
+ [https://github.com/lambdadotjoburg/skeleton.git](https://github.com/lambdadotjoburg/skeleton.git)
307
+
308
+ ![dev-clone](docs/gif/dev/00_dev_clone.gif)
309
+
289
310
  ### Initialize the framework development environment
290
311
 
291
312
  ```bash
292
313
  python run.py --bootstrap
293
314
  ```
294
315
 
316
+ ![dev-bootstrap](docs/gif/dev/01_dev_bootstrap.gif)
317
+
295
318
  This combines `--init` and `--install` to initialize and install the framework's development environment.
296
319
 
297
320
  ### Build the framework distribution
@@ -300,7 +323,12 @@ This combines `--init` and `--install` to initialize and install the framework's
300
323
  python run.py --dist
301
324
  ```
302
325
 
303
- This combines `--pack` and `--build`. It prepares the distributable tooling packages and builds the Python distribution in `dist/`.
326
+ ![dev-dist](docs/gif/dev/02_dev_dist.gif)
327
+
328
+ This combines `--pack` and `--build`.
329
+
330
+ It prepares the distributable tooling packages
331
+ & builds the Python distribution in `dist/`.
304
332
 
305
333
  ### Cleanup
306
334
 
@@ -313,7 +341,9 @@ The framework's Python development environment and root `requirements.txt` are p
313
341
 
314
342
  ## Framework Developer: Testing a Local Installation
315
343
 
316
- Use this workflow to test the locally built `skeleton-framework` distribution in a separate client project. This verifies that the installed package works independently of the framework source repository.
344
+ Use this workflow to test the locally built `skeleton-framework` distribution in a separate client project.
345
+
346
+ This verifies that the installed package works independently of the framework source repository.
317
347
 
318
348
  ### 1. Build the distribution
319
349
 
@@ -355,9 +385,13 @@ From the test project directory:
355
385
  python -m pip install --force-reinstall ../framework/dist/skeleton_framework-0.1.0-py3-none-any.whl
356
386
  ```
357
387
 
358
- Adjust the relative path, wheel filename, and version to match your framework checkout and build output.
388
+ Adjust the relative path, wheel filename & version to match your framework checkout and build output.
389
+
390
+ The `--force-reinstall` option reinstalls the wheel even if that version is already present.
359
391
 
360
- The `--force-reinstall` option reinstalls the wheel even if that version is already present. `--no-deps` prevents pip from reinstalling the package's dependencies; use this option when those dependencies are already available in the environment. Otherwise, omit `--no-deps`.
392
+ `--no-deps` prevents pip from reinstalling the package's dependencies.
393
+
394
+ Use this option only when those dependencies are already available in the environment, otherwise, omit `--no-deps`.
361
395
 
362
396
  ### 5. Verify the installation
363
397
 
@@ -412,12 +446,14 @@ python run.py --dist
412
446
  Then reinstall the newly built wheel in the test project's virtual environment using the installation command above.
413
447
 
414
448
  This workflow lets you test packaging, bundled tooling, configuration files, templates,
415
- and CLI behavior without running the client project directly from the framework source tree.
449
+ & CLI behavior without running the client project directly from the framework source tree.
416
450
 
417
451
  **Important:**
452
+
418
453
  The framework development environment and the test project's `.venv` are independent.
419
- Install the locally built wheel into the test environment, and run the client commands
420
- from the test project directory.
454
+
455
+ Install the locally built wheel into the test environment
456
+ & run the client commands from the test project directory.
421
457
 
422
458
  ## Licence
423
459
 
@@ -426,8 +462,8 @@ Skeleton Framework is proprietary software. Copyright © 2026 lambdadotjoburg. A
426
462
  The source code is publicly available for inspection, but public availability
427
463
  does not grant unrestricted rights to use, modify, or redistribute the framework.
428
464
 
429
- Personal learning, educational activities, and non-commercial experimentation are permitted
430
- under the terms of the root [LICENSE](./LICENSE) file.
465
+ Personal learning, educational activities, and non-commercial experimentation
466
+ are permitted under the terms of the root [LICENSE](./LICENSE) file.
431
467
 
432
468
  Commercial use requires a separate paid licence from the copyright holder.
433
469
  Redistribution requires prior written permission.