A rapid prototyping tool for generating containerized backend + frontend CRUD stacks from CSV/SQLite files.
Project description
Sirius-CLI
A rapid prototyping CLI tool designed to take multiple CSV files, Excel spreadsheets, a SQLite database, or a JSON configuration file as inputs, automatically infer their structural schemas and relationships, and generate:
- A production-grade, container-ready FastAPI backend (with SQLAlchemy models, Pydantic v2 validation schemas, and automated Alembic migrations).
- A modular, responsive, multi-page React 18 (TypeScript, Vite, Tailwind CSS) CRUD frontend with dynamic relational selectors and a beautiful Dashboard.
Key Capabilities
- Automatic Relationship Mapping: Automatically extracts foreign keys from databases and resolves CSV/Excel associations using naming heuristics (linking
[table]_idfields), navigating irregular English plurals effortlessly. - Auto-Seeding: Automatically seeds the generated database with the entries inside the source CSV/Excel files during migration (if using SQLite).
- Relational Integrity: Generates dropdowns in the UI for foreign keys and displays badges that navigate to parent entities.
- Enterprise Data Grid: The generated tables feature server-side searching (
?search=), server-side column sorting (?order_by=), and dual data export buttons (CSV and Excel.xlsx). - Dashboard Analytics: A built-in Recharts dashboard showing live dataset distribution and entity insights.
- Multiple Database Engines: Target
SQLitefor rapid local prototyping, or generatePostgreSQLandMySQLready projects out of the box using--pgand--mysql. - Iterative Updates: Use
sirius-updateto safely inject new tables or columns into an existing scaffolded project.
Installation
Install the package directly from PyPI:
pip install sirius-cli
(For local development: clone the repository and run pip install -e .)
Usage: Creating a New Project (sirius-init)
1. Generating from CSVs or Excel
# From CSVs
sirius-init init store_system --csv examples/users.csv --csv examples/orders.csv --theme violet
# From Excel
sirius-init init store_system --excel examples/products.xlsx --theme amber
2. Target Production Databases
By default, the stack uses an embedded SQLite file (app.db). You can target Postgres or MySQL instead:
sirius-init init billing_system --config schema.json --pg
(The generated docker-compose.yml and database.py will expect a DATABASE_URL environment variable).
3. Generating from JSON Configuration
Specify database schemas, relationships, and colors in a JSON file:
{
"project_name": "billing_system",
"theme": "emerald",
"entities": {
"customers": {
"columns": [
{ "name": "id", "type": "Integer", "is_pk": true },
{ "name": "name", "type": "String" },
{ "name": "email", "type": "String" },
{ "name": "is_active", "type": "Boolean" }
]
},
"invoices": {
"columns": [
{ "name": "id", "type": "Integer", "is_pk": true },
{ "name": "ref_no", "type": "String" },
{ "name": "amount", "type": "Float" },
{ "name": "customer_id", "type": "Integer", "foreign_key": "customers.id" },
{ "name": "created_at", "type": "DateTime" }
]
}
}
}
Then run:
sirius-init init billing_system --config examples/billing-config.json
4. Generating with JWT Authentication
Pass the --auth flag to scaffold a secure project. This generates an app_users table, a beautiful Login screen, and protects all FastAPI routes with JWT Bearer tokens automatically.
sirius-init init secure_system --csv examples/users.csv --auth --admin-user "superadmin" --admin-pass "securepass123"
Usage: Updating an Existing Project (update)
If your data requirements change (e.g., adding a reviews table to your store), you don't need to start from scratch. Use the update command to merge new schemas into an existing project.
sirius-init update ./store_system --csv examples/new_reviews.csv
Sirius-CLI will:
- Regenerate your SQLAlchemy models and Pydantic schemas.
- Regenerate your frontend routing and CRUD views.
- Automatically run
alembic revision --autogenerateandalembic upgrade headto apply the database migrations seamlessly.
All CLI Flags
sirius-init / sirius-update
| Flag | Short | Default | Description |
|---|---|---|---|
--csv |
Path to a CSV file (repeatable) | ||
--excel |
Path to an Excel .xlsx/.xls file (repeatable) | ||
--db |
Path to a SQLite .db file | ||
--config |
-c |
Path to a JSON config file | |
--theme |
-t |
blue |
Frontend color theme (blue, indigo, emerald, amber, rose, sky, violet) |
--out |
-o |
. |
Output directory (only for init) |
--port |
-p |
8000 |
Backend port (used in Dockerfile, docker-compose, .env) |
--api-url |
http://localhost:<port> |
Override the frontend VITE_API_URL | |
--no-seed |
false |
Skip seeding the DB from source CSV/Excel files | |
--auth |
false |
Generate JWT authentication logic and a React Login screen | |
--admin-user |
admin |
The default admin username to seed if --auth is enabled |
|
--admin-pass |
admin |
The default admin password to seed if --auth is enabled |
|
--pg |
false |
Generate Postgres connection pool and drivers | |
--mysql |
false |
Generate MySQL connection pool and drivers |
Running the Scaffolded Stack
Using Docker Compose
cd <project_name>
docker compose up --build
Running Locally
- Start Backend:
cd <project_name> pip install -r backend/requirements.txt uvicorn backend.main:app --reload --port 8000
- Start Frontend:
cd <project_name>/frontend npm install npm run dev
Openhttp://localhost:5173/in your browser.
License & Commercial Use
Sirius-CLI is open-source and released under the GNU AGPLv3 License.
This is a strong copyleft license that ensures the project remains free and open. By using this software, you agree that any modifications or larger works incorporating this tool that are distributed or provided as a network service (SaaS) must also be open-sourced under the same AGPLv3 license.
Dual Licensing for Enterprise If your organization wishes to use Sirius-CLI in proprietary, closed-source software without being subject to the open-source requirements of the AGPLv3, a Commercial License is available for purchase. Please contact the maintainer for more details on enterprise licensing.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file sirius_cli-0.2.6.tar.gz.
File metadata
- Download URL: sirius_cli-0.2.6.tar.gz
- Upload date:
- Size: 43.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9f847631c7bd99a3ac4e7003424697beea751e6ea0b3be6f6b0b957faff6ad65
|
|
| MD5 |
dd5f07a195de64783a71ba004ebf19ea
|
|
| BLAKE2b-256 |
2385c51805c4e27319feb7a7f5507f2632e74180e35cc3b98ede549f315ccde8
|
Provenance
The following attestation bundles were made for sirius_cli-0.2.6.tar.gz:
Publisher:
publish.yml on amineaith3/sirius-cli
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
sirius_cli-0.2.6.tar.gz -
Subject digest:
9f847631c7bd99a3ac4e7003424697beea751e6ea0b3be6f6b0b957faff6ad65 - Sigstore transparency entry: 2100805245
- Sigstore integration time:
-
Permalink:
amineaith3/sirius-cli@4019bd0accd56530fc92febb1efc10bcd5897f8e -
Branch / Tag:
refs/tags/v0.2.6 - Owner: https://github.com/amineaith3
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@4019bd0accd56530fc92febb1efc10bcd5897f8e -
Trigger Event:
push
-
Statement type:
File details
Details for the file sirius_cli-0.2.6-py3-none-any.whl.
File metadata
- Download URL: sirius_cli-0.2.6-py3-none-any.whl
- Upload date:
- Size: 50.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
413e4b8d7b03ec118397f60f589038cb16dcbb2a65fff8322270c4cb5c1933f0
|
|
| MD5 |
dd71ca56b346bf59fd36e19eab04a7d2
|
|
| BLAKE2b-256 |
1c48eb8a640b42bc806fcf826f84877ba93f11a4f5657e7037812f5d4ee0cd38
|
Provenance
The following attestation bundles were made for sirius_cli-0.2.6-py3-none-any.whl:
Publisher:
publish.yml on amineaith3/sirius-cli
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
sirius_cli-0.2.6-py3-none-any.whl -
Subject digest:
413e4b8d7b03ec118397f60f589038cb16dcbb2a65fff8322270c4cb5c1933f0 - Sigstore transparency entry: 2100805486
- Sigstore integration time:
-
Permalink:
amineaith3/sirius-cli@4019bd0accd56530fc92febb1efc10bcd5897f8e -
Branch / Tag:
refs/tags/v0.2.6 - Owner: https://github.com/amineaith3
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@4019bd0accd56530fc92febb1efc10bcd5897f8e -
Trigger Event:
push
-
Statement type: