vorte 1.0.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.
- vorte-1.0.0/LICENSE +21 -0
- vorte-1.0.0/PKG-INFO +133 -0
- vorte-1.0.0/README.md +74 -0
- vorte-1.0.0/pyproject.toml +85 -0
- vorte-1.0.0/setup.cfg +4 -0
- vorte-1.0.0/setup.py +50 -0
- vorte-1.0.0/vorte/__init__.py +97 -0
- vorte-1.0.0/vorte/cli/__init__.py +5 -0
- vorte-1.0.0/vorte/cli/main.py +959 -0
- vorte-1.0.0/vorte/core/__init__.py +27 -0
- vorte-1.0.0/vorte/core/app.py +663 -0
- vorte-1.0.0/vorte/core/config.py +281 -0
- vorte-1.0.0/vorte/core/di.py +234 -0
- vorte-1.0.0/vorte/core/module.py +259 -0
- vorte-1.0.0/vorte/core/response.py +264 -0
- vorte-1.0.0/vorte/core/router.py +148 -0
- vorte-1.0.0/vorte/middleware/__init__.py +10 -0
- vorte-1.0.0/vorte/middleware/error_handler.py +28 -0
- vorte-1.0.0/vorte/middleware/request_timing.py +17 -0
- vorte-1.0.0/vorte/modules/__init__.py +47 -0
- vorte-1.0.0/vorte/modules/agents/__init__.py +98 -0
- vorte-1.0.0/vorte/modules/agents/agent.py +564 -0
- vorte-1.0.0/vorte/modules/agents/guardrails.py +147 -0
- vorte-1.0.0/vorte/modules/agents/memory.py +475 -0
- vorte-1.0.0/vorte/modules/agents/module.py +198 -0
- vorte-1.0.0/vorte/modules/agents/orchestrator.py +579 -0
- vorte-1.0.0/vorte/modules/agents/pipeline.py +650 -0
- vorte-1.0.0/vorte/modules/agents/prompts.py +105 -0
- vorte-1.0.0/vorte/modules/agents/rag.py +475 -0
- vorte-1.0.0/vorte/modules/agents/tools.py +504 -0
- vorte-1.0.0/vorte/modules/ai/__init__.py +109 -0
- vorte-1.0.0/vorte/modules/ai/client.py +586 -0
- vorte-1.0.0/vorte/modules/ai/cost_tracker.py +336 -0
- vorte-1.0.0/vorte/modules/ai/embeddings.py +251 -0
- vorte-1.0.0/vorte/modules/ai/module.py +245 -0
- vorte-1.0.0/vorte/modules/ai/providers/__init__.py +19 -0
- vorte-1.0.0/vorte/modules/ai/providers/anthropic.py +358 -0
- vorte-1.0.0/vorte/modules/ai/providers/base.py +85 -0
- vorte-1.0.0/vorte/modules/ai/providers/gemini.py +346 -0
- vorte-1.0.0/vorte/modules/ai/providers/mistral.py +296 -0
- vorte-1.0.0/vorte/modules/ai/providers/openai.py +308 -0
- vorte-1.0.0/vorte/modules/ai/providers/registry.py +196 -0
- vorte-1.0.0/vorte/modules/ai/schemas.py +295 -0
- vorte-1.0.0/vorte/modules/ai/streaming.py +320 -0
- vorte-1.0.0/vorte/modules/auth/__init__.py +54 -0
- vorte-1.0.0/vorte/modules/auth/api_keys.py +326 -0
- vorte-1.0.0/vorte/modules/auth/guards.py +336 -0
- vorte-1.0.0/vorte/modules/auth/jwt.py +380 -0
- vorte-1.0.0/vorte/modules/auth/mfa.py +390 -0
- vorte-1.0.0/vorte/modules/auth/models.py +343 -0
- vorte-1.0.0/vorte/modules/auth/module.py +304 -0
- vorte-1.0.0/vorte/modules/auth/oauth.py +223 -0
- vorte-1.0.0/vorte/modules/auth/rbac.py +442 -0
- vorte-1.0.0/vorte/modules/auth/schemas.py +315 -0
- vorte-1.0.0/vorte/modules/auth/sessions.py +351 -0
- vorte-1.0.0/vorte/modules/cache/__init__.py +30 -0
- vorte-1.0.0/vorte/modules/cache/cache.py +516 -0
- vorte-1.0.0/vorte/modules/cache/decorators.py +258 -0
- vorte-1.0.0/vorte/modules/cache/l1_memory.py +302 -0
- vorte-1.0.0/vorte/modules/cache/l2_redis.py +418 -0
- vorte-1.0.0/vorte/modules/cache/l3_cdn.py +318 -0
- vorte-1.0.0/vorte/modules/cache/l4_db.py +431 -0
- vorte-1.0.0/vorte/modules/cache/module.py +119 -0
- vorte-1.0.0/vorte/modules/dashboard/__init__.py +5 -0
- vorte-1.0.0/vorte/modules/dashboard/module.py +118 -0
- vorte-1.0.0/vorte/modules/dashboard/static/404.html +1 -0
- vorte-1.0.0/vorte/modules/dashboard/static/__next.__PAGE__.txt +9 -0
- vorte-1.0.0/vorte/modules/dashboard/static/__next._full.txt +23 -0
- vorte-1.0.0/vorte/modules/dashboard/static/__next._head.txt +6 -0
- vorte-1.0.0/vorte/modules/dashboard/static/__next._index.txt +8 -0
- vorte-1.0.0/vorte/modules/dashboard/static/__next._tree.txt +5 -0
- vorte-1.0.0/vorte/modules/dashboard/static/_next/static/chunks/0.k7yvsa6bmck.js +1 -0
- vorte-1.0.0/vorte/modules/dashboard/static/_next/static/chunks/03~yq9q893hmn.js +1 -0
- vorte-1.0.0/vorte/modules/dashboard/static/_next/static/chunks/0f0e3edvi~g7a.js +5 -0
- vorte-1.0.0/vorte/modules/dashboard/static/_next/static/chunks/0hidhenro5qz..js +1 -0
- vorte-1.0.0/vorte/modules/dashboard/static/_next/static/chunks/0k~u_jyibvj9b.js +31 -0
- vorte-1.0.0/vorte/modules/dashboard/static/_next/static/chunks/0neevhl_o1ozu.css +2 -0
- vorte-1.0.0/vorte/modules/dashboard/static/_next/static/chunks/0pjew48sfwghj.js +26 -0
- vorte-1.0.0/vorte/modules/dashboard/static/_next/static/chunks/0wnud6qnj8g2-.js +1 -0
- vorte-1.0.0/vorte/modules/dashboard/static/_next/static/chunks/0x37azccnzmn9.css +1 -0
- vorte-1.0.0/vorte/modules/dashboard/static/_next/static/chunks/0~_1x27hmki5g.js +1 -0
- vorte-1.0.0/vorte/modules/dashboard/static/_next/static/chunks/turbopack-0dsxmtxq9y3yu.js +1 -0
- vorte-1.0.0/vorte/modules/dashboard/static/_next/static/media/4fa387ec64143e14-s.0q3udbd2bu5yp.woff2 +0 -0
- vorte-1.0.0/vorte/modules/dashboard/static/_next/static/media/7178b3e590c64307-s.11.cyxs5p-0z~.woff2 +0 -0
- vorte-1.0.0/vorte/modules/dashboard/static/_next/static/media/797e433ab948586e-s.p.0.q-h669a_dqa.woff2 +0 -0
- vorte-1.0.0/vorte/modules/dashboard/static/_next/static/media/8a480f0b521d4e75-s.06d3mdzz5bre_.woff2 +0 -0
- vorte-1.0.0/vorte/modules/dashboard/static/_next/static/media/bbc41e54d2fcbd21-s.0gw~uztddq1df.woff2 +0 -0
- vorte-1.0.0/vorte/modules/dashboard/static/_next/static/media/caa3a2e1cccd8315-s.p.16t1db8_9y2o~.woff2 +0 -0
- vorte-1.0.0/vorte/modules/dashboard/static/_next/static/vorte-build/_buildManifest.js +11 -0
- vorte-1.0.0/vorte/modules/dashboard/static/_next/static/vorte-build/_clientMiddlewareManifest.js +1 -0
- vorte-1.0.0/vorte/modules/dashboard/static/_next/static/vorte-build/_ssgManifest.js +1 -0
- vorte-1.0.0/vorte/modules/dashboard/static/_not-found/__next._full.txt +19 -0
- vorte-1.0.0/vorte/modules/dashboard/static/_not-found/__next._head.txt +6 -0
- vorte-1.0.0/vorte/modules/dashboard/static/_not-found/__next._index.txt +8 -0
- vorte-1.0.0/vorte/modules/dashboard/static/_not-found/__next._not-found/__PAGE__.txt +5 -0
- vorte-1.0.0/vorte/modules/dashboard/static/_not-found/__next._not-found.txt +5 -0
- vorte-1.0.0/vorte/modules/dashboard/static/_not-found/__next._tree.txt +3 -0
- vorte-1.0.0/vorte/modules/dashboard/static/_not-found.html +1 -0
- vorte-1.0.0/vorte/modules/dashboard/static/_not-found.txt +19 -0
- vorte-1.0.0/vorte/modules/dashboard/static/api +1 -0
- vorte-1.0.0/vorte/modules/dashboard/static/index.html +1 -0
- vorte-1.0.0/vorte/modules/dashboard/static/index.txt +23 -0
- vorte-1.0.0/vorte/modules/dashboard/static/logo.svg +29 -0
- vorte-1.0.0/vorte/modules/dashboard/static/robots.txt +14 -0
- vorte-1.0.0/vorte/modules/database/__init__.py +94 -0
- vorte-1.0.0/vorte/modules/database/connection.py +275 -0
- vorte-1.0.0/vorte/modules/database/migrations.py +736 -0
- vorte-1.0.0/vorte/modules/database/model.py +436 -0
- vorte-1.0.0/vorte/modules/database/module.py +331 -0
- vorte-1.0.0/vorte/modules/database/pagination.py +303 -0
- vorte-1.0.0/vorte/modules/database/query.py +680 -0
- vorte-1.0.0/vorte/modules/database/seeders.py +299 -0
- vorte-1.0.0/vorte/modules/features/__init__.py +5 -0
- vorte-1.0.0/vorte/modules/features/module.py +157 -0
- vorte-1.0.0/vorte/modules/graphql/__init__.py +5 -0
- vorte-1.0.0/vorte/modules/graphql/module.py +239 -0
- vorte-1.0.0/vorte/modules/i18n/__init__.py +5 -0
- vorte-1.0.0/vorte/modules/i18n/module.py +153 -0
- vorte-1.0.0/vorte/modules/logging/__init__.py +5 -0
- vorte-1.0.0/vorte/modules/logging/module.py +173 -0
- vorte-1.0.0/vorte/modules/mailer/__init__.py +10 -0
- vorte-1.0.0/vorte/modules/mailer/mailer.py +444 -0
- vorte-1.0.0/vorte/modules/mailer/module.py +70 -0
- vorte-1.0.0/vorte/modules/mpesa/__init__.py +21 -0
- vorte-1.0.0/vorte/modules/mpesa/events.py +75 -0
- vorte-1.0.0/vorte/modules/mpesa/module.py +122 -0
- vorte-1.0.0/vorte/modules/mpesa/mpesa.py +418 -0
- vorte-1.0.0/vorte/modules/notifications/__init__.py +10 -0
- vorte-1.0.0/vorte/modules/notifications/module.py +70 -0
- vorte-1.0.0/vorte/modules/notifications/notifier.py +323 -0
- vorte-1.0.0/vorte/modules/payments/__init__.py +5 -0
- vorte-1.0.0/vorte/modules/payments/module.py +258 -0
- vorte-1.0.0/vorte/modules/queue/__init__.py +17 -0
- vorte-1.0.0/vorte/modules/queue/job.py +272 -0
- vorte-1.0.0/vorte/modules/queue/module.py +77 -0
- vorte-1.0.0/vorte/modules/queue/queue.py +222 -0
- vorte-1.0.0/vorte/modules/queue/scheduler.py +392 -0
- vorte-1.0.0/vorte/modules/queue/worker.py +296 -0
- vorte-1.0.0/vorte/modules/search/__init__.py +30 -0
- vorte-1.0.0/vorte/modules/search/module.py +156 -0
- vorte-1.0.0/vorte/modules/search/search.py +700 -0
- vorte-1.0.0/vorte/modules/security/__init__.py +5 -0
- vorte-1.0.0/vorte/modules/security/module.py +249 -0
- vorte-1.0.0/vorte/modules/sockets/__init__.py +8 -0
- vorte-1.0.0/vorte/modules/sockets/events.py +37 -0
- vorte-1.0.0/vorte/modules/sockets/manager.py +197 -0
- vorte-1.0.0/vorte/modules/sockets/module.py +54 -0
- vorte-1.0.0/vorte/modules/sockets/presence.py +5 -0
- vorte-1.0.0/vorte/modules/sockets/rooms.py +8 -0
- vorte-1.0.0/vorte/modules/storage/__init__.py +10 -0
- vorte-1.0.0/vorte/modules/storage/drivers/__init__.py +5 -0
- vorte-1.0.0/vorte/modules/storage/drivers/local.py +111 -0
- vorte-1.0.0/vorte/modules/storage/drivers/s3.py +158 -0
- vorte-1.0.0/vorte/modules/storage/module.py +106 -0
- vorte-1.0.0/vorte/modules/storage/storage.py +181 -0
- vorte-1.0.0/vorte/modules/tenancy/__init__.py +5 -0
- vorte-1.0.0/vorte/modules/tenancy/module.py +163 -0
- vorte-1.0.0/vorte/modules/webhooks/__init__.py +5 -0
- vorte-1.0.0/vorte/modules/webhooks/module.py +148 -0
- vorte-1.0.0/vorte/testing/__init__.py +234 -0
- vorte-1.0.0/vorte.egg-info/PKG-INFO +133 -0
- vorte-1.0.0/vorte.egg-info/SOURCES.txt +164 -0
- vorte-1.0.0/vorte.egg-info/dependency_links.txt +1 -0
- vorte-1.0.0/vorte.egg-info/entry_points.txt +2 -0
- vorte-1.0.0/vorte.egg-info/requires.txt +46 -0
- vorte-1.0.0/vorte.egg-info/top_level.txt +1 -0
vorte-1.0.0/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Vorte Framework
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
vorte-1.0.0/PKG-INFO
ADDED
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: vorte
|
|
3
|
+
Version: 1.0.0
|
|
4
|
+
Summary: The AI-First Python API Framework. Fast, intelligent, and modular.
|
|
5
|
+
Author-email: Vorte Framework <hello@vorte.dev>
|
|
6
|
+
License: MIT
|
|
7
|
+
Keywords: api,framework,ai,fastapi,async,python
|
|
8
|
+
Classifier: Development Status :: 4 - Beta
|
|
9
|
+
Classifier: Intended Audience :: Developers
|
|
10
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
11
|
+
Classifier: Programming Language :: Python :: 3
|
|
12
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
14
|
+
Classifier: Topic :: Internet :: WWW/HTTP :: HTTP Servers
|
|
15
|
+
Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
|
|
16
|
+
Requires-Python: >=3.11
|
|
17
|
+
Description-Content-Type: text/markdown
|
|
18
|
+
License-File: LICENSE
|
|
19
|
+
Requires-Dist: fastapi>=0.115.0
|
|
20
|
+
Requires-Dist: uvicorn[standard]>=0.32.0
|
|
21
|
+
Requires-Dist: pydantic[email]>=2.10.0
|
|
22
|
+
Requires-Dist: sqlalchemy[asyncio]>=2.0.0
|
|
23
|
+
Requires-Dist: asyncpg>=0.30.0
|
|
24
|
+
Requires-Dist: redis>=5.0.0
|
|
25
|
+
Requires-Dist: httpx>=0.28.0
|
|
26
|
+
Requires-Dist: PyJWT>=2.9.0
|
|
27
|
+
Requires-Dist: passlib[bcrypt]>=1.7.4
|
|
28
|
+
Requires-Dist: python-multipart>=0.0.18
|
|
29
|
+
Requires-Dist: alembic>=1.14.0
|
|
30
|
+
Requires-Dist: cryptography>=44.0.0
|
|
31
|
+
Requires-Dist: jinja2>=3.1.0
|
|
32
|
+
Requires-Dist: click>=8.1.0
|
|
33
|
+
Requires-Dist: python-dotenv>=1.0.0
|
|
34
|
+
Requires-Dist: aiosqlite>=0.20.0
|
|
35
|
+
Provides-Extra: full
|
|
36
|
+
Requires-Dist: vorte[ai]; extra == "full"
|
|
37
|
+
Requires-Dist: vorte[mpesa]; extra == "full"
|
|
38
|
+
Requires-Dist: vorte[payments]; extra == "full"
|
|
39
|
+
Requires-Dist: vorte[search]; extra == "full"
|
|
40
|
+
Requires-Dist: vorte[storage]; extra == "full"
|
|
41
|
+
Provides-Extra: ai
|
|
42
|
+
Requires-Dist: openai>=1.60.0; extra == "ai"
|
|
43
|
+
Requires-Dist: anthropic>=0.40.0; extra == "ai"
|
|
44
|
+
Requires-Dist: google-generativeai>=0.8.0; extra == "ai"
|
|
45
|
+
Provides-Extra: mpesa
|
|
46
|
+
Provides-Extra: payments
|
|
47
|
+
Requires-Dist: stripe>=11.0.0; extra == "payments"
|
|
48
|
+
Provides-Extra: search
|
|
49
|
+
Requires-Dist: meilisearch>=0.31.0; extra == "search"
|
|
50
|
+
Provides-Extra: storage
|
|
51
|
+
Requires-Dist: boto3>=1.35.0; extra == "storage"
|
|
52
|
+
Provides-Extra: dev
|
|
53
|
+
Requires-Dist: pytest>=8.0.0; extra == "dev"
|
|
54
|
+
Requires-Dist: pytest-asyncio>=0.24.0; extra == "dev"
|
|
55
|
+
Requires-Dist: httpx>=0.28.0; extra == "dev"
|
|
56
|
+
Requires-Dist: ruff>=0.8.0; extra == "dev"
|
|
57
|
+
Requires-Dist: mypy>=1.13.0; extra == "dev"
|
|
58
|
+
Dynamic: license-file
|
|
59
|
+
|
|
60
|
+
# 🌌 Vorte Framework
|
|
61
|
+
|
|
62
|
+
**The AI-First, Battery-Included Python API Framework.**
|
|
63
|
+
|
|
64
|
+
Vorte is a high-performance Python framework designed for modern web development, with a specific focus on AI agents, real-time monitoring, and seamless developer experience. It bridges the gap between powerful backends and stunning, real-time administrative interfaces.
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## ✨ Key Features
|
|
69
|
+
|
|
70
|
+
- 🚀 **Built-in Dashboard**: A premium Next.js admin panel automatically served at `/vorte/dashboard`.
|
|
71
|
+
- 🧠 **AI-First**: Native support for AI agents, pipelines, and cost tracking out of the box.
|
|
72
|
+
- 🛠️ **Module System**: Highly decoupled architecture—only use what you need.
|
|
73
|
+
- ⚡ **High Performance**: Built on top of FastAPI and Uvicorn for maximum throughput.
|
|
74
|
+
- 📱 **M-Pesa Integration**: First-class support for Safaricom M-Pesa (Daraja) operations.
|
|
75
|
+
- 📊 **Real-time Metrics**: Track traffic, latency, and system health in real-time.
|
|
76
|
+
- 🐳 **Cloud Ready**: Auto-generates Docker and Kubernetes manifests.
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## 🚀 Quick Start
|
|
81
|
+
|
|
82
|
+
### 1. Install Vorte
|
|
83
|
+
```bash
|
|
84
|
+
pip install vorte
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### 2. Scaffold Your Project
|
|
88
|
+
```bash
|
|
89
|
+
vorte new my-awesome-app
|
|
90
|
+
cd my-awesome-app
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### 3. Launch
|
|
94
|
+
```bash
|
|
95
|
+
vorte serve --watch
|
|
96
|
+
```
|
|
97
|
+
Visit `http://localhost:8000/vorte/dashboard` to see your new console!
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
## 🏗️ Architecture
|
|
102
|
+
|
|
103
|
+
Vorte follows a modular "Core + Plugins" architecture. The core provides the engine, while modules handle specific functionality like AI, Database, and Auth.
|
|
104
|
+
|
|
105
|
+
```python
|
|
106
|
+
from vorte import Vorte
|
|
107
|
+
|
|
108
|
+
app = Vorte(auto_load=True)
|
|
109
|
+
|
|
110
|
+
@app.get("/api/v1/hello")
|
|
111
|
+
async def hello():
|
|
112
|
+
return {"message": "Welcome to Vorte!"}
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## 🎨 Dashboard Customization
|
|
118
|
+
|
|
119
|
+
The dashboard is built with **Next.js**, **Tailwind CSS**, and **Framer Motion**. You can find the source in the `src/` directory if you wish to build custom modules or skins.
|
|
120
|
+
|
|
121
|
+
---
|
|
122
|
+
|
|
123
|
+
## 📄 License
|
|
124
|
+
|
|
125
|
+
Vorte is released under the **MIT License**.
|
|
126
|
+
|
|
127
|
+
## 🤝 Contributing
|
|
128
|
+
|
|
129
|
+
We welcome contributions! Please check the issues or submit a pull request.
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
*Built with ❤️ for developers who value speed, aesthetics, and intelligence.*
|
vorte-1.0.0/README.md
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# 🌌 Vorte Framework
|
|
2
|
+
|
|
3
|
+
**The AI-First, Battery-Included Python API Framework.**
|
|
4
|
+
|
|
5
|
+
Vorte is a high-performance Python framework designed for modern web development, with a specific focus on AI agents, real-time monitoring, and seamless developer experience. It bridges the gap between powerful backends and stunning, real-time administrative interfaces.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## ✨ Key Features
|
|
10
|
+
|
|
11
|
+
- 🚀 **Built-in Dashboard**: A premium Next.js admin panel automatically served at `/vorte/dashboard`.
|
|
12
|
+
- 🧠 **AI-First**: Native support for AI agents, pipelines, and cost tracking out of the box.
|
|
13
|
+
- 🛠️ **Module System**: Highly decoupled architecture—only use what you need.
|
|
14
|
+
- ⚡ **High Performance**: Built on top of FastAPI and Uvicorn for maximum throughput.
|
|
15
|
+
- 📱 **M-Pesa Integration**: First-class support for Safaricom M-Pesa (Daraja) operations.
|
|
16
|
+
- 📊 **Real-time Metrics**: Track traffic, latency, and system health in real-time.
|
|
17
|
+
- 🐳 **Cloud Ready**: Auto-generates Docker and Kubernetes manifests.
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## 🚀 Quick Start
|
|
22
|
+
|
|
23
|
+
### 1. Install Vorte
|
|
24
|
+
```bash
|
|
25
|
+
pip install vorte
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
### 2. Scaffold Your Project
|
|
29
|
+
```bash
|
|
30
|
+
vorte new my-awesome-app
|
|
31
|
+
cd my-awesome-app
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
### 3. Launch
|
|
35
|
+
```bash
|
|
36
|
+
vorte serve --watch
|
|
37
|
+
```
|
|
38
|
+
Visit `http://localhost:8000/vorte/dashboard` to see your new console!
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## 🏗️ Architecture
|
|
43
|
+
|
|
44
|
+
Vorte follows a modular "Core + Plugins" architecture. The core provides the engine, while modules handle specific functionality like AI, Database, and Auth.
|
|
45
|
+
|
|
46
|
+
```python
|
|
47
|
+
from vorte import Vorte
|
|
48
|
+
|
|
49
|
+
app = Vorte(auto_load=True)
|
|
50
|
+
|
|
51
|
+
@app.get("/api/v1/hello")
|
|
52
|
+
async def hello():
|
|
53
|
+
return {"message": "Welcome to Vorte!"}
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
## 🎨 Dashboard Customization
|
|
59
|
+
|
|
60
|
+
The dashboard is built with **Next.js**, **Tailwind CSS**, and **Framer Motion**. You can find the source in the `src/` directory if you wish to build custom modules or skins.
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
## 📄 License
|
|
65
|
+
|
|
66
|
+
Vorte is released under the **MIT License**.
|
|
67
|
+
|
|
68
|
+
## 🤝 Contributing
|
|
69
|
+
|
|
70
|
+
We welcome contributions! Please check the issues or submit a pull request.
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
*Built with ❤️ for developers who value speed, aesthetics, and intelligence.*
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=68.0", "wheel"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "vorte"
|
|
7
|
+
version = "1.0.0"
|
|
8
|
+
description = "The AI-First Python API Framework. Fast, intelligent, and modular."
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
license = {text = "MIT"}
|
|
11
|
+
requires-python = ">=3.11"
|
|
12
|
+
authors = [
|
|
13
|
+
{name = "Vorte Framework", email = "hello@vorte.dev"},
|
|
14
|
+
]
|
|
15
|
+
keywords = ["api", "framework", "ai", "fastapi", "async", "python"]
|
|
16
|
+
classifiers = [
|
|
17
|
+
"Development Status :: 4 - Beta",
|
|
18
|
+
"Intended Audience :: Developers",
|
|
19
|
+
"License :: OSI Approved :: MIT License",
|
|
20
|
+
"Programming Language :: Python :: 3",
|
|
21
|
+
"Programming Language :: Python :: 3.11",
|
|
22
|
+
"Programming Language :: Python :: 3.12",
|
|
23
|
+
"Topic :: Internet :: WWW/HTTP :: HTTP Servers",
|
|
24
|
+
"Topic :: Software Development :: Libraries :: Application Frameworks",
|
|
25
|
+
]
|
|
26
|
+
dependencies = [
|
|
27
|
+
"fastapi>=0.115.0",
|
|
28
|
+
"uvicorn[standard]>=0.32.0",
|
|
29
|
+
"pydantic[email]>=2.10.0",
|
|
30
|
+
"sqlalchemy[asyncio]>=2.0.0",
|
|
31
|
+
"asyncpg>=0.30.0",
|
|
32
|
+
"redis>=5.0.0",
|
|
33
|
+
"httpx>=0.28.0",
|
|
34
|
+
"PyJWT>=2.9.0",
|
|
35
|
+
"passlib[bcrypt]>=1.7.4",
|
|
36
|
+
"python-multipart>=0.0.18",
|
|
37
|
+
"alembic>=1.14.0",
|
|
38
|
+
"cryptography>=44.0.0",
|
|
39
|
+
"jinja2>=3.1.0",
|
|
40
|
+
"click>=8.1.0",
|
|
41
|
+
"python-dotenv>=1.0.0",
|
|
42
|
+
"aiosqlite>=0.20.0",
|
|
43
|
+
]
|
|
44
|
+
|
|
45
|
+
[project.optional-dependencies]
|
|
46
|
+
full = [
|
|
47
|
+
"vorte[ai]",
|
|
48
|
+
"vorte[mpesa]",
|
|
49
|
+
"vorte[payments]",
|
|
50
|
+
"vorte[search]",
|
|
51
|
+
"vorte[storage]",
|
|
52
|
+
]
|
|
53
|
+
ai = [
|
|
54
|
+
"openai>=1.60.0",
|
|
55
|
+
"anthropic>=0.40.0",
|
|
56
|
+
"google-generativeai>=0.8.0",
|
|
57
|
+
]
|
|
58
|
+
mpesa = []
|
|
59
|
+
payments = ["stripe>=11.0.0"]
|
|
60
|
+
search = ["meilisearch>=0.31.0"]
|
|
61
|
+
storage = ["boto3>=1.35.0"]
|
|
62
|
+
dev = [
|
|
63
|
+
"pytest>=8.0.0",
|
|
64
|
+
"pytest-asyncio>=0.24.0",
|
|
65
|
+
"httpx>=0.28.0",
|
|
66
|
+
"ruff>=0.8.0",
|
|
67
|
+
"mypy>=1.13.0",
|
|
68
|
+
]
|
|
69
|
+
|
|
70
|
+
[project.scripts]
|
|
71
|
+
vorte = "vorte.cli.main:cli"
|
|
72
|
+
|
|
73
|
+
[tool.setuptools.packages.find]
|
|
74
|
+
include = ["vorte*"]
|
|
75
|
+
|
|
76
|
+
[tool.setuptools.package-data]
|
|
77
|
+
"vorte.modules.dashboard" = ["static/**/*"]
|
|
78
|
+
|
|
79
|
+
[tool.ruff]
|
|
80
|
+
target-version = "py311"
|
|
81
|
+
line-length = 100
|
|
82
|
+
|
|
83
|
+
[tool.pytest.ini_options]
|
|
84
|
+
asyncio_mode = "auto"
|
|
85
|
+
testpaths = ["tests"]
|
vorte-1.0.0/setup.cfg
ADDED
vorte-1.0.0/setup.py
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import os
|
|
2
|
+
import subprocess
|
|
3
|
+
import shutil
|
|
4
|
+
from pathlib import Path
|
|
5
|
+
from setuptools import setup
|
|
6
|
+
from setuptools.command.build_py import build_py
|
|
7
|
+
from setuptools.command.sdist import sdist
|
|
8
|
+
|
|
9
|
+
dashboard_built = False
|
|
10
|
+
|
|
11
|
+
def build_dashboard():
|
|
12
|
+
"""Build the Next.js dashboard and copy to static directory."""
|
|
13
|
+
global dashboard_built
|
|
14
|
+
if dashboard_built:
|
|
15
|
+
return
|
|
16
|
+
|
|
17
|
+
print("Building Vorte Dashboard...")
|
|
18
|
+
setup_dir = Path(__file__).parent
|
|
19
|
+
vorte_dir = setup_dir.parent
|
|
20
|
+
|
|
21
|
+
if not (vorte_dir / "package.json").exists():
|
|
22
|
+
print(f"Warning: Could not find package.json in {vorte_dir}. Skipping dashboard build.")
|
|
23
|
+
return
|
|
24
|
+
|
|
25
|
+
# Run npm run build
|
|
26
|
+
print("Running 'npm run build'...")
|
|
27
|
+
try:
|
|
28
|
+
# Use shell=True for cross-platform compatibility (especially Windows npm)
|
|
29
|
+
subprocess.run(["npm", "run", "build"], cwd=vorte_dir, check=True, shell=True)
|
|
30
|
+
except subprocess.CalledProcessError as e:
|
|
31
|
+
print(f"Error: Dashboard build failed. {e}")
|
|
32
|
+
return
|
|
33
|
+
|
|
34
|
+
# Copy out/ to static/
|
|
35
|
+
out_dir = vorte_dir / "out"
|
|
36
|
+
static_dir = setup_dir / "vorte" / "modules" / "dashboard" / "static"
|
|
37
|
+
|
|
38
|
+
if out_dir.exists():
|
|
39
|
+
if static_dir.exists():
|
|
40
|
+
shutil.rmtree(static_dir)
|
|
41
|
+
shutil.copytree(out_dir, static_dir)
|
|
42
|
+
print(f"Dashboard successfully built and copied to {static_dir}")
|
|
43
|
+
else:
|
|
44
|
+
print("Warning: out/ directory not found after build.")
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
# Run the build before setup() is called so setuptools sees the new files
|
|
48
|
+
build_dashboard()
|
|
49
|
+
|
|
50
|
+
setup()
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Vorte Framework - The AI-First Python API Framework
|
|
3
|
+
=====================================================
|
|
4
|
+
Fast, intelligent, and modular. Built on FastAPI with batteries-included architecture,
|
|
5
|
+
multi-provider AI integration, and production-ready features.
|
|
6
|
+
|
|
7
|
+
Version: 1.0.0
|
|
8
|
+
License: MIT
|
|
9
|
+
|
|
10
|
+
Quick Start:
|
|
11
|
+
from vorte import Vorte
|
|
12
|
+
|
|
13
|
+
# Create app with all 21 modules auto-loaded
|
|
14
|
+
app = Vorte(auto_load=True)
|
|
15
|
+
|
|
16
|
+
# Or cherry-pick modules
|
|
17
|
+
app = Vorte()
|
|
18
|
+
app.register(AuthModule(), AIModule(), CacheModule())
|
|
19
|
+
|
|
20
|
+
import uvicorn
|
|
21
|
+
uvicorn.run(app, host="0.0.0.0", port=8000)
|
|
22
|
+
"""
|
|
23
|
+
|
|
24
|
+
__version__ = "1.0.0"
|
|
25
|
+
__author__ = "Vorte Framework"
|
|
26
|
+
__license__ = "MIT"
|
|
27
|
+
|
|
28
|
+
from vorte.core.app import Vorte
|
|
29
|
+
from vorte.core.module import Module, ModuleRegistry, ModuleMeta, ModuleState, ModulePriority
|
|
30
|
+
from vorte.core.config import Settings, settings
|
|
31
|
+
from vorte.core.response import VorteResponse, success_response, error_response
|
|
32
|
+
from vorte.core.router import router
|
|
33
|
+
from vorte.core.di import Container, Depends, inject
|
|
34
|
+
|
|
35
|
+
# All 21 built-in modules — directly importable
|
|
36
|
+
from vorte.modules.auth import AuthModule
|
|
37
|
+
from vorte.modules.database import DatabaseModule
|
|
38
|
+
from vorte.modules.ai import AIModule
|
|
39
|
+
from vorte.modules.agents import AgentsModule
|
|
40
|
+
from vorte.modules.cache import CacheModule
|
|
41
|
+
from vorte.modules.queue import QueueModule
|
|
42
|
+
from vorte.modules.search import SearchModule
|
|
43
|
+
from vorte.modules.storage import StorageModule
|
|
44
|
+
from vorte.modules.mailer import MailerModule
|
|
45
|
+
from vorte.modules.notifications import NotificationsModule
|
|
46
|
+
from vorte.modules.mpesa import MpesaModule
|
|
47
|
+
from vorte.modules.payments import PaymentsModule
|
|
48
|
+
from vorte.modules.tenancy import MultiTenancyModule
|
|
49
|
+
from vorte.modules.i18n import I18nModule
|
|
50
|
+
from vorte.modules.security import SecurityModule
|
|
51
|
+
from vorte.modules.webhooks import WebhooksModule
|
|
52
|
+
from vorte.modules.features import FeaturesModule
|
|
53
|
+
from vorte.modules.graphql import GraphQLModule
|
|
54
|
+
from vorte.modules.logging import LoggingModule
|
|
55
|
+
from vorte.modules.sockets import SocketModule
|
|
56
|
+
from vorte.modules.dashboard import DashboardModule
|
|
57
|
+
|
|
58
|
+
__all__ = [
|
|
59
|
+
# Core
|
|
60
|
+
"Vorte",
|
|
61
|
+
"Module",
|
|
62
|
+
"ModuleRegistry",
|
|
63
|
+
"ModuleMeta",
|
|
64
|
+
"ModuleState",
|
|
65
|
+
"ModulePriority",
|
|
66
|
+
"Settings",
|
|
67
|
+
"settings",
|
|
68
|
+
"VorteResponse",
|
|
69
|
+
"success_response",
|
|
70
|
+
"error_response",
|
|
71
|
+
"router",
|
|
72
|
+
"Container",
|
|
73
|
+
"Depends",
|
|
74
|
+
"inject",
|
|
75
|
+
# Built-in Modules
|
|
76
|
+
"AuthModule",
|
|
77
|
+
"DatabaseModule",
|
|
78
|
+
"AIModule",
|
|
79
|
+
"AgentsModule",
|
|
80
|
+
"CacheModule",
|
|
81
|
+
"QueueModule",
|
|
82
|
+
"SearchModule",
|
|
83
|
+
"StorageModule",
|
|
84
|
+
"MailerModule",
|
|
85
|
+
"NotificationsModule",
|
|
86
|
+
"MpesaModule",
|
|
87
|
+
"PaymentsModule",
|
|
88
|
+
"MultiTenancyModule",
|
|
89
|
+
"I18nModule",
|
|
90
|
+
"SecurityModule",
|
|
91
|
+
"WebhooksModule",
|
|
92
|
+
"FeaturesModule",
|
|
93
|
+
"GraphQLModule",
|
|
94
|
+
"LoggingModule",
|
|
95
|
+
"SocketModule",
|
|
96
|
+
"DashboardModule",
|
|
97
|
+
]
|