veloiq-framework 0.1.0__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.
- veloiq_framework-0.1.0/PKG-INFO +207 -0
- veloiq_framework-0.1.0/README.md +156 -0
- veloiq_framework-0.1.0/pyproject.toml +94 -0
- veloiq_framework-0.1.0/setup.cfg +4 -0
- veloiq_framework-0.1.0/setup.py +4 -0
- veloiq_framework-0.1.0/veloiq_framework/__init__.py +54 -0
- veloiq_framework-0.1.0/veloiq_framework/_version.py +1 -0
- veloiq_framework-0.1.0/veloiq_framework/api_schema_gen.py +436 -0
- veloiq_framework-0.1.0/veloiq_framework/auth/__init__.py +1 -0
- veloiq_framework-0.1.0/veloiq_framework/auth/admin.py +52 -0
- veloiq_framework-0.1.0/veloiq_framework/auth/models.py +118 -0
- veloiq_framework-0.1.0/veloiq_framework/auth/permissions.py +272 -0
- veloiq_framework-0.1.0/veloiq_framework/auth/router.py +608 -0
- veloiq_framework-0.1.0/veloiq_framework/auth/utils.py +303 -0
- veloiq_framework-0.1.0/veloiq_framework/cli/__init__.py +0 -0
- veloiq_framework-0.1.0/veloiq_framework/cli/db.py +126 -0
- veloiq_framework-0.1.0/veloiq_framework/cli/generate.py +28 -0
- veloiq_framework-0.1.0/veloiq_framework/cli/main.py +32 -0
- veloiq_framework-0.1.0/veloiq_framework/cli/module.py +171 -0
- veloiq_framework-0.1.0/veloiq_framework/cli/new.py +161 -0
- veloiq_framework-0.1.0/veloiq_framework/cli/run.py +69 -0
- veloiq_framework-0.1.0/veloiq_framework/cli/search.py +157 -0
- veloiq_framework-0.1.0/veloiq_framework/config.py +123 -0
- veloiq_framework-0.1.0/veloiq_framework/crud.py +425 -0
- veloiq_framework-0.1.0/veloiq_framework/db.py +47 -0
- veloiq_framework-0.1.0/veloiq_framework/factory.py +521 -0
- veloiq_framework-0.1.0/veloiq_framework/loader.py +290 -0
- veloiq_framework-0.1.0/veloiq_framework/models.py +181 -0
- veloiq_framework-0.1.0/veloiq_framework/scaffold/.windsurfrules +50 -0
- veloiq_framework-0.1.0/veloiq_framework/scaffold/AGENTS.md +50 -0
- veloiq_framework-0.1.0/veloiq_framework/scaffold/CLAUDE.md +116 -0
- veloiq_framework-0.1.0/veloiq_framework/scaffold/backend/.env.example +16 -0
- veloiq_framework-0.1.0/veloiq_framework/scaffold/backend/api_schema_gen.py +11 -0
- veloiq_framework-0.1.0/veloiq_framework/scaffold/backend/app/__init__.py +0 -0
- veloiq_framework-0.1.0/veloiq_framework/scaffold/backend/app/main.py +23 -0
- veloiq_framework-0.1.0/veloiq_framework/scaffold/backend/app/modules/__init__.py +0 -0
- veloiq_framework-0.1.0/veloiq_framework/scaffold/backend/requirements.txt +8 -0
- veloiq_framework-0.1.0/veloiq_framework/scaffold/frontend/index.html +12 -0
- veloiq_framework-0.1.0/veloiq_framework/scaffold/frontend/package.json +33 -0
- veloiq_framework-0.1.0/veloiq_framework/scaffold/frontend/public/i18n/en.json +358 -0
- veloiq_framework-0.1.0/veloiq_framework/scaffold/frontend/public/i18n/es.json +213 -0
- veloiq_framework-0.1.0/veloiq_framework/scaffold/frontend/src/App.tsx +115 -0
- veloiq_framework-0.1.0/veloiq_framework/scaffold/frontend/src/allModels.gen.ts +8 -0
- veloiq_framework-0.1.0/veloiq_framework/scaffold/frontend/src/main.tsx +30 -0
- veloiq_framework-0.1.0/veloiq_framework/scaffold/frontend/vite.config.ts +25 -0
- veloiq_framework-0.1.0/veloiq_framework.egg-info/PKG-INFO +207 -0
- veloiq_framework-0.1.0/veloiq_framework.egg-info/SOURCES.txt +49 -0
- veloiq_framework-0.1.0/veloiq_framework.egg-info/dependency_links.txt +1 -0
- veloiq_framework-0.1.0/veloiq_framework.egg-info/entry_points.txt +2 -0
- veloiq_framework-0.1.0/veloiq_framework.egg-info/requires.txt +38 -0
- veloiq_framework-0.1.0/veloiq_framework.egg-info/top_level.txt +1 -0
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: veloiq-framework
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: VeloIQ™ — AI-native FastAPI + React admin framework. The speed of No-Code. The power of Pro-Code.
|
|
5
|
+
Author-email: JuiceMantics <cesar.lugo.marcos@juicemantics.com>
|
|
6
|
+
License: MIT
|
|
7
|
+
Keywords: fastapi,sqlmodel,admin,framework,AI,ERP
|
|
8
|
+
Classifier: Development Status :: 3 - Alpha
|
|
9
|
+
Classifier: Framework :: FastAPI
|
|
10
|
+
Classifier: Intended Audience :: Developers
|
|
11
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
12
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
15
|
+
Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
|
|
16
|
+
Requires-Python: >=3.10
|
|
17
|
+
Description-Content-Type: text/markdown
|
|
18
|
+
Requires-Dist: fastapi<1.0,>=0.109
|
|
19
|
+
Requires-Dist: uvicorn[standard]>=0.27
|
|
20
|
+
Requires-Dist: python-multipart>=0.0.6
|
|
21
|
+
Requires-Dist: sqlmodel<1.0,>=0.0.14
|
|
22
|
+
Requires-Dist: sqlalchemy<3.0,>=2.0.25
|
|
23
|
+
Requires-Dist: alembic<2.0,>=1.13
|
|
24
|
+
Requires-Dist: pydantic<3.0,>=2.5
|
|
25
|
+
Requires-Dist: pydantic-settings>=2.1
|
|
26
|
+
Requires-Dist: python-jose[cryptography]>=3.3
|
|
27
|
+
Requires-Dist: passlib[bcrypt]>=1.7
|
|
28
|
+
Requires-Dist: sqladmin>=0.16
|
|
29
|
+
Requires-Dist: click>=8.0
|
|
30
|
+
Requires-Dist: python-dotenv>=1.0
|
|
31
|
+
Requires-Dist: typing-extensions>=4.9
|
|
32
|
+
Provides-Extra: postgres
|
|
33
|
+
Requires-Dist: psycopg2-binary>=2.9; extra == "postgres"
|
|
34
|
+
Provides-Extra: ai
|
|
35
|
+
Requires-Dist: openai>=1.0; extra == "ai"
|
|
36
|
+
Requires-Dist: langchain>=0.2; extra == "ai"
|
|
37
|
+
Requires-Dist: langgraph>=0.1; extra == "ai"
|
|
38
|
+
Provides-Extra: analytics
|
|
39
|
+
Requires-Dist: pandas>=2.0; extra == "analytics"
|
|
40
|
+
Requires-Dist: numpy>=1.24; extra == "analytics"
|
|
41
|
+
Requires-Dist: plotly>=5.0; extra == "analytics"
|
|
42
|
+
Requires-Dist: statsmodels>=0.14; extra == "analytics"
|
|
43
|
+
Provides-Extra: all
|
|
44
|
+
Requires-Dist: veloiq-framework[ai,analytics,postgres]; extra == "all"
|
|
45
|
+
Provides-Extra: dev
|
|
46
|
+
Requires-Dist: pytest>=7.0; extra == "dev"
|
|
47
|
+
Requires-Dist: pytest-asyncio>=0.23; extra == "dev"
|
|
48
|
+
Requires-Dist: httpx>=0.26; extra == "dev"
|
|
49
|
+
Requires-Dist: ruff>=0.3; extra == "dev"
|
|
50
|
+
Requires-Dist: mypy>=1.8; extra == "dev"
|
|
51
|
+
|
|
52
|
+
# VeloIQ™ Framework
|
|
53
|
+
|
|
54
|
+
**[veloiq.dev](https://veloiq.dev)**
|
|
55
|
+
|
|
56
|
+
VeloIQ™ is an open-core full-stack framework for building data-driven admin
|
|
57
|
+
and ERP applications. You define your database models in Python SQLModel; the framework
|
|
58
|
+
generates the REST API, the SQLAdmin back-office, and the React CRUD frontend
|
|
59
|
+
automatically.
|
|
60
|
+
|
|
61
|
+
Built on **FastAPI** and **SQLModel** on the backend, and **React**, **Refine**,
|
|
62
|
+
and **Ant Design** on the frontend — battle-tested, well-documented libraries
|
|
63
|
+
trusted by thousands of production teams worldwide.
|
|
64
|
+
|
|
65
|
+
VeloIQ™ is a **pro-code framework**, not a no-code tool. The generated code
|
|
66
|
+
is yours: every FastAPI endpoint, every React component, every SQLModel field is
|
|
67
|
+
plain Python and TypeScript that you can read, extend, and override. The
|
|
68
|
+
framework handles the repetitive scaffolding so you spend your time on the logic
|
|
69
|
+
that makes your application unique — not on boilerplate.
|
|
70
|
+
|
|
71
|
+
```python
|
|
72
|
+
# VeloIQ™ — this is your entire backend entry point.
|
|
73
|
+
from veloiq_framework import create_veloiq_app
|
|
74
|
+
app = create_veloiq_app()
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
```python
|
|
78
|
+
# VeloIQ™ — two related modules: full CRUD and a React UI for both, including the relation.
|
|
79
|
+
from typing import List, Optional
|
|
80
|
+
from sqlmodel import Field
|
|
81
|
+
from veloiq_framework import TimestampedModel, jm_relationship
|
|
82
|
+
|
|
83
|
+
class TeamMember(TimestampedModel, table=True):
|
|
84
|
+
__tablename__ = "team_member"
|
|
85
|
+
name: str
|
|
86
|
+
email: str
|
|
87
|
+
role: str = "member"
|
|
88
|
+
projects: List["Project"] = jm_relationship(back_populates="owner")
|
|
89
|
+
|
|
90
|
+
class Project(TimestampedModel, table=True):
|
|
91
|
+
__tablename__ = "project"
|
|
92
|
+
name: str
|
|
93
|
+
status: str = "active"
|
|
94
|
+
owner_id: Optional[int] = Field(default=None, foreign_key="team_member.id")
|
|
95
|
+
owner: Optional["TeamMember"] = jm_relationship(back_populates="projects")
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
## What the framework provides
|
|
101
|
+
|
|
102
|
+
**Backend** — FastAPI · SQLModel · SQLAdmin · Alembic
|
|
103
|
+
- FastAPI application factory with CORS, JWT auth middleware, and RBAC built in
|
|
104
|
+
- Automatic CRUD router generation (`create_crud_router`) — list, get, create, update, delete
|
|
105
|
+
- Module auto-loader — drop a `models.py` in `app/modules/<name>/` and it's live
|
|
106
|
+
- SQLAdmin back-office at `/admin/` with zero configuration
|
|
107
|
+
- Alembic migrations pre-wired and managed by `veloiq db upgrade`
|
|
108
|
+
- Runs on **Linux**, **macOS**, and **Windows** (native or WSL)
|
|
109
|
+
- Supports **PostgreSQL**, **MySQL**, **SQLite**, and any other SQLAlchemy-compatible database
|
|
110
|
+
|
|
111
|
+
**Access control**
|
|
112
|
+
- Three-layer RBAC: global role permissions → per-model exceptions → per-field exceptions
|
|
113
|
+
- ReBAC (row-level access): filter which rows a user can see based on ownership, tenant, or any relationship
|
|
114
|
+
- Built-in User / Role / Tenant management with a React UI
|
|
115
|
+
|
|
116
|
+
**Frontend** — React · Refine · Ant Design
|
|
117
|
+
- `@veloiq/ui` React component library — schema-driven CRUD pages with no boilerplate
|
|
118
|
+
- Powered by **Refine** for data fetching and state management, and **Ant Design** for the component system
|
|
119
|
+
- **Side panels** — click any list row to open a detail panel beside the list; drag the divider to resize; minimize, maximize, or pop out to a full page
|
|
120
|
+
- **Miller columns tree view** — hierarchical parent/child data renders as an interactive multi-column browser, auto-detected from self-referential model relationships
|
|
121
|
+
- **Relations explorer** — an interactive graph on any record's Show page that visualises all connected records; click any node to navigate directly to it
|
|
122
|
+
- **Analysis charts** — distribution and summary charts appear automatically on relation tables with more than one row; toggle per view, preference saved
|
|
123
|
+
- **Column configuration** — show, hide, and reorder columns in any list or relation table; preferences saved per user
|
|
124
|
+
- **Bulk actions** — select multiple rows for bulk edit, bulk delete, or CSV export
|
|
125
|
+
- Inline sorting, filtering, and global search — all configurable, no code required
|
|
126
|
+
- Light and dark mode, keyboard shortcuts, and responsive layout out of the box
|
|
127
|
+
|
|
128
|
+
**CLI**
|
|
129
|
+
- `veloiq new <app>` — scaffold a new project in seconds
|
|
130
|
+
- `veloiq add-module <name>` — add a module to an existing project
|
|
131
|
+
- `veloiq generate` — regenerate `api.py` and TypeScript schemas from your models
|
|
132
|
+
- `veloiq run` — start the development server
|
|
133
|
+
- `veloiq db upgrade` — apply Alembic migrations
|
|
134
|
+
|
|
135
|
+
---
|
|
136
|
+
|
|
137
|
+
## Five-minute demo
|
|
138
|
+
|
|
139
|
+
See the framework in action without writing any code:
|
|
140
|
+
|
|
141
|
+
```bash
|
|
142
|
+
git clone https://github.com/cesarlugos1s/veloiq.git
|
|
143
|
+
cd veloiq
|
|
144
|
+
bash samples/task-manager/quickstart.sh
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
The script sets up the environment, starts both servers, and opens
|
|
148
|
+
`http://localhost:5173` in your browser — a working task-manager app with
|
|
149
|
+
authentication, RBAC, and a full CRUD UI.
|
|
150
|
+
|
|
151
|
+
See [docs/quickstart.md](docs/quickstart.md) for what to explore once it is running.
|
|
152
|
+
|
|
153
|
+
---
|
|
154
|
+
|
|
155
|
+
## Documentation
|
|
156
|
+
|
|
157
|
+
| Document | Purpose |
|
|
158
|
+
|---|---|
|
|
159
|
+
| [docs/quickstart.md](docs/quickstart.md) | Run the sample app in five minutes and explore RBAC, ReBAC, Miller columns, and the analysis UI |
|
|
160
|
+
| [docs/getting-started.md](docs/getting-started.md) | Install the CLI, scaffold your first project, and understand the key concepts |
|
|
161
|
+
| [docs/tutorial-task-manager.md](docs/tutorial-task-manager.md) | Step-by-step tutorial building a full task manager — seven independent sections you can do in any order |
|
|
162
|
+
| [docs/module-authoring.md](docs/module-authoring.md) | Full reference for models, relations, custom endpoints, RBAC, ReBAC, admin views, and frontend schema customisation |
|
|
163
|
+
| [docs/configuration-reference.md](docs/configuration-reference.md) | Every `VeloIQConfig` field and environment variable |
|
|
164
|
+
| [docs/open-core.md](docs/open-core.md) | Free MIT tier vs Pro/Enterprise — WYSIWYG page builder, User Journeys, VeloIQ AI engine, Advanced ReBAC, SSO, compliance audit logs, and Goal-Seeking Scenarios |
|
|
165
|
+
|
|
166
|
+
**Recommended reading order for new developers:**
|
|
167
|
+
|
|
168
|
+
1. Run `quickstart.sh` and browse the demo app
|
|
169
|
+
2. Read `getting-started.md` to understand the project structure
|
|
170
|
+
3. Work through Section 1 of the tutorial to build your own app
|
|
171
|
+
4. Come back to `module-authoring.md` as a reference when you need details
|
|
172
|
+
|
|
173
|
+
---
|
|
174
|
+
|
|
175
|
+
## Repository layout
|
|
176
|
+
|
|
177
|
+
```
|
|
178
|
+
backend/
|
|
179
|
+
veloiq_framework/ # Framework Python package (pip-installable as veloiq-framework)
|
|
180
|
+
auth/ # Built-in auth: User, Role, Tenant, JWT, RBAC
|
|
181
|
+
cli/ # veloiq CLI commands
|
|
182
|
+
scaffold/ # Templates used by `veloiq new`
|
|
183
|
+
pyproject.toml
|
|
184
|
+
setup.py
|
|
185
|
+
|
|
186
|
+
packages/
|
|
187
|
+
ui/ # @veloiq/ui — React component library
|
|
188
|
+
src/ # TypeScript source
|
|
189
|
+
dist/ # Built output (committed; consumers install from this)
|
|
190
|
+
|
|
191
|
+
docs/ # Framework documentation
|
|
192
|
+
|
|
193
|
+
samples/
|
|
194
|
+
task-manager/ # Complete reference application
|
|
195
|
+
backend/ # FastAPI backend
|
|
196
|
+
frontend/ # React frontend
|
|
197
|
+
quickstart.sh # One-command setup and launch
|
|
198
|
+
start.sh # Re-launch after first run
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
---
|
|
202
|
+
|
|
203
|
+
## License
|
|
204
|
+
|
|
205
|
+
The framework core is released under the **MIT License**.
|
|
206
|
+
Copyright (c) 2026 JuiceMantics.
|
|
207
|
+
See [docs/open-core.md](docs/open-core.md) for the full open-core model.
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
# VeloIQ™ Framework
|
|
2
|
+
|
|
3
|
+
**[veloiq.dev](https://veloiq.dev)**
|
|
4
|
+
|
|
5
|
+
VeloIQ™ is an open-core full-stack framework for building data-driven admin
|
|
6
|
+
and ERP applications. You define your database models in Python SQLModel; the framework
|
|
7
|
+
generates the REST API, the SQLAdmin back-office, and the React CRUD frontend
|
|
8
|
+
automatically.
|
|
9
|
+
|
|
10
|
+
Built on **FastAPI** and **SQLModel** on the backend, and **React**, **Refine**,
|
|
11
|
+
and **Ant Design** on the frontend — battle-tested, well-documented libraries
|
|
12
|
+
trusted by thousands of production teams worldwide.
|
|
13
|
+
|
|
14
|
+
VeloIQ™ is a **pro-code framework**, not a no-code tool. The generated code
|
|
15
|
+
is yours: every FastAPI endpoint, every React component, every SQLModel field is
|
|
16
|
+
plain Python and TypeScript that you can read, extend, and override. The
|
|
17
|
+
framework handles the repetitive scaffolding so you spend your time on the logic
|
|
18
|
+
that makes your application unique — not on boilerplate.
|
|
19
|
+
|
|
20
|
+
```python
|
|
21
|
+
# VeloIQ™ — this is your entire backend entry point.
|
|
22
|
+
from veloiq_framework import create_veloiq_app
|
|
23
|
+
app = create_veloiq_app()
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
```python
|
|
27
|
+
# VeloIQ™ — two related modules: full CRUD and a React UI for both, including the relation.
|
|
28
|
+
from typing import List, Optional
|
|
29
|
+
from sqlmodel import Field
|
|
30
|
+
from veloiq_framework import TimestampedModel, jm_relationship
|
|
31
|
+
|
|
32
|
+
class TeamMember(TimestampedModel, table=True):
|
|
33
|
+
__tablename__ = "team_member"
|
|
34
|
+
name: str
|
|
35
|
+
email: str
|
|
36
|
+
role: str = "member"
|
|
37
|
+
projects: List["Project"] = jm_relationship(back_populates="owner")
|
|
38
|
+
|
|
39
|
+
class Project(TimestampedModel, table=True):
|
|
40
|
+
__tablename__ = "project"
|
|
41
|
+
name: str
|
|
42
|
+
status: str = "active"
|
|
43
|
+
owner_id: Optional[int] = Field(default=None, foreign_key="team_member.id")
|
|
44
|
+
owner: Optional["TeamMember"] = jm_relationship(back_populates="projects")
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## What the framework provides
|
|
50
|
+
|
|
51
|
+
**Backend** — FastAPI · SQLModel · SQLAdmin · Alembic
|
|
52
|
+
- FastAPI application factory with CORS, JWT auth middleware, and RBAC built in
|
|
53
|
+
- Automatic CRUD router generation (`create_crud_router`) — list, get, create, update, delete
|
|
54
|
+
- Module auto-loader — drop a `models.py` in `app/modules/<name>/` and it's live
|
|
55
|
+
- SQLAdmin back-office at `/admin/` with zero configuration
|
|
56
|
+
- Alembic migrations pre-wired and managed by `veloiq db upgrade`
|
|
57
|
+
- Runs on **Linux**, **macOS**, and **Windows** (native or WSL)
|
|
58
|
+
- Supports **PostgreSQL**, **MySQL**, **SQLite**, and any other SQLAlchemy-compatible database
|
|
59
|
+
|
|
60
|
+
**Access control**
|
|
61
|
+
- Three-layer RBAC: global role permissions → per-model exceptions → per-field exceptions
|
|
62
|
+
- ReBAC (row-level access): filter which rows a user can see based on ownership, tenant, or any relationship
|
|
63
|
+
- Built-in User / Role / Tenant management with a React UI
|
|
64
|
+
|
|
65
|
+
**Frontend** — React · Refine · Ant Design
|
|
66
|
+
- `@veloiq/ui` React component library — schema-driven CRUD pages with no boilerplate
|
|
67
|
+
- Powered by **Refine** for data fetching and state management, and **Ant Design** for the component system
|
|
68
|
+
- **Side panels** — click any list row to open a detail panel beside the list; drag the divider to resize; minimize, maximize, or pop out to a full page
|
|
69
|
+
- **Miller columns tree view** — hierarchical parent/child data renders as an interactive multi-column browser, auto-detected from self-referential model relationships
|
|
70
|
+
- **Relations explorer** — an interactive graph on any record's Show page that visualises all connected records; click any node to navigate directly to it
|
|
71
|
+
- **Analysis charts** — distribution and summary charts appear automatically on relation tables with more than one row; toggle per view, preference saved
|
|
72
|
+
- **Column configuration** — show, hide, and reorder columns in any list or relation table; preferences saved per user
|
|
73
|
+
- **Bulk actions** — select multiple rows for bulk edit, bulk delete, or CSV export
|
|
74
|
+
- Inline sorting, filtering, and global search — all configurable, no code required
|
|
75
|
+
- Light and dark mode, keyboard shortcuts, and responsive layout out of the box
|
|
76
|
+
|
|
77
|
+
**CLI**
|
|
78
|
+
- `veloiq new <app>` — scaffold a new project in seconds
|
|
79
|
+
- `veloiq add-module <name>` — add a module to an existing project
|
|
80
|
+
- `veloiq generate` — regenerate `api.py` and TypeScript schemas from your models
|
|
81
|
+
- `veloiq run` — start the development server
|
|
82
|
+
- `veloiq db upgrade` — apply Alembic migrations
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## Five-minute demo
|
|
87
|
+
|
|
88
|
+
See the framework in action without writing any code:
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
git clone https://github.com/cesarlugos1s/veloiq.git
|
|
92
|
+
cd veloiq
|
|
93
|
+
bash samples/task-manager/quickstart.sh
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
The script sets up the environment, starts both servers, and opens
|
|
97
|
+
`http://localhost:5173` in your browser — a working task-manager app with
|
|
98
|
+
authentication, RBAC, and a full CRUD UI.
|
|
99
|
+
|
|
100
|
+
See [docs/quickstart.md](docs/quickstart.md) for what to explore once it is running.
|
|
101
|
+
|
|
102
|
+
---
|
|
103
|
+
|
|
104
|
+
## Documentation
|
|
105
|
+
|
|
106
|
+
| Document | Purpose |
|
|
107
|
+
|---|---|
|
|
108
|
+
| [docs/quickstart.md](docs/quickstart.md) | Run the sample app in five minutes and explore RBAC, ReBAC, Miller columns, and the analysis UI |
|
|
109
|
+
| [docs/getting-started.md](docs/getting-started.md) | Install the CLI, scaffold your first project, and understand the key concepts |
|
|
110
|
+
| [docs/tutorial-task-manager.md](docs/tutorial-task-manager.md) | Step-by-step tutorial building a full task manager — seven independent sections you can do in any order |
|
|
111
|
+
| [docs/module-authoring.md](docs/module-authoring.md) | Full reference for models, relations, custom endpoints, RBAC, ReBAC, admin views, and frontend schema customisation |
|
|
112
|
+
| [docs/configuration-reference.md](docs/configuration-reference.md) | Every `VeloIQConfig` field and environment variable |
|
|
113
|
+
| [docs/open-core.md](docs/open-core.md) | Free MIT tier vs Pro/Enterprise — WYSIWYG page builder, User Journeys, VeloIQ AI engine, Advanced ReBAC, SSO, compliance audit logs, and Goal-Seeking Scenarios |
|
|
114
|
+
|
|
115
|
+
**Recommended reading order for new developers:**
|
|
116
|
+
|
|
117
|
+
1. Run `quickstart.sh` and browse the demo app
|
|
118
|
+
2. Read `getting-started.md` to understand the project structure
|
|
119
|
+
3. Work through Section 1 of the tutorial to build your own app
|
|
120
|
+
4. Come back to `module-authoring.md` as a reference when you need details
|
|
121
|
+
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
## Repository layout
|
|
125
|
+
|
|
126
|
+
```
|
|
127
|
+
backend/
|
|
128
|
+
veloiq_framework/ # Framework Python package (pip-installable as veloiq-framework)
|
|
129
|
+
auth/ # Built-in auth: User, Role, Tenant, JWT, RBAC
|
|
130
|
+
cli/ # veloiq CLI commands
|
|
131
|
+
scaffold/ # Templates used by `veloiq new`
|
|
132
|
+
pyproject.toml
|
|
133
|
+
setup.py
|
|
134
|
+
|
|
135
|
+
packages/
|
|
136
|
+
ui/ # @veloiq/ui — React component library
|
|
137
|
+
src/ # TypeScript source
|
|
138
|
+
dist/ # Built output (committed; consumers install from this)
|
|
139
|
+
|
|
140
|
+
docs/ # Framework documentation
|
|
141
|
+
|
|
142
|
+
samples/
|
|
143
|
+
task-manager/ # Complete reference application
|
|
144
|
+
backend/ # FastAPI backend
|
|
145
|
+
frontend/ # React frontend
|
|
146
|
+
quickstart.sh # One-command setup and launch
|
|
147
|
+
start.sh # Re-launch after first run
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
---
|
|
151
|
+
|
|
152
|
+
## License
|
|
153
|
+
|
|
154
|
+
The framework core is released under the **MIT License**.
|
|
155
|
+
Copyright (c) 2026 JuiceMantics.
|
|
156
|
+
See [docs/open-core.md](docs/open-core.md) for the full open-core model.
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=68", "wheel"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "veloiq-framework"
|
|
7
|
+
version = "0.1.0"
|
|
8
|
+
description = "VeloIQ™ — AI-native FastAPI + React admin framework. The speed of No-Code. The power of Pro-Code."
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
license = { text = "MIT" }
|
|
11
|
+
requires-python = ">=3.10"
|
|
12
|
+
authors = [{ name = "JuiceMantics", email = "cesar.lugo.marcos@juicemantics.com" }]
|
|
13
|
+
keywords = ["fastapi", "sqlmodel", "admin", "framework", "AI", "ERP"]
|
|
14
|
+
classifiers = [
|
|
15
|
+
"Development Status :: 3 - Alpha",
|
|
16
|
+
"Framework :: FastAPI",
|
|
17
|
+
"Intended Audience :: Developers",
|
|
18
|
+
"License :: OSI Approved :: MIT License",
|
|
19
|
+
"Programming Language :: Python :: 3.10",
|
|
20
|
+
"Programming Language :: Python :: 3.11",
|
|
21
|
+
"Programming Language :: Python :: 3.12",
|
|
22
|
+
"Topic :: Software Development :: Libraries :: Application Frameworks",
|
|
23
|
+
]
|
|
24
|
+
|
|
25
|
+
# ── Core dependencies (always installed) ─────────────────────────────────────
|
|
26
|
+
dependencies = [
|
|
27
|
+
"fastapi>=0.109,<1.0",
|
|
28
|
+
"uvicorn[standard]>=0.27",
|
|
29
|
+
"python-multipart>=0.0.6",
|
|
30
|
+
"sqlmodel>=0.0.14,<1.0",
|
|
31
|
+
"sqlalchemy>=2.0.25,<3.0",
|
|
32
|
+
"alembic>=1.13,<2.0",
|
|
33
|
+
"pydantic>=2.5,<3.0",
|
|
34
|
+
"pydantic-settings>=2.1",
|
|
35
|
+
"python-jose[cryptography]>=3.3",
|
|
36
|
+
"passlib[bcrypt]>=1.7",
|
|
37
|
+
"sqladmin>=0.16",
|
|
38
|
+
"click>=8.0",
|
|
39
|
+
"python-dotenv>=1.0",
|
|
40
|
+
"typing-extensions>=4.9",
|
|
41
|
+
]
|
|
42
|
+
|
|
43
|
+
# ── Optional extras ───────────────────────────────────────────────────────────
|
|
44
|
+
[project.optional-dependencies]
|
|
45
|
+
postgres = ["psycopg2-binary>=2.9"]
|
|
46
|
+
ai = [
|
|
47
|
+
"openai>=1.0",
|
|
48
|
+
"langchain>=0.2",
|
|
49
|
+
"langgraph>=0.1",
|
|
50
|
+
]
|
|
51
|
+
analytics = [
|
|
52
|
+
"pandas>=2.0",
|
|
53
|
+
"numpy>=1.24",
|
|
54
|
+
"plotly>=5.0",
|
|
55
|
+
"statsmodels>=0.14",
|
|
56
|
+
]
|
|
57
|
+
all = ["veloiq-framework[postgres,ai,analytics]"]
|
|
58
|
+
dev = [
|
|
59
|
+
"pytest>=7.0",
|
|
60
|
+
"pytest-asyncio>=0.23",
|
|
61
|
+
"httpx>=0.26",
|
|
62
|
+
"ruff>=0.3",
|
|
63
|
+
"mypy>=1.8",
|
|
64
|
+
]
|
|
65
|
+
|
|
66
|
+
# ── CLI entry point ───────────────────────────────────────────────────────────
|
|
67
|
+
[project.scripts]
|
|
68
|
+
veloiq = "veloiq_framework.cli.main:cli"
|
|
69
|
+
|
|
70
|
+
# ── Package discovery ─────────────────────────────────────────────────────────
|
|
71
|
+
[tool.setuptools.packages.find]
|
|
72
|
+
where = ["."]
|
|
73
|
+
include = ["veloiq_framework*"]
|
|
74
|
+
|
|
75
|
+
# Include scaffold templates and static assets in the distribution.
|
|
76
|
+
[tool.setuptools.package-data]
|
|
77
|
+
"veloiq_framework" = [
|
|
78
|
+
"scaffold/**/*",
|
|
79
|
+
"scaffold/**/.*",
|
|
80
|
+
]
|
|
81
|
+
|
|
82
|
+
# ── Ruff (linting) ────────────────────────────────────────────────────────────
|
|
83
|
+
[tool.ruff]
|
|
84
|
+
line-length = 100
|
|
85
|
+
target-version = "py310"
|
|
86
|
+
|
|
87
|
+
[tool.ruff.lint]
|
|
88
|
+
select = ["E", "F", "I", "UP"]
|
|
89
|
+
ignore = ["E501"]
|
|
90
|
+
|
|
91
|
+
# ── Pytest ────────────────────────────────────────────────────────────────────
|
|
92
|
+
[tool.pytest.ini_options]
|
|
93
|
+
asyncio_mode = "auto"
|
|
94
|
+
testpaths = ["tests"]
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"""VeloIQ™ Framework — public API."""
|
|
2
|
+
|
|
3
|
+
from veloiq_framework._version import __version__
|
|
4
|
+
from veloiq_framework.config import VeloIQConfig
|
|
5
|
+
from veloiq_framework.factory import create_veloiq_app
|
|
6
|
+
from veloiq_framework.models import (
|
|
7
|
+
FrameworkModel,
|
|
8
|
+
TimestampedModel,
|
|
9
|
+
StandardModel,
|
|
10
|
+
jm_relationship,
|
|
11
|
+
get_pk_field_name,
|
|
12
|
+
RelationCardinality,
|
|
13
|
+
)
|
|
14
|
+
from veloiq_framework.db import get_session
|
|
15
|
+
from veloiq_framework.crud import create_crud_router
|
|
16
|
+
from veloiq_framework.auth.utils import get_current_user, require_role
|
|
17
|
+
from veloiq_framework.auth.permissions import (
|
|
18
|
+
RoleDef,
|
|
19
|
+
model_access,
|
|
20
|
+
veloiq_field,
|
|
21
|
+
rebac,
|
|
22
|
+
rebac_subquery,
|
|
23
|
+
ALL_METHODS,
|
|
24
|
+
WRITE_METHODS,
|
|
25
|
+
READ_METHODS,
|
|
26
|
+
DEFAULT_ROLES,
|
|
27
|
+
)
|
|
28
|
+
|
|
29
|
+
__all__ = [
|
|
30
|
+
"__version__",
|
|
31
|
+
"VeloIQConfig",
|
|
32
|
+
"create_veloiq_app",
|
|
33
|
+
"FrameworkModel",
|
|
34
|
+
"TimestampedModel",
|
|
35
|
+
"StandardModel",
|
|
36
|
+
"jm_relationship",
|
|
37
|
+
"get_pk_field_name",
|
|
38
|
+
"RelationCardinality",
|
|
39
|
+
"get_session",
|
|
40
|
+
"create_crud_router",
|
|
41
|
+
"get_current_user",
|
|
42
|
+
"require_role",
|
|
43
|
+
# Permission primitives — RBAC
|
|
44
|
+
"RoleDef",
|
|
45
|
+
"model_access",
|
|
46
|
+
"veloiq_field",
|
|
47
|
+
"ALL_METHODS",
|
|
48
|
+
"WRITE_METHODS",
|
|
49
|
+
"READ_METHODS",
|
|
50
|
+
"DEFAULT_ROLES",
|
|
51
|
+
# Permission primitives — ReBAC
|
|
52
|
+
"rebac",
|
|
53
|
+
"rebac_subquery",
|
|
54
|
+
]
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.1.0"
|