From f9dbd54ca66dec804e5e85646b0bb1b303a39e3b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesu=CC=81s=20Pe=CC=81rez?= Date: Sun, 9 Nov 2025 12:27:37 +0000 Subject: [PATCH] init project --- README.md | 510 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 510 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..a9875c4 --- /dev/null +++ b/README.md @@ -0,0 +1,510 @@ +
+ +Vapora Logo + +- 🌊 Cloud-native project management with AI agents +- 🎯 Kanban workflows with glassmorphism UI +- πŸ€– Unified agent runtime powered by MCP +- ⚑ Built with Rust from backend to frontend + +[![License](https://img.shields.io/badge/license-MIT%2FApache--2.0-blue.svg)](LICENSE) +[![Rust](https://img.shields.io/badge/rust-1.75%2B-orange.svg)](https://www.rust-lang.org) +[![Kubernetes](https://img.shields.io/badge/kubernetes-ready-326CE5.svg)](https://kubernetes.io) +[![Istio](https://img.shields.io/badge/istio-service%20mesh-466BB0.svg)](https://istio.io) + +[Features](#-features) β€’ [Quick Start](#-quick-start) β€’ [Architecture](#-architecture) β€’ [Docs](docs/) β€’ [Contributing](#-contributing) + +
+ --- + + ```txt + ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + ╦ ╦╔═╗╔═╗╔═╗╦═╗╔═╗ + β•šβ•—β•”β•β• β•β•£β• β•β•β•‘ ║╠╦╝╠═╣ + β•šβ• β•© β•©β•© β•šβ•β•β•©β•šβ•β•© β•© + ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + Vaporate complexity + Where ideas vaporize into reality +``` + + ## 🌟 What is Vapora? + + **Vapora** is a next-generation project management platform that combines elegant Kanban workflows with intelligent AI agents. Built entirely in Rust, it offers a cloud-native + architecture designed for teams that demand both beauty and performance. + + ### Key Highlights + + - **🎨 Tron-Inspired UI**: Glassmorphism design with vaporwave aesthetics powered by UnoCSS + - **πŸ€– AI-First**: Unified agent runtime using Model Context Protocol (MCP) + - **πŸš€ Full-Stack Rust**: From frontend (Leptos WASM) to backend (Axum) to infrastructure + - **☁️ Cloud-Agnostic**: Runs on any Kubernetes cluster with Istio service mesh + - **πŸ”Œ Extensible**: Plugin system for custom agents and integrations + - **πŸ”’ Multi-Tenant**: Enterprise-grade isolation with namespace-level security + + --- + + ## ✨ Features + + ### πŸ“‹ Project Management + + - **Kanban Board**: Drag-and-drop tasks across Todo β†’ Doing β†’ Review β†’ Done columns + - **Real-time Collaboration**: Optimistic updates for instant UI feedback + - **Smart Organization**: Feature tags, priority levels, task ordering + - **Responsive Design**: Works seamlessly from mobile to ultra-wide displays + + ### πŸ€– AI Agent Runtime + + - **MCP Gateway Integration**: Unified interface for OpenAI, Claude, and custom agents + - **Plugin Architecture**: Extend functionality with MCP-compatible plugins + - **Built-in Capabilities**: + - πŸ” **Code Analysis**: Tree-sitter parsing + LLM semantic review + - πŸ“š **RAG Search**: Semantic search over knowledge base with local embeddings + - πŸ“ **Doc Generation**: Auto-generate technical documentation from code + - βš™οΈ **Task Execution**: Automate GitHub PRs, Jira updates, webhooks + + ### πŸ—οΈ Infrastructure + + - **Kubernetes Native**: Built for K8s (K3s, RKE2, or vanilla) + - **Istio Service Mesh**: mTLS, circuit breakers, rate limiting out of the box + - **Secrets Management**: RustyVault or Cosmian KMS (Rust-native) + - **Storage**: Rook Ceph for distributed persistent volumes + - **CI/CD**: Tekton Pipelines with Gitea integration + - **Registry**: Zot for lightweight OCI artifact storage + - **Observability**: Prometheus + Grafana + Loki + Tempo + Kiali + + --- + + ## πŸ› οΈ Tech Stack + + ### Backend + +
+  Rust                 Async runtime with Tokio
+  Axum                 Fast, ergonomic web framework
+  SurrealDB            Multi-model database with scopes
+  NATS JetStream       Message queue for agent jobs
+  Rig                  AI agent framework
+
+ + ### Frontend + +
+  Leptos               Reactive Rust WASM framework
+  UnoCSS               Instant on-demand atomic CSS
+  leptos-use           Hooks and utilities
+  thaw                 Component library
+
+ + ### Infrastructure + +
+  Kubernetes           Orchestration (K3s/RKE2)
+  Istio                Service mesh + ingress
+  Rook Ceph            Distributed storage
+  Tekton               Cloud-native CI/CD
+  RustyVault           Secrets management
+  Zot                  OCI registry
+  Gitea                Self-hosted Git
+
+ + ### Agents + +
+  MCP Gateway          Docker MCP gateway for unified agents
+  OpenAI AgentKit      OpenAI agent integration
+  Claude Agent SDK     Anthropic Claude integration
+  fastembed            Local embeddings (privacy-first)
+  tree-sitter          Code parsing
+
+ + --- + + ## πŸš€ Quick Start + + ### Prerequisites + + - **Rust 1.75+** ([rustup](https://rustup.rs)) + - **Node.js 20+** (for UnoCSS) + - **Docker** (for local development) + - **Kubernetes cluster** (for production) + + ### Local Development + + ```bash + # Clone the repository + git clone https://github.com/vapora-platform/vapora + cd vapora + + # Install dependencies + cargo build + + # Setup SurrealDB (Docker) + docker run -d --name surrealdb \ + -p 8000:8000 \ + surrealdb/surrealdb:latest \ + start --bind 0.0.0.0:8000 file://data/database.db + + # Run migrations + cd migrations && surrealdb import --conn http://localhost:8000 *.surql + + # Start backend + cd ../vapora-backend + cargo run + + # Start frontend (new terminal) + cd ../vapora-frontend + trunk serve + + Visit http://localhost:3000 πŸŽ‰ + + Docker Compose (Full Stack) + + docker compose up -d + + Includes: Backend, Frontend, SurrealDB, NATS, MCP Gateway + +``` + + --- + πŸ—οΈ Architecture + +``` + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ Frontend (Leptos + UnoCSS) β”‚ + β”‚ Glassmorphism UI β€’ Kanban Board β€’ Drag & Drop β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + β”‚ + β–Ό + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ Istio Ingress Gateway β”‚ + β”‚ mTLS β€’ Rate Limiting β€’ Circuit Breaker β€’ Telemetry β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + β”‚ + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β–Ό β–Ό β–Ό + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ Axum β”‚ β”‚ Agent β”‚ β”‚ MCP Gateway β”‚ + β”‚ API β”‚ β”‚ Runtime β”‚ β”‚ β”‚ + β””β”€β”€β”€β”¬β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜ + β”‚ β”‚ β”‚ + β”‚ β”‚ β–Ό + β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ β”‚ β”‚ MCP Plugins β”‚ + β”‚ β”‚ β”‚ - Code β”‚ + β”‚ β”‚ β”‚ - RAG β”‚ + β”‚ β”‚ β”‚ - GitHub β”‚ + β”‚ β”‚ β”‚ - Jira β”‚ + β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + β”‚ β”‚ β”‚ + β–Ό β–Ό β–Ό + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ SurrealDB Cluster β”‚ + β”‚ (Rook Ceph Persistent Vol) β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + β”‚ + β–Ό + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ RustyVault / Cosmian KMS β”‚ + β”‚ (Secrets + Key Management) β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ +``` + + Data Flow + + 1. User interacts with Leptos UI (Kanban board) + 2. API calls go through Istio Ingress with mTLS + 3. Axum backend handles CRUD operations + 4. SurrealDB stores projects, tasks, agents (multi-tenant scopes) + 5. Agent jobs queued in NATS JetStream + 6. Agent Runtime invokes MCP Gateway + 7. MCP Gateway routes to OpenAI/Claude with plugin tools + 8. Results streamed back to UI with optimistic updates + + --- + πŸ“Έ Screenshots + + Kanban Board with Glassmorphism + +``` + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ Vapora πŸ” Search Projects Agents + New β”‚ + β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ + β”‚ β”‚ + β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ + β”‚ β”‚ πŸ“Œ TODO πŸ”΅ DOING 🟣 REVIEW βœ… DONE β”‚ β”‚ + β”‚ β”‚ (5) β”‚ (3) β”‚ (2) β”‚ (12) β”‚ β”‚ + β”‚ β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ β”‚ + β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β” β”‚ β”Œβ”€β”€β”€β”€β”€β” β”‚ β”Œβ”€β”€β”€β”€β”€β” β”‚ β”Œβ”€β”€β”€β”€β”€β” β”‚ β”‚ + β”‚ β”‚ β”‚Task β”‚ β”‚ β”‚Task β”‚ β”‚ β”‚Task β”‚ β”‚ β”‚Task β”‚ β”‚ β”‚ + β”‚ β”‚ β”‚Card β”‚ β”‚ β”‚Card β”‚ β”‚ β”‚Card β”‚ β”‚ β”‚Card β”‚ β”‚ β”‚ + β”‚ β”‚ β””β”€β”€β”€β”€β”€β”˜ β”‚ β””β”€β”€β”€β”€β”€β”˜ β”‚ β””β”€β”€β”€β”€β”€β”˜ β”‚ β””β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ + β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ + β”‚ β”‚ Glass β”‚ Neon β”‚ Vapor β”‚ Fluid β”‚ β”‚ + β”‚ β”‚ Blur β”‚ Glow β”‚ Waves β”‚ Motion β”‚ β”‚ + β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ +``` + + Agent Plugin Marketplace + +``` + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ MCP Plugins πŸ”Œ Install New β”‚ + β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ + β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ + β”‚ β”‚ πŸ” Code Analysis Plugin β”‚ β”‚ + β”‚ β”‚ Analyze code with tree-sitter + LLM β”‚ β”‚ + β”‚ β”‚ β€’ Rust, TypeScript, Python β”‚ β”‚ + β”‚ β”‚ β€’ Complexity metrics β”‚ β”‚ + β”‚ β”‚ [βœ“ Installed] β”‚ β”‚ + β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ + β”‚ β”‚ + β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ + β”‚ β”‚ πŸ“š RAG Search Plugin β”‚ β”‚ + β”‚ β”‚ Semantic search over knowledge base β”‚ β”‚ + β”‚ β”‚ β€’ Local embeddings (fastembed) β”‚ β”‚ + β”‚ β”‚ β€’ Top-k retrieval β”‚ β”‚ + β”‚ β”‚ [Install] β”‚ β”‚ + β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + +``` + + --- + πŸ“¦ Project Structure + +``` + vapora/ + β”œβ”€β”€ vapora-backend/ # Axum API server + β”œβ”€β”€ vapora-agents/ # Agent runtime + MCP integration + β”œβ”€β”€ vapora-mcp-plugins/ # MCP plugin collection + β”‚ β”œβ”€β”€ code-plugin/ + β”‚ β”œβ”€β”€ rag-plugin/ + β”‚ β”œβ”€β”€ github-plugin/ + β”‚ └── jira-plugin/ + β”œβ”€β”€ vapora-shared/ # Shared models and utilities + β”œβ”€β”€ vapora-frontend/ # Leptos CSR application + β”œβ”€β”€ kubernetes/ # K8s manifests + β”‚ β”œβ”€β”€ base/ + β”‚ β”œβ”€β”€ overlays/ + β”‚ └── platform/ + β”œβ”€β”€ tekton/ # CI/CD pipelines + β”œβ”€β”€ migrations/ # SurrealDB migrations + └── docs/ # Documentation + +``` + + --- + πŸ”Œ MCP Plugin Development + + Create custom agents with the MCP plugin system: + +```rust + use vapora_mcp::{Plugin, Tool, Resource}; + + #[derive(Plugin)] + pub struct MyCustomPlugin; + + impl Plugin for MyCustomPlugin { + fn name(&self) -> &str { + "my-custom-plugin" + } + + fn tools(&self) -> Vec { + vec![ + Tool::new("my_tool") + .description("Does something cool") + .parameter("input", "string") + ] + } + } + + #[async_trait] + impl ToolExecutor for MyCustomPlugin { + async fn execute_tool( + &self, + tool: &str, + params: serde_json::Value + ) -> Result { + match tool { + "my_tool" => { + // Your logic here + Ok(json!({"result": "success"})) + } + _ => Err(anyhow!("Unknown tool")) + } + } + } + ``` + + See docs/mcp-plugins.md for full guide. + + --- + 🚒 Deployment + + Kubernetes (Production) + +```bash + # Setup cluster with Istio + Rook Ceph + ./scripts/setup-cluster.sh + + # Deploy platform services (Vault, Gitea, Zot, etc.) + ./scripts/deploy-platform.sh + + # Deploy Vapora application + kubectl apply -k kubernetes/overlays/production + + # Create a tenant + ./scripts/create-tenant.sh acme + + Environment Variables + + # Backend + SURREAL_URL=http://surrealdb:8000 + NATS_URL=nats://nats:4222 + MCP_GATEWAY_URL=http://mcp-gateway:8080 + RUSTYVAULT_ADDR=https://rustyvault:8200 + + # Frontend + VITE_API_URL=https://api.vapora.dev + + # Secrets (stored in RustyVault) + OPENAI_API_KEY=sk-... + ANTHROPIC_API_KEY=sk-ant-... +``` + + --- + πŸ§ͺ Testing + +```bash + # Backend tests + cd vapora-backend + cargo test + + # Frontend tests + cd vapora-frontend + cargo test --target wasm32-unknown-unknown + + # Integration tests + cargo test --workspace + + # E2E tests (requires running services) + ./scripts/run-e2e-tests.sh + +``` + + --- + πŸ“Š Monitoring + + Access Grafana dashboards: + + kubectl port-forward -n observability svc/grafana 3000:80 + + Pre-configured dashboards: + - Vapora Overview: Request rates, latencies, errors + - Agent Metrics: Job queue depth, execution times, token usage + - Istio Service Mesh: Traffic flows, mTLS status + - Ceph Storage: Capacity, IOPS, health + + --- + 🀝 Contributing + + We welcome contributions! Please see CONTRIBUTING.md. + + Development Workflow + + 1. Fork the repository + 2. Create a feature branch (git checkout -b feature/amazing) + 3. Commit your changes (git commit -m 'Add amazing feature') + 4. Push to branch (git push origin feature/amazing) + 5. Open a Pull Request + + Code Style + + - Rust: Follow rustfmt and clippy recommendations + - Frontend: Use UnoCSS shortcuts, avoid inline styles + - Commits: Conventional commits (feat:, fix:, docs:, etc.) + + --- + πŸ“„ License + + Dual-licensed under: + + - MIT License (LICENSE-MIT) + - Apache License 2.0 (LICENSE-APACHE) + + You may choose either license. + + --- + πŸ™ Acknowledgments + + Inspired by: + - https://github.com/transcend-engineering/archon - Original glassmorphism UI concept + - https://github.com/docker/mcp-gateway - MCP integration pattern + - https://rook.io - Ceph storage operator + - https://istio.io - Service mesh architecture + + Built with ❀️ using Rust πŸ¦€ + + --- + πŸ”— Links + + - Website: https://vapora.dev + - Documentation: https://docs.vapora.dev + - GitHub: https://github.com/vapora-platform/vapora + - Discord: https://discord.gg/vapora + - Twitter: https://twitter.com/VaporaPlatform + + --- + #readme + + Made with vaporwave dreams and Rust reality ✨ + + --- + Archivos Adicionales Recomendados + + CONTRIBUTING.md + + # Contributing to Vapora + + Thank you for your interest in contributing to Vapora! + + ## Code of Conduct + + Be respectful, inclusive, and constructive. + + ## Development Setup + + See [README.md](README.md#-quick-start) for setup instructions. + + ## Pull Request Process + + 1. Update documentation for any API changes + 2. Add tests for new features + 3. Ensure `cargo clippy` and `cargo fmt` pass + 4. Update CHANGELOG.md + + ## Coding Standards + + - **Rust**: Idiomatic Rust, avoid `unwrap()`, use `?` operator + - **Error Handling**: Use `anyhow::Result` for services, custom errors for API + - **Documentation**: All public items must have doc comments + - **Tests**: Unit tests for services, integration tests for API + + ## Commit Messages + + Follow [Conventional Commits](https://www.conventionalcommits.org/): + + feat: add code analysis plugin + fix: resolve race condition in task reordering + docs: update MCP plugin guide + chore: bump dependencies + + + LICENSE-MIT y LICENSE-APACHE + +--- + +⚠️ **Brand Assets Location**: See [`./imgs/`](./imgs/) for complete brand system including logo variations, color palettes, and interactive preview β†’ [Open Logo Preview](./imgs/vapora_logo.html) + +---