Skip to main content

Skeleton Framework

Skeleton Logo

Skeleton is a full-stack application orchestration framework that combines Python orchestration, a FastAPI reverse-proxy gateway, a Python backend & TypeScript frontend.

It provides a structured development workflow for configuring, initializing, installing, running & building full-stack applications.

Features

  • Python orchestration for application setup and service execution.
  • FastAPI gateway for centralized request routing and communication with backend services.
  • Python backend for application APIs.
  • TypeScript frontend with Webpack tooling.
  • Configurable project structure through JSON configuration files.
  • Separate environments for framework development and client application dependencies.
  • Command-line tooling for initialization, development, building, and cleanup.

Architecture

Skeleton separates the application into cooperating layers:

Layer Technology
Orchestration and CLI Python
Gateway and backend APIs FastAPI
HTTP server Uvicorn
HTTP communication HTTPX
Frontend TypeScript
Frontend bundling Webpack
Development file watching watchfiles
Dependency management pip and npm

The gateway provides a central entry point for browser requests and coordinates communication between the frontend and backend.

Requirements

Before getting started, install:

  • Python 3.11 or later & pip.
  • Node.js and npm.

Installation

Install Skeleton from PyPI:

python -m pip install skeleton-framework

client-venv

client-pip-install-skeleton-framework

The installed Python distribution provides the skeleton command.

Quickstart

Create or enter an empty directory for your application:

mkdir my-app
cd my-app

Configure the project, initialize its files, and install its dependencies:

skeleton --quickstart

client-venv

This combines the configuration, initialization, and installation stages.

To run the application:

skeleton --start

Follow the terminal output for service startup information and open the application at the configured local address.

Client project workflow

Skeleton also exposes the individual stages when you want to configure the application before installing dependencies.

1. Generate configuration

skeleton --config

client-config-init

This generates the project's configuration files:

  • skeleton-layout.json — defines the application layout.
  • skeleton-dependencies.json — declares frontend and backend dependencies.
  • skeleton-schemas.json — provides schema configuration.
  • skeleton-servers.json — defines server configuration.
  • .gitignore — establishes ignore rules for generated files.

Review and customize these files before initialization if necessary.

2. Initialize the project

skeleton --init

client-config-init

Initialization creates the configured frontend and backend structure from the framework's templates, prepares dependency manifests, and configures the local frontend tooling packages.

3. Install dependencies

skeleton --install

client-install

This installs frontend dependencies using npm and backend Python dependencies into the backend's .venv environment.

4. Start services

skeleton --start

You can also explicitly select services:

skeleton --start frontend gateway --open

client-start

The selected services and runtime options determine which processes are started.

Frontend commands

Run these commands from the client project root:

Command Purpose
skeleton --serve Start the frontend development server.
skeleton --build Build the frontend for distribution.
skeleton --preview Run the configured frontend preview script.
skeleton --clean Remove generated frontend build artifacts.
skeleton --purge Remove frontend build artifacts and disposable development dependencies.

These commands invoke the corresponding scripts defined in the configured frontend directory's package.json.

Default development ports

The default development configuration uses the following ports:

Service Address
Gateway / reverse proxy http://127.0.0.1:8000
Backend API http://127.0.0.1:8080
Frontend development server http://127.0.0.1:3000

The gateway is the normal entry point for browser access.

For example, the test API endpoint can be accessed through:

http://127.0.0.1:8000/api/test

The corresponding backend endpoint may be available directly at:

http://127.0.0.1:8080/test

Actual routes depend on the application's server and gateway configuration.

Project structure

A generated client project follows the configured layout.

A typical structure is:

my-app/
├── skeleton-layout.json
├── skeleton-dependencies.json
├── skeleton-schemas.json
├── skeleton-servers.json
├── frontend/
├── backend/
└── .skeleton/

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.

The exact structure depends on the project's configuration.

Cleanup

Run skeleton --clean to remove generated frontend build outputs.

Run skeleton --purge if you want to remove the generated build outputs & disposable frontend development dependencies.

Warning:

Purging is destructive

It may remove node_modules, lockfiles, and generated local tooling artifacts.

Dependencies may need to be installed again.

Troubleshooting

The command is not found

Confirm that Skeleton is installed in the Python environment whose scripts directory is available on your terminal's PATH.

python -m pip show skeleton-framework

Frontend or backend dependencies are missing

From the client project root, run:

skeleton --install

If the project has not yet been initialized, run skeleton --config followed by skeleton --init first.

Application startup fails

Check that:

  • The project has been configured and initialized skeleton-layout.json
  • Dependencies have been installed skeleton-dependencies.json
  • The selected services are included in the startup command.
  • The required ports are available skeleton-servers.json.
  • The server configuration matches the configured project layout.

Framework tooling packages are missing

If working directly from the framework source repository, run the framework's packaging command before initializing a client project:

python run.py --pack

Framework development

These commands are intended for contributors working in the Skeleton framework source repository, not ordinary client projects.

Initialize the framework development environment:

python run.py --bootstrap

Prepare the framework's distributable tooling packages:

python run.py --pack

Build the Python distribution:

python run.py --build

Additional development and cleanup commands are available:

python run.py --init
python run.py --install
python run.py --clean
python run.py --purge

The framework's Python development environment and root requirements.txt are separate from the environments created for client applications.

Project status

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.

Framework development

These commands are intended for contributors working in the Skeleton framework source repository, not ordinary client projects.

To get the skeleton framework onto your local machine for development, clone:

https://github.com/lambdadotjoburg/skeleton.git

dev-clone

Initialize the framework development environment

python run.py --bootstrap

dev-bootstrap

This combines --init and --install to initialize and install the framework's development environment.

Build the framework distribution

python run.py --dist

dev-dist

This combines --pack and --build.

It prepares the distributable tooling packages & builds the Python distribution in dist/.

Cleanup

python run.py --clean
python run.py --purge

The framework's Python development environment and root requirements.txt are preserved by framework cleanup.

Framework Developer: Testing a Local Installation

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.

1. Build the distribution

From the framework repository root:

python run.py --dist

The generated wheel will be located in the framework's dist/ directory.

2. Create a separate test project

From the framework repository root, create a sibling directory outside the framework source tree:

mkdir -p ../skeleton-test-project
cd ../skeleton-test-project

3. Create and activate the test environment

python -m venv .venv
source .venv/Scripts/activate

On macOS or Linux, use:

source .venv/bin/activate

4. Install the locally built wheel

From the test project directory:

python -m pip install --force-reinstall ../framework/dist/skeleton_framework-0.1.0-py3-none-any.whl

Adjust the relative path, wheel filename & version to match your framework checkout and build output.

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 only when those dependencies are already available in the environment, otherwise, omit --no-deps.

5. Verify the installation

python -m pip show skeleton-framework
python -m pip show -f skeleton-framework

The first command displays the installed distribution's metadata. The second lists its installed files.

6. Test the installed CLI

From the test project root, run the complete client setup:

skeleton --quickstart

Then start the application:

skeleton --start

Alternatively, test the individual setup stages:

skeleton --config
skeleton --init
skeleton --install
skeleton --start

You can also test the remaining client commands:

skeleton --serve
skeleton --build
skeleton --preview
skeleton --clean
skeleton --purge

7. Test framework changes

Whenever you modify the framework, rebuild the distribution from the framework repository:

python run.py --dist

Then reinstall the newly built wheel in the test project's virtual environment using the installation command above.

This workflow lets you test packaging, bundled tooling, configuration files, templates, & CLI behavior without running the client project directly from the framework source tree.

Important:

The framework development environment and the test project's .venv are independent.

Install the locally built wheel into the test environment & run the client commands from the test project directory.

Licence

Skeleton Framework is proprietary software. Copyright © 2026 lambdadotjoburg. All rights reserved.

The source code is publicly available for inspection, but public availability does not grant unrestricted rights to use, modify, or redistribute the framework.

Personal learning, educational activities, and non-commercial experimentation are permitted under the terms of the root LICENSE file.

Commercial use requires a separate paid licence from the copyright holder. Redistribution requires prior written permission.

Third-party dependencies remain subject to their respective licences.

For commercial licensing, redistribution requests, or other permissions, contact lambdadotjoburg@gmail.com.

See the LICENSE file for the complete terms.

Metadata

Release files for skeleton-framework 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for skeleton-framework 0.1.1
File Size Uploaded Provenance
skeleton_framework-0.1.1.tar.gz 126.2 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for skeleton-framework 0.1.1
File Interpreter ABI Platform
skeleton_framework-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 267.3 kB

Release files / skeleton_framework-0.1.1.tar.gz

Download URL skeleton_framework-0.1.1.tar.gz
Size 126.2 kB
Tags Source
SHA-256 checksum
How to use checksums
601ab00b1c347e05e407e509d161ed90bb81345d9739d632a91a675252bd166a
BLAKE2b-256 checksum
How to use checksums
b6143a20617a93249544605e50a5e897f51c45f4077bd410fb2fa15c05057870
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.3

Release files / skeleton_framework-0.1.1-py3-none-any.whl

Download URL skeleton_framework-0.1.1-py3-none-any.whl
Size 141.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
73916abfd467595d7d90267ef59518f38591b0251c1e9e57cc1957728243bd4c
BLAKE2b-256 checksum
How to use checksums
b9544a46bb347d4aca8da7b76d6c459e953a5a096b79087f6d42b20c42234592
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.3

Security for skeleton-framework 0.1.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page