Host your own Fract source.
-
Admin panel to add, edit, and delete packages.
-
Multiple versions per package.
-
Multiple architectures per version.
-
JSON-based storage (
packages.json) indata/folder. -
Configurable via
config.json:- Admin login credentials
- Host and port
- Debug mode
- Base directory for shared files
-
API endpoints to retrieve package data:
/package/{name}/{version}/{architecture}/latest/{name}
- Clone the repository
git clone https://github.com/Fizz-Org/your-repo.git
cd your-repo- Install dependencies
pip install flask flask-basicauth- Prepare the data folder and JSON
The app automatically creates the data/ folder and a blank packages.json if they don’t exist.
- Create
config.json
Example:
{
"admin-username": "admin",
"admin-password": "password",
"host": "0.0.0.0",
"port": 5000,
"debug": true,
"base-dir": "shared"
}- Run the Flask app
python app.py- Access the admin panel
Open your browser:
http://localhost:5000/admin
Default login (change in config.json):
- Username:
admin - Password:
password
- Manage packages
- Add packages with multiple versions and architectures.
- Edit existing packages to add more versions/arches.
- Delete packages if needed.
- API endpoints
- Get specific package:
/package/{name}/{version}/{architecture}
- Get latest version of a package:
/latest/{name}
A package entry looks like this:
{
"ezcmd": {
"name": "Package",
"latest": "1.0",
"description": "A great package!",
"versions": {
"1.0": {
"any": {
"path": "https://fract-source.example.com/files/package.deb",
"sha256": "76922b2209e762134556c60cccd438f437d70fbf77c6b7bbf543539540b8295e",
"filename": "package.deb"
}
}
}
}
}versionscan contain multiple versions.- Each version can have multiple architectures (e.g.,
any,amd64,arm64).
- The admin panel only requires a browser and basic authentication.
- The project is lightweight, uses JSON for storage, and is easily extendable.
- Make sure the
base-dirinconfig.jsonexists or will be created automatically if needed.