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.
Files changed (51) hide show
  1. veloiq_framework-0.1.0/PKG-INFO +207 -0
  2. veloiq_framework-0.1.0/README.md +156 -0
  3. veloiq_framework-0.1.0/pyproject.toml +94 -0
  4. veloiq_framework-0.1.0/setup.cfg +4 -0
  5. veloiq_framework-0.1.0/setup.py +4 -0
  6. veloiq_framework-0.1.0/veloiq_framework/__init__.py +54 -0
  7. veloiq_framework-0.1.0/veloiq_framework/_version.py +1 -0
  8. veloiq_framework-0.1.0/veloiq_framework/api_schema_gen.py +436 -0
  9. veloiq_framework-0.1.0/veloiq_framework/auth/__init__.py +1 -0
  10. veloiq_framework-0.1.0/veloiq_framework/auth/admin.py +52 -0
  11. veloiq_framework-0.1.0/veloiq_framework/auth/models.py +118 -0
  12. veloiq_framework-0.1.0/veloiq_framework/auth/permissions.py +272 -0
  13. veloiq_framework-0.1.0/veloiq_framework/auth/router.py +608 -0
  14. veloiq_framework-0.1.0/veloiq_framework/auth/utils.py +303 -0
  15. veloiq_framework-0.1.0/veloiq_framework/cli/__init__.py +0 -0
  16. veloiq_framework-0.1.0/veloiq_framework/cli/db.py +126 -0
  17. veloiq_framework-0.1.0/veloiq_framework/cli/generate.py +28 -0
  18. veloiq_framework-0.1.0/veloiq_framework/cli/main.py +32 -0
  19. veloiq_framework-0.1.0/veloiq_framework/cli/module.py +171 -0
  20. veloiq_framework-0.1.0/veloiq_framework/cli/new.py +161 -0
  21. veloiq_framework-0.1.0/veloiq_framework/cli/run.py +69 -0
  22. veloiq_framework-0.1.0/veloiq_framework/cli/search.py +157 -0
  23. veloiq_framework-0.1.0/veloiq_framework/config.py +123 -0
  24. veloiq_framework-0.1.0/veloiq_framework/crud.py +425 -0
  25. veloiq_framework-0.1.0/veloiq_framework/db.py +47 -0
  26. veloiq_framework-0.1.0/veloiq_framework/factory.py +521 -0
  27. veloiq_framework-0.1.0/veloiq_framework/loader.py +290 -0
  28. veloiq_framework-0.1.0/veloiq_framework/models.py +181 -0
  29. veloiq_framework-0.1.0/veloiq_framework/scaffold/.windsurfrules +50 -0
  30. veloiq_framework-0.1.0/veloiq_framework/scaffold/AGENTS.md +50 -0
  31. veloiq_framework-0.1.0/veloiq_framework/scaffold/CLAUDE.md +116 -0
  32. veloiq_framework-0.1.0/veloiq_framework/scaffold/backend/.env.example +16 -0
  33. veloiq_framework-0.1.0/veloiq_framework/scaffold/backend/api_schema_gen.py +11 -0
  34. veloiq_framework-0.1.0/veloiq_framework/scaffold/backend/app/__init__.py +0 -0
  35. veloiq_framework-0.1.0/veloiq_framework/scaffold/backend/app/main.py +23 -0
  36. veloiq_framework-0.1.0/veloiq_framework/scaffold/backend/app/modules/__init__.py +0 -0
  37. veloiq_framework-0.1.0/veloiq_framework/scaffold/backend/requirements.txt +8 -0
  38. veloiq_framework-0.1.0/veloiq_framework/scaffold/frontend/index.html +12 -0
  39. veloiq_framework-0.1.0/veloiq_framework/scaffold/frontend/package.json +33 -0
  40. veloiq_framework-0.1.0/veloiq_framework/scaffold/frontend/public/i18n/en.json +358 -0
  41. veloiq_framework-0.1.0/veloiq_framework/scaffold/frontend/public/i18n/es.json +213 -0
  42. veloiq_framework-0.1.0/veloiq_framework/scaffold/frontend/src/App.tsx +115 -0
  43. veloiq_framework-0.1.0/veloiq_framework/scaffold/frontend/src/allModels.gen.ts +8 -0
  44. veloiq_framework-0.1.0/veloiq_framework/scaffold/frontend/src/main.tsx +30 -0
  45. veloiq_framework-0.1.0/veloiq_framework/scaffold/frontend/vite.config.ts +25 -0
  46. veloiq_framework-0.1.0/veloiq_framework.egg-info/PKG-INFO +207 -0
  47. veloiq_framework-0.1.0/veloiq_framework.egg-info/SOURCES.txt +49 -0
  48. veloiq_framework-0.1.0/veloiq_framework.egg-info/dependency_links.txt +1 -0
  49. veloiq_framework-0.1.0/veloiq_framework.egg-info/entry_points.txt +2 -0
  50. veloiq_framework-0.1.0/veloiq_framework.egg-info/requires.txt +38 -0
  51. 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,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1,4 @@
1
+ # Compatibility shim — lets `pip install -e .` work with older pip versions
2
+ # that don't support the PEP 660 build_editable hook.
3
+ from setuptools import setup
4
+ setup()
@@ -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"