skeleton-framework 0.1.0__py3-none-any.whl

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 (93) hide show
  1. skeleton/__init__.py +0 -0
  2. skeleton/cli.py +151 -0
  3. skeleton/client.py +269 -0
  4. skeleton/infrastructure/__init__.py +1 -0
  5. skeleton/infrastructure/bootstrap/__init__.py +0 -0
  6. skeleton/infrastructure/bootstrap/src/__init__.py +0 -0
  7. skeleton/infrastructure/bootstrap/src/commands/__init__.py +0 -0
  8. skeleton/infrastructure/bootstrap/src/commands/client/__init__.py +0 -0
  9. skeleton/infrastructure/bootstrap/src/commands/client/init.py +486 -0
  10. skeleton/infrastructure/bootstrap/src/commands/client/install.py +113 -0
  11. skeleton/infrastructure/bootstrap/src/commands/dev/__init__.py +0 -0
  12. skeleton/infrastructure/bootstrap/src/commands/dev/build.py +80 -0
  13. skeleton/infrastructure/bootstrap/src/commands/dev/init.py +80 -0
  14. skeleton/infrastructure/bootstrap/src/commands/dev/install.py +168 -0
  15. skeleton/infrastructure/bootstrap/src/commands/dev/pack.py +55 -0
  16. skeleton/infrastructure/bootstrap/src/config.py +54 -0
  17. skeleton/infrastructure/bootstrap/src/copy.py +56 -0
  18. skeleton/infrastructure/bootstrap/src/load.py +221 -0
  19. skeleton/infrastructure/bootstrap/src/templates/app/backend/requirements.txt +1 -0
  20. skeleton/infrastructure/bootstrap/src/templates/app/backend/routes.json +10 -0
  21. skeleton/infrastructure/bootstrap/src/templates/app/backend/src/__init__.py +0 -0
  22. skeleton/infrastructure/bootstrap/src/templates/app/backend/src/main.py +35 -0
  23. skeleton/infrastructure/bootstrap/src/templates/app/frontend/package.json +21 -0
  24. skeleton/infrastructure/bootstrap/src/templates/app/frontend/skeleton-config.json +29 -0
  25. skeleton/infrastructure/bootstrap/src/templates/app/frontend/src/index.html +16 -0
  26. skeleton/infrastructure/bootstrap/src/templates/app/frontend/src/main.tsx +15 -0
  27. skeleton/infrastructure/bootstrap/src/templates/app/frontend/src/static/css/styles.css +28 -0
  28. skeleton/infrastructure/bootstrap/src/templates/app/frontend/src/static/img/skeleton.png +0 -0
  29. skeleton/infrastructure/bootstrap/src/templates/app/frontend/src/static/js/script.js +1 -0
  30. skeleton/infrastructure/bootstrap/src/templates/app/frontend/tsconfig.json +90 -0
  31. skeleton/infrastructure/bootstrap/src/templates/config/.gitignore +21 -0
  32. skeleton/infrastructure/bootstrap/src/templates/config/skeleton-dependencies.json +21 -0
  33. skeleton/infrastructure/bootstrap/src/templates/config/skeleton-layout.json +11 -0
  34. skeleton/infrastructure/bootstrap/src/templates/config/skeleton-schemas.json +20 -0
  35. skeleton/infrastructure/bootstrap/src/templates/config/skeleton-servers.json +16 -0
  36. skeleton/infrastructure/common/__init__.py +1 -0
  37. skeleton/infrastructure/common/config.json +8 -0
  38. skeleton/infrastructure/common/src/__init__.py +0 -0
  39. skeleton/infrastructure/common/src/config.py +37 -0
  40. skeleton/infrastructure/common/src/constants.py +4 -0
  41. skeleton/infrastructure/common/src/context.py +15 -0
  42. skeleton/infrastructure/common/src/env.py +12 -0
  43. skeleton/infrastructure/common/src/layout.py +68 -0
  44. skeleton/infrastructure/common/src/loader.py +8 -0
  45. skeleton/infrastructure/common/src/repository.py +12 -0
  46. skeleton/infrastructure/common/src/utils.py +26 -0
  47. skeleton/infrastructure/gateway/__init__.py +0 -0
  48. skeleton/infrastructure/gateway/settings/proxy.json +24 -0
  49. skeleton/infrastructure/gateway/settings/services.json +10 -0
  50. skeleton/infrastructure/gateway/src/__init__.py +0 -0
  51. skeleton/infrastructure/gateway/src/app.py +98 -0
  52. skeleton/infrastructure/gateway/src/client.py +68 -0
  53. skeleton/infrastructure/gateway/src/config.py +29 -0
  54. skeleton/infrastructure/gateway/src/context.py +31 -0
  55. skeleton/infrastructure/gateway/src/headers.py +17 -0
  56. skeleton/infrastructure/gateway/src/lifespan.py +17 -0
  57. skeleton/infrastructure/gateway/src/loader.py +113 -0
  58. skeleton/infrastructure/gateway/src/logging.py +37 -0
  59. skeleton/infrastructure/gateway/src/main.py +139 -0
  60. skeleton/infrastructure/gateway/src/parser.py +59 -0
  61. skeleton/infrastructure/gateway/src/registry.py +30 -0
  62. skeleton/infrastructure/gateway/src/reverseproxy.py +54 -0
  63. skeleton/infrastructure/gateway/src/router.py +74 -0
  64. skeleton/infrastructure/gateway/src/schemas.py +21 -0
  65. skeleton/infrastructure/gateway/src/service.py +123 -0
  66. skeleton/infrastructure/gateway/src/utils.py +48 -0
  67. skeleton/infrastructure/gateway/src/validation.py +89 -0
  68. skeleton/infrastructure/layout.json +12 -0
  69. skeleton/infrastructure/runners/__init__.py +0 -0
  70. skeleton/infrastructure/runners/src/__init__.py +0 -0
  71. skeleton/infrastructure/runners/src/actions.py +4 -0
  72. skeleton/infrastructure/runners/src/browser.py +18 -0
  73. skeleton/infrastructure/runners/src/cmd.py +7 -0
  74. skeleton/infrastructure/runners/src/command.py +7 -0
  75. skeleton/infrastructure/runners/src/frontend.py +35 -0
  76. skeleton/infrastructure/runners/src/gateway.py +104 -0
  77. skeleton/infrastructure/runners/src/hook.py +53 -0
  78. skeleton/infrastructure/runners/src/main.py +78 -0
  79. skeleton/infrastructure/runners/src/packages.py +35 -0
  80. skeleton/infrastructure/runners/src/parser.py +84 -0
  81. skeleton/infrastructure/runners/src/process.py +99 -0
  82. skeleton/infrastructure/runners/src/services.py +16 -0
  83. skeleton/infrastructure/runners/src/utils.py +6 -0
  84. skeleton/infrastructure/runners/src/validation.py +28 -0
  85. skeleton/packages/.skeleton/skeleton-cli-1.0.0.tgz +0 -0
  86. skeleton/packages/.skeleton/skeleton-webpack-1.0.0.tgz +0 -0
  87. skeleton/root.py +234 -0
  88. skeleton_framework-0.1.0.dist-info/METADATA +440 -0
  89. skeleton_framework-0.1.0.dist-info/RECORD +93 -0
  90. skeleton_framework-0.1.0.dist-info/WHEEL +5 -0
  91. skeleton_framework-0.1.0.dist-info/entry_points.txt +2 -0
  92. skeleton_framework-0.1.0.dist-info/licenses/LICENSE +146 -0
  93. skeleton_framework-0.1.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,440 @@
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
+ # Skeleton Framework
16
+
17
+ <img width="200px" src ="./skeleton.png"/>
18
+
19
+ Skeleton is a full-stack application framework that combines Python orchestration, a FastAPI reverse-proxy gateway, a Python backend, and a TypeScript frontend.
20
+
21
+ It provides a structured development workflow for configuring, initializing, installing, running, and building full-stack applications.
22
+
23
+ ## Features
24
+
25
+ - **Python orchestration** for application setup and service execution.
26
+ - **FastAPI gateway** for centralized request routing and communication with backend services.
27
+ - **Python backend** for application APIs.
28
+ - **TypeScript frontend** with React and Webpack tooling.
29
+ - **Configurable project structure** through JSON configuration files.
30
+ - **Separate environments** for framework development and client application dependencies.
31
+ - **Command-line tooling** for initialization, development, building, and cleanup.
32
+
33
+ ## Architecture
34
+
35
+ Skeleton separates the application into cooperating layers:
36
+
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 |
47
+
48
+ The gateway provides a central entry point for browser requests and coordinates communication between the frontend and backend.
49
+
50
+ ## Requirements
51
+
52
+ Before getting started, install:
53
+
54
+ - Python 3.11 or later.
55
+ - Node.js and npm.
56
+ - pip, included with standard Python installations.
57
+
58
+ ## Installation
59
+
60
+ Install Skeleton from PyPI:
61
+
62
+ ```bash
63
+ python -m pip install skeleton-framework
64
+ ```
65
+
66
+ The installed Python distribution provides the `skeleton` command.
67
+
68
+ ## Quickstart
69
+
70
+ Create or enter an empty directory for your application:
71
+
72
+ ```bash
73
+ mkdir my-app
74
+ cd my-app
75
+ ```
76
+
77
+ Configure the project, initialize its files, and install its dependencies:
78
+
79
+ ```bash
80
+ skeleton --quickstart
81
+ ```
82
+
83
+ This combines the configuration, initialization, and installation stages.
84
+
85
+ To run the application:
86
+
87
+ ```bash
88
+ skeleton --start
89
+ ```
90
+
91
+ Follow the terminal output for service startup information and open the application at the configured local address.
92
+
93
+ ## Client project workflow
94
+
95
+ Skeleton also exposes the individual stages when you want to configure the application before installing dependencies.
96
+
97
+ ### 1. Generate configuration
98
+
99
+ ```bash
100
+ skeleton --config
101
+ ```
102
+
103
+ This generates the project's configuration files:
104
+
105
+ - `skeleton-layout.json` — defines the application layout.
106
+ - `skeleton-dependencies.json` — declares frontend and backend dependencies.
107
+ - `skeleton-schemas.json` — provides schema configuration.
108
+ - `skeleton-servers.json` — defines server configuration.
109
+ - `.gitignore` — establishes ignore rules for generated files.
110
+
111
+ Review and customize these files before initialization if necessary.
112
+
113
+ ### 2. Initialize the project
114
+
115
+ ```bash
116
+ skeleton --init
117
+ ```
118
+
119
+ Initialization creates the configured frontend and backend structure from the framework's templates, prepares dependency manifests, and configures the local frontend tooling packages.
120
+
121
+ ### 3. Install dependencies
122
+
123
+ ```bash
124
+ skeleton --install
125
+ ```
126
+
127
+ This installs frontend dependencies using npm and backend Python dependencies into the backend's `.venv` environment.
128
+
129
+ ### 4. Start services
130
+
131
+ ```bash
132
+ skeleton --start
133
+ ```
134
+
135
+ You can also explicitly select services:
136
+
137
+ ```bash
138
+ skeleton --start frontend gateway packages --open
139
+ ```
140
+
141
+ The selected services and runtime options determine which processes are started.
142
+
143
+ ## Frontend commands
144
+
145
+ Run these commands from the client project root:
146
+
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. |
154
+
155
+ These commands invoke the corresponding scripts defined in the configured frontend directory's `package.json`.
156
+
157
+ ## Default development ports
158
+
159
+ The default development configuration uses the following ports:
160
+
161
+ | Service | Address |
162
+ |---|---|
163
+ | Gateway / reverse proxy | `http://127.0.0.1:8000` |
164
+ | Backend API | `http://127.0.0.1:8080` |
165
+ | Frontend development server | `http://127.0.0.1:3000` |
166
+
167
+ The gateway is the normal entry point for browser access.
168
+
169
+ For example, the test API endpoint can be accessed through:
170
+
171
+ ```text
172
+ http://127.0.0.1:8000/api/test
173
+ ```
174
+
175
+ The corresponding backend endpoint may be available directly at:
176
+
177
+ ```text
178
+ http://127.0.0.1:8080/test
179
+ ```
180
+
181
+ Actual routes depend on the application's server and gateway configuration.
182
+
183
+ ## Project structure
184
+
185
+ A generated client project follows the configured layout. A typical structure is:
186
+
187
+ ```text
188
+ my-app/
189
+ ├── skeleton-layout.json
190
+ ├── skeleton-dependencies.json
191
+ ├── skeleton-schemas.json
192
+ ├── skeleton-servers.json
193
+ ├── frontend/
194
+ ├── backend/
195
+ └── .skeleton/
196
+ ```
197
+
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.
199
+
200
+ The exact structure depends on the project's configuration.
201
+
202
+ ## Cleanup
203
+
204
+ Run `skeleton --clean` to remove generated frontend build outputs.
205
+
206
+ Run `skeleton --purge` when you want to remove the generated build outputs and disposable frontend development dependencies.
207
+
208
+ **Warning:** Purging is destructive. It may remove `node_modules`, lockfiles, and generated local tooling artifacts. Dependencies may need to be installed again.
209
+
210
+ ## Troubleshooting
211
+
212
+ ### The command is not found
213
+
214
+ Confirm that Skeleton is installed in the Python environment whose scripts directory is available on your terminal's `PATH`.
215
+
216
+ ```bash
217
+ python -m pip show skeleton-framework
218
+ ```
219
+
220
+ ### Frontend or backend dependencies are missing
221
+
222
+ From the client project root, run:
223
+
224
+ ```bash
225
+ skeleton --install
226
+ ```
227
+
228
+ If the project has not yet been initialized, run `skeleton --init` first.
229
+
230
+ ### Application startup fails
231
+
232
+ Check that:
233
+
234
+ - The project has been configured and initialized.
235
+ - Dependencies have been installed.
236
+ - The selected services are included in the startup command.
237
+ - The required ports are available.
238
+ - The server configuration matches the configured project layout.
239
+
240
+ ### Framework tooling packages are missing
241
+
242
+ If working directly from the framework source repository, run the framework's packaging command before initializing a client project:
243
+
244
+ ```bash
245
+ python run.py --pack
246
+ ```
247
+
248
+ ## Framework development
249
+
250
+ These commands are intended for contributors working in the Skeleton framework source repository, not ordinary client projects.
251
+
252
+ Initialize the framework development environment:
253
+
254
+ ```bash
255
+ python run.py --bootstrap
256
+ ```
257
+
258
+ Prepare the framework's distributable tooling packages:
259
+
260
+ ```bash
261
+ python run.py --pack
262
+ ```
263
+
264
+ Build the Python distribution:
265
+
266
+ ```bash
267
+ python run.py --build
268
+ ```
269
+
270
+ Additional development and cleanup commands are available:
271
+
272
+ ```bash
273
+ python run.py --init
274
+ python run.py --install
275
+ python run.py --clean
276
+ python run.py --purge
277
+ ```
278
+
279
+ The framework's Python development environment and root `requirements.txt` are separate from the environments created for client applications.
280
+
281
+ ## Project status
282
+
283
+ Skeleton is an experimental framework under active development. Its goal is to provide a clear, reproducible foundation for full-stack application development while keeping configuration, orchestration, frontend tooling, and backend services independently manageable.
284
+
285
+ ## Framework development
286
+
287
+ These commands are intended for contributors working in the Skeleton framework source repository, not ordinary client projects.
288
+
289
+ ### Initialize the framework development environment
290
+
291
+ ```bash
292
+ python run.py --bootstrap
293
+ ```
294
+
295
+ This combines `--init` and `--install` to initialize and install the framework's development environment.
296
+
297
+ ### Build the framework distribution
298
+
299
+ ```bash
300
+ python run.py --dist
301
+ ```
302
+
303
+ This combines `--pack` and `--build`. It prepares the distributable tooling packages and builds the Python distribution in `dist/`.
304
+
305
+ ### Cleanup
306
+
307
+ ```bash
308
+ python run.py --clean
309
+ python run.py --purge
310
+ ```
311
+
312
+ The framework's Python development environment and root `requirements.txt` are preserved by framework cleanup.
313
+
314
+ ## Framework Developer: Testing a Local Installation
315
+
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.
317
+
318
+ ### 1. Build the distribution
319
+
320
+ From the framework repository root:
321
+
322
+ ```bash
323
+ python run.py --dist
324
+ ```
325
+
326
+ The generated wheel will be located in the framework's `dist/` directory.
327
+
328
+ ### 2. Create a separate test project
329
+
330
+ From the framework repository root, create a sibling directory outside the framework source tree:
331
+
332
+ ```bash
333
+ mkdir -p ../skeleton-test-project
334
+ cd ../skeleton-test-project
335
+ ```
336
+
337
+ ### 3. Create and activate the test environment
338
+
339
+ ```bash
340
+ python -m venv .venv
341
+ source .venv/Scripts/activate
342
+ ```
343
+
344
+ On macOS or Linux, use:
345
+
346
+ ```bash
347
+ source .venv/bin/activate
348
+ ```
349
+
350
+ ### 4. Install the locally built wheel
351
+
352
+ From the test project directory:
353
+
354
+ ```bash
355
+ python -m pip install --force-reinstall ../framework/dist/skeleton_framework-0.1.0-py3-none-any.whl
356
+ ```
357
+
358
+ Adjust the relative path, wheel filename, and version to match your framework checkout and build output.
359
+
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`.
361
+
362
+ ### 5. Verify the installation
363
+
364
+ ```bash
365
+ python -m pip show skeleton-framework
366
+ python -m pip show -f skeleton-framework
367
+ ```
368
+
369
+ The first command displays the installed distribution's metadata. The second lists its installed files.
370
+
371
+ ### 6. Test the installed CLI
372
+
373
+ From the test project root, run the complete client setup:
374
+
375
+ ```bash
376
+ skeleton --quickstart
377
+ ```
378
+
379
+ Then start the application:
380
+
381
+ ```bash
382
+ skeleton --start
383
+ ```
384
+
385
+ Alternatively, test the individual setup stages:
386
+
387
+ ```bash
388
+ skeleton --config
389
+ skeleton --init
390
+ skeleton --install
391
+ skeleton --start
392
+ ```
393
+
394
+ You can also test the remaining client commands:
395
+
396
+ ```bash
397
+ skeleton --serve
398
+ skeleton --build
399
+ skeleton --preview
400
+ skeleton --clean
401
+ skeleton --purge
402
+ ```
403
+
404
+ ### 7. Test framework changes
405
+
406
+ Whenever you modify the framework, rebuild the distribution from the framework repository:
407
+
408
+ ```bash
409
+ python run.py --dist
410
+ ```
411
+
412
+ Then reinstall the newly built wheel in the test project's virtual environment using the installation command above.
413
+
414
+ 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.
416
+
417
+ **Important:**
418
+ 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.
421
+
422
+ ## Licence
423
+
424
+ Skeleton Framework is proprietary software. Copyright © 2026 lambdadotjoburg. All rights reserved.
425
+
426
+ The source code is publicly available for inspection, but public availability
427
+ does not grant unrestricted rights to use, modify, or redistribute the framework.
428
+
429
+ Personal learning, educational activities, and non-commercial experimentation are permitted
430
+ under the terms of the root [LICENSE](./LICENSE) file.
431
+
432
+ Commercial use requires a separate paid licence from the copyright holder.
433
+ Redistribution requires prior written permission.
434
+
435
+ Third-party dependencies remain subject to their respective licences.
436
+
437
+ For commercial licensing, redistribution requests, or other permissions,
438
+ contact [lambdadotjoburg@gmail.com](mailto:lambdadotjoburg@gmail.com).
439
+
440
+ See the [LICENSE](./LICENSE) file for the complete terms.
@@ -0,0 +1,93 @@
1
+ skeleton/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
+ skeleton/cli.py,sha256=LU7nE5ssQzxYJim8_D7TBbVfNQVxRmv19HTGw21a34o,3836
3
+ skeleton/client.py,sha256=jWJ1a628OqYiHUDfCud9tldY-Wg4RboDRPDl7zDAnv8,6793
4
+ skeleton/root.py,sha256=8_aAEaWtYSamRMYflo9ZLjcrwO7m5aSA0uO9cxgBE3Q,5751
5
+ skeleton/infrastructure/__init__.py,sha256=KltEOVi157Y3ygDZfTU1_JnrL16jfsAOHn3x7SdcOgI,52
6
+ skeleton/infrastructure/layout.json,sha256=f5VGBp2AMPV5x9j_N-p-CbNKfYmHt9wotpVJ1MmPlwQ,300
7
+ skeleton/infrastructure/bootstrap/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
8
+ skeleton/infrastructure/bootstrap/src/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
9
+ skeleton/infrastructure/bootstrap/src/config.py,sha256=i5fICvF7DYjicSkYc7rVOOvv3DCnI1kHOGv79djBsi4,1094
10
+ skeleton/infrastructure/bootstrap/src/copy.py,sha256=6gbt6vPfWgahAOkBLpjz40iH_1nuUf5HDgOEKJkLaWE,1227
11
+ skeleton/infrastructure/bootstrap/src/load.py,sha256=6E4nVuf_wEinvPBWhShZjjr4hjcJiqSJ8iM18XTjj-s,6095
12
+ skeleton/infrastructure/bootstrap/src/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
13
+ skeleton/infrastructure/bootstrap/src/commands/client/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
14
+ skeleton/infrastructure/bootstrap/src/commands/client/init.py,sha256=mKZ04KKmYfpulQDJtI5rA2Z8J2UUKg8f3yTBAhlpAQk,13416
15
+ skeleton/infrastructure/bootstrap/src/commands/client/install.py,sha256=2YvYu7oKdMKyTUSfedS1CvVVs_WfLP2u6KadjWxnAeI,2893
16
+ skeleton/infrastructure/bootstrap/src/commands/dev/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
17
+ skeleton/infrastructure/bootstrap/src/commands/dev/build.py,sha256=76nhdorZtlXUIPVO89THOi3knOUdcNPTYnwO-Z2xfvA,2157
18
+ skeleton/infrastructure/bootstrap/src/commands/dev/init.py,sha256=qvCUUhMBCdmIZtglra3t4li_8Ghs5rZOu_JPuHhnrwk,2049
19
+ skeleton/infrastructure/bootstrap/src/commands/dev/install.py,sha256=p1gZagECUAb4kVHJyqEMTUmHJa0i6WPBuz2BBdb7q-0,4125
20
+ skeleton/infrastructure/bootstrap/src/commands/dev/pack.py,sha256=OTlUaul-4lJnrCIf5JkOjnpjvk5oB9uzmcNb0kjWjTQ,1376
21
+ skeleton/infrastructure/bootstrap/src/templates/app/backend/requirements.txt,sha256=b233Yr8BnRREw1U4p_kAhEAdEfSV5AOKc6FRkI0dbVU,21
22
+ skeleton/infrastructure/bootstrap/src/templates/app/backend/routes.json,sha256=o_4IjEviqX_jRpB3bJQDuXPDzzSNq3S_9agQ_A1eX28,198
23
+ skeleton/infrastructure/bootstrap/src/templates/app/backend/src/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
24
+ skeleton/infrastructure/bootstrap/src/templates/app/backend/src/main.py,sha256=8lnvh-x1ksFB4TB5xaoY_UFPvHCVFDlN2eS-Vv3RG5s,947
25
+ skeleton/infrastructure/bootstrap/src/templates/app/frontend/package.json,sha256=02-jgPIWQFpYXKCoNbcTPdEMUTz9ByvYRvviUnjzZJA,623
26
+ skeleton/infrastructure/bootstrap/src/templates/app/frontend/skeleton-config.json,sha256=GIe3u0XjBqb-0k8av0ykkBF6TjSvztHovVOXhRn1_qs,586
27
+ skeleton/infrastructure/bootstrap/src/templates/app/frontend/tsconfig.json,sha256=Y_QwGoIBlFfISEfAj3TrMTW5l7yOdrvM3-GKwddaJ8U,2611
28
+ skeleton/infrastructure/bootstrap/src/templates/app/frontend/src/index.html,sha256=bbhlsix3soLFm5vrh-GNU_CiqjjpGjXq_QSYppo4EWo,348
29
+ skeleton/infrastructure/bootstrap/src/templates/app/frontend/src/main.tsx,sha256=SgUpKXfLOs9B7DyqGRlh3N4Cm14K3g-rCJE9LsjtMl0,318
30
+ skeleton/infrastructure/bootstrap/src/templates/app/frontend/src/static/css/styles.css,sha256=hCW-KPwztaYTcNwrsx3tr0xmTEmCQq9sme7y6PJc8qU,373
31
+ skeleton/infrastructure/bootstrap/src/templates/app/frontend/src/static/img/skeleton.png,sha256=yKKjSDqj_FV-YL492NnnfuBukraww9VEFfsNckPKw2U,80501
32
+ skeleton/infrastructure/bootstrap/src/templates/app/frontend/src/static/js/script.js,sha256=o0BlwEasGXt4VddoQhrtHmbJX8L4GlsZ9-ymzNvKgPU,34
33
+ skeleton/infrastructure/bootstrap/src/templates/config/.gitignore,sha256=VpQljPHKZQk92c3EANerwZL2DFYCS58QjFf6GwTE09U,230
34
+ skeleton/infrastructure/bootstrap/src/templates/config/skeleton-dependencies.json,sha256=PHmnRbkmCZo5CIp78kudvJ_mdYsu3X4qqT_zJHQoMA0,511
35
+ skeleton/infrastructure/bootstrap/src/templates/config/skeleton-layout.json,sha256=-bnhMs8l0QPjE0eH8lXQtCRx-6Mhcw2mJ6ivzmtSRgI,169
36
+ skeleton/infrastructure/bootstrap/src/templates/config/skeleton-schemas.json,sha256=4S1Xitcp6QGG2S2UfdpPoSeiPoi0nCy2ACn4hClsMEQ,408
37
+ skeleton/infrastructure/bootstrap/src/templates/config/skeleton-servers.json,sha256=hQ3GGHhy2JDtRlwf7oCeSEMj-qwGVtiYG9sy73tHZaQ,311
38
+ skeleton/infrastructure/common/__init__.py,sha256=shZKw4MkjKu2UCoQtqly7RkI0e_3iVDDoohDNUaBDu8,44
39
+ skeleton/infrastructure/common/config.json,sha256=60-C4K6iGkUGj-EXUqAgGwDga5McNCnDxKq4YJpTvBE,269
40
+ skeleton/infrastructure/common/src/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
41
+ skeleton/infrastructure/common/src/config.py,sha256=6XAsgNkLT81Xu8ijl5fQheRuJGHLdDnM21gmNl9wq9o,985
42
+ skeleton/infrastructure/common/src/constants.py,sha256=pW-ansbaoCXVi0wmhwtsWvcyw0Mn7OzfVRUdyZ0b6yQ,165
43
+ skeleton/infrastructure/common/src/context.py,sha256=hWX4pWhVzFTm7AdfHq68KKGNbbW85FnehjUwayJENZ8,442
44
+ skeleton/infrastructure/common/src/env.py,sha256=h2xuN1gMjGugktlUSzJK8vxcRarBceDOIt2Q-06Lcew,281
45
+ skeleton/infrastructure/common/src/layout.py,sha256=flCvJk6kdePiYG3UpVOvJrjKMjPIi9NNJik-5KcoxaQ,1861
46
+ skeleton/infrastructure/common/src/loader.py,sha256=XpfblWMMvmOLpXD7OXRqGnxl0H8K284p40D0KQilCgI,206
47
+ skeleton/infrastructure/common/src/repository.py,sha256=7h1r0h-hB-7DukEE6CfX-asZWLLFuTm8m4sl4j1-_w0,392
48
+ skeleton/infrastructure/common/src/utils.py,sha256=vryE93jk3a_4areACcRCQkityhXNsyfapiIVzdH-Rek,743
49
+ skeleton/infrastructure/gateway/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
50
+ skeleton/infrastructure/gateway/settings/proxy.json,sha256=1Y1mS6WAo33cORkmYb1K-jTamPiQVf3Cu2UeCPNmJxY,532
51
+ skeleton/infrastructure/gateway/settings/services.json,sha256=QaMZyYpZ-71kcFk39FqQSUF3j2VZsLr1ZqCoX8OFrlU,186
52
+ skeleton/infrastructure/gateway/src/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
53
+ skeleton/infrastructure/gateway/src/app.py,sha256=49TuqO1_witHG2bra1iuAkalfBzb_fGqkuvU7NoR9fU,3010
54
+ skeleton/infrastructure/gateway/src/client.py,sha256=TXiWdEI9vvXtLOt60VDkOLYIDBTOsR7guvV7M3lLuRs,2060
55
+ skeleton/infrastructure/gateway/src/config.py,sha256=MVoSF7bqhlQRFtMZKWyHMOS3kBFHdt1dIQjrQDR8RAc,670
56
+ skeleton/infrastructure/gateway/src/context.py,sha256=11DS2xT3HIJt7sSta9yp5njSMPgGZniDtpY_lVTLHsw,707
57
+ skeleton/infrastructure/gateway/src/headers.py,sha256=u-fqIyMTSrtyvg5Av2ZKYj1whDpr015OdnyzIKlOeCU,339
58
+ skeleton/infrastructure/gateway/src/lifespan.py,sha256=5JPE4Tq4eLjkB9yeV-gVeBoL3a1mj7rUXKiXE7eqFLY,489
59
+ skeleton/infrastructure/gateway/src/loader.py,sha256=VSY4dwMViwS059F9OAJOxLqnLpSygrWGQ-t_zNOTLao,2988
60
+ skeleton/infrastructure/gateway/src/logging.py,sha256=2p1m11QMnMTY1TiYXzOrg7jrwtkMjP2zQPNhUpft7xg,755
61
+ skeleton/infrastructure/gateway/src/main.py,sha256=qb81pnMSwau6B96I3qaJoxjodTJ-Z6wYqqpBqVunsPk,4113
62
+ skeleton/infrastructure/gateway/src/parser.py,sha256=D7iLUZaTBlQTtlD_xj_M1hdozmhz6aUqVbFfLYl5MtY,1368
63
+ skeleton/infrastructure/gateway/src/registry.py,sha256=1OnbBh6M4ZZnx0ERhryIaSeWzNS-8yMzufQOv-c8EhY,807
64
+ skeleton/infrastructure/gateway/src/reverseproxy.py,sha256=7kQiuVWJSXhI_4Qti5tBV7aF62MkNxRcj95-1CstxbU,1557
65
+ skeleton/infrastructure/gateway/src/router.py,sha256=yZv_xNBtbZBewN84F7jEHygVDGDCsFE2AI2YCREoi64,2399
66
+ skeleton/infrastructure/gateway/src/schemas.py,sha256=-CIgLsHjlF6z2_osM6jUvH6dc4LYzQ8Xq27izeBE6wQ,541
67
+ skeleton/infrastructure/gateway/src/service.py,sha256=IcfgifPBO-dLZv3tkY7MCVriRybiJxvzEs4zp_3Ngew,3843
68
+ skeleton/infrastructure/gateway/src/utils.py,sha256=luM8bqHf0V0h2zfvPzH3emo8guWTPbPWfoibj-knJEE,1335
69
+ skeleton/infrastructure/gateway/src/validation.py,sha256=jck-NHstEqii1TYr1hg3Hgpu69UdnHrAA6kg8l5114o,2096
70
+ skeleton/infrastructure/runners/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
71
+ skeleton/infrastructure/runners/src/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
72
+ skeleton/infrastructure/runners/src/actions.py,sha256=Ri_WY8OMqNVZYjTkPKuTbL0WQoeJ78Ej5s6PzDgI-30,64
73
+ skeleton/infrastructure/runners/src/browser.py,sha256=inYDUCb8N1EiKy2FceZJVDbXGh2bxkdtjH9y4YtW2sw,434
74
+ skeleton/infrastructure/runners/src/cmd.py,sha256=vKEfw4ZpR84Y8OyHF4B9F8QN3fwfN_zeEoAN6RG3Rtw,163
75
+ skeleton/infrastructure/runners/src/command.py,sha256=c9Z-sC17RQT_9UOFmSTBFE9oLwCI5WtPy3y1hWE-nqk,166
76
+ skeleton/infrastructure/runners/src/frontend.py,sha256=tuVvSkwaEjB2fu7dQnSMYDSQ3aORFl2P8KQpymyOZ9Q,843
77
+ skeleton/infrastructure/runners/src/gateway.py,sha256=pwv9YLq_7xhEJYErqmlf2RIKzQnJ3iz6JMJHBQMwJ-s,2745
78
+ skeleton/infrastructure/runners/src/hook.py,sha256=jpWmCEkLxOAcWk1M2gnYsugQku871YrnDli-jUsADY4,1523
79
+ skeleton/infrastructure/runners/src/main.py,sha256=qupGXN42VBpqJmPbGjHmXzzR9lrq2Doy39XyoCeGwnU,2109
80
+ skeleton/infrastructure/runners/src/packages.py,sha256=CJI6qhJe856VdN1srB0Vw2jCP75VBHkyIdMqX0T986c,807
81
+ skeleton/infrastructure/runners/src/parser.py,sha256=57SshPvBSoCMnX4LBCeh4m2o9zmIaauysL5VR1TZ08k,1932
82
+ skeleton/infrastructure/runners/src/process.py,sha256=8KkRdJKFUUBZ8mSlnEen4BtTRCWKHARfgP33HHUpbfs,2843
83
+ skeleton/infrastructure/runners/src/services.py,sha256=CZI4Kz888Ur0fHcZF-Rx9EKRhHfZtd_Qg1hDguywOt8,331
84
+ skeleton/infrastructure/runners/src/utils.py,sha256=SqOxvtKYt8MsTPHE9fxR_CxjCgL4SXBtrTHmLep_qmI,148
85
+ skeleton/infrastructure/runners/src/validation.py,sha256=qcEfiE7V3QTWMI9NTCC-q7WvRtugaNzWJ0BVmS2WVD8,818
86
+ skeleton/packages/.skeleton/skeleton-cli-1.0.0.tgz,sha256=qHXeRyleNN8REz6jp9rNVVVYrSe_7CJ6ifxYX_H4nZg,4093
87
+ skeleton/packages/.skeleton/skeleton-webpack-1.0.0.tgz,sha256=qHYI1pvU-kgoiF8OZrAnYaUpLNhuiIezVhD9STob9Fo,5158
88
+ skeleton_framework-0.1.0.dist-info/licenses/LICENSE,sha256=d4pZaAGu-YxzhpwVl5jQeQb4bKiGIBqSopbANTbUKx4,6876
89
+ skeleton_framework-0.1.0.dist-info/METADATA,sha256=m7hmUEq2o5JGcqRueUzfrvpL5CljVc2GK18PBYNvxQU,12801
90
+ skeleton_framework-0.1.0.dist-info/WHEEL,sha256=YVMoNqKzERt-wjUZwJ33xBGAwnFl-4cqbYkTtWa4itE,91
91
+ skeleton_framework-0.1.0.dist-info/entry_points.txt,sha256=NChiQqrPEDdkMfxzTpaFOAfgmKGAIj5o3Egh0HwLpP0,47
92
+ skeleton_framework-0.1.0.dist-info/top_level.txt,sha256=2ls-hT2yeKVYh-Xr9njYfuk65NUGhAkJmf93Uf5G_dM,9
93
+ skeleton_framework-0.1.0.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (84.0.0)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ skeleton = skeleton.cli:main