{"id":50614055,"url":"https://github.com/carlosindriago/tramiflow-ce","last_synced_at":"2026-06-06T07:00:26.064Z","repository":{"id":362783949,"uuid":"1260756255","full_name":"carlosindriago/tramiflow-ce","owner":"carlosindriago","description":"Open-source SaaS CRM for legal and general procedure management. Features multi-tenant architecture, dynamic Kanban boards, and a 100% client-side PDF toolkit.","archived":false,"fork":false,"pushed_at":"2026-06-05T22:42:40.000Z","size":2730,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-05T23:11:06.086Z","etag":null,"topics":["crm","kanban","multi-tenant","nextjs","pdf-tools","react","saas","supabase"],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/carlosindriago.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"docs/security.md","support":null,"governance":null,"roadmap":"docs/roadmap.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-06-05T20:52:36.000Z","updated_at":"2026-06-05T22:42:45.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/carlosindriago/tramiflow-ce","commit_stats":null,"previous_names":["carlosindriago/tramiflow-ce"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/carlosindriago/tramiflow-ce","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/carlosindriago%2Ftramiflow-ce","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/carlosindriago%2Ftramiflow-ce/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/carlosindriago%2Ftramiflow-ce/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/carlosindriago%2Ftramiflow-ce/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/carlosindriago","download_url":"https://codeload.github.com/carlosindriago/tramiflow-ce/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/carlosindriago%2Ftramiflow-ce/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33972398,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-06T02:00:07.033Z","response_time":107,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["crm","kanban","multi-tenant","nextjs","pdf-tools","react","saas","supabase"],"created_at":"2026-06-06T07:00:20.935Z","updated_at":"2026-06-06T07:00:26.049Z","avatar_url":"https://github.com/carlosindriago.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"public/window.svg\" alt=\"TramiFlow Logo\" width=\"120\" /\u003e\n  \n  # TramiFlow CE\n  \n  **Open-source SaaS CRM for immigration procedure management**\n  \n  [Live Demo](https://tramiflow-demo.vercel.app) · [Documentation](./docs/README.md) · [Report Bug](../../issues) · [Request Feature](../../issues)\n  \n  ![Next.js](https://img.shields.io/badge/Next.js-14-black?style=flat-square\u0026logo=next.js)\n  ![TypeScript](https://img.shields.io/badge/TypeScript-5-blue?style=flat-square\u0026logo=typescript)\n  ![Supabase](https://img.shields.io/badge/Supabase-DB_%2B_Auth-green?style=flat-square\u0026logo=supabase)\n  ![License](https://img.shields.io/badge/License-AGPL--3.0-blue?style=flat-square)\n\u003c/div\u003e\n\n\u003cbr/\u003e\n\n## 📸 Screenshots\n\n| Kanban \u0026 Procedures | Client Management |\n| :---: | :---: |\n| \u003cimg src=\"docs/design/tramiflow_enterprise_dashboard.png\" width=\"400\"/\u003e | \u003cimg src=\"docs/design/client_detail_-_document_management.png\" width=\"400\"/\u003e |\n\n| Procedure Template Builder | PDF Kit (Client-Side) |\n| :---: | :---: |\n| \u003cimg src=\"docs/design/procedure_template_builder.png\" width=\"400\"/\u003e | \u003cimg src=\"docs/design/login_-_secure_google_access.png\" width=\"400\"/\u003e |\n\n---\n\n## 🎯 What is TramiFlow?\n\nTramiFlow is a flexible, multi-tenant SaaS CRM designed for law firms, consultants, and agencies. While originally conceived for immigration procedures, its dynamic engine allows professionals to manage **workflows and procedures of any kind** with ease, comfort, and strict order. It centralizes client management, procedure tracking (Kanban-based), document handling, and client-facing status pages — all with strict data isolation per organization.\n\nUnlike generic CRMs, TramiFlow includes a **built-in PDF toolkit that runs 100% client-side** (no file uploads to the server for processing), and a visual Template Builder for reusable procedure workflows using a drag \u0026 drop interface.\n\n---\n\n## 💎 Freemium \u0026 Distribution Model\n\nTramiFlow CE (Community Edition) represents the fully functional core of the application. \n\n**Architectural Philosophy:** \nWhile strictly defined \"Open Core\" software often relies on complex dependency injection or git submodules to separate Enterprise features, we opted for a pragmatic **Freemium / Upstream Model** tailored for the Next.js App Router. This repository serves as the clean, unpolluted upstream. The private PRO (SaaS) edition acts as a direct downstream fork that extends this core via isolated Next.js Route Groups (`(pro)`) and server-side feature flags, avoiding the overhead of heavy DI abstractions in the Community Edition.\n\n| Feature | Community (Free) | Pro |\n|---|---|---|\n| Client management | ✅ Unlimited | ✅ |\n| Kanban board (dynamic statuses) | ✅ | ✅ |\n| Template builder | ✅ Basic | ✅ Advanced + Sharing |\n| PDF Kit (6 tools, 100% client-side) | ✅ | ✅ |\n| Smart Documents | ✅ Basic validation | ✅ Re-optimization |\n| Public status page for clients | ✅ | ✅ |\n| Analytics \u0026 Growth module | ❌ | ✅ |\n| Smart Limits \u0026 subscription plans | ❌ | ✅ |\n| Super Admin Panel (Command Vault) | ❌ | ✅ |\n| Priority support | ❌ | ✅ |\n| Self-hosting | ✅ | ✅ |\n| Cloud hosted | ❌ | ✅ |\n\n---\n\n## 🛠 Tech Stack\n\n| Layer | Technology |\n|---|---|\n| **Framework** | Next.js 14 (App Router) |\n| **Language** | TypeScript 5 (strict mode) |\n| **Database \u0026 Auth** | Supabase (PostgreSQL + RLS) |\n| **UI** | Shadcn/UI + Tailwind CSS 4 |\n| **State Management**| TanStack React Query |\n| **Validation** | Zod + React Hook Form |\n| **Drag \u0026 Drop** | `@dnd-kit` |\n| **PDF Processing** | `browser-image-compression` + Canvas API (100% Client-Side) |\n| **OCR** | Tesseract.js (Lazy loaded) |\n\n---\n\n## 🏗 Architecture\n\n```mermaid\ngraph TD\n  Browser --\u003e NextJS[Next.js 14 App Router]\n  NextJS --\u003e ServerActions[Server Actions]\n  NextJS --\u003e APIRoutes[API Routes]\n  ServerActions --\u003e Supabase[(Supabase PostgreSQL)]\n  APIRoutes --\u003e Supabase\n  Supabase --\u003e RLS[Row Level Security]\n  RLS --\u003e OrgIsolation[Organization Isolation]\n  NextJS --\u003e ClientTools[PDF Kit / OCR / Compression]\n  ClientTools --\u003e BrowserOnly[100% Client-Side Processing]\n```\n\n**Design Note:** TramiFlow uses a strict **Row Level Security (RLS)** multi-tenant architecture on a single PostgreSQL database rather than separate databases per tenant. Resource consumption and subscription limits (in the PRO version) are strictly intercepted at the **Server Actions** layer, ensuring the client state is never trusted.\n\n---\n\n## 🚀 Quick Start\n\n### Prerequisites\n- Node.js 18+\n- A [Supabase](https://supabase.com) project (free tier works)\n\n### Installation\n\n```bash\ngit clone https://github.com/carlosindriago/tramiflow-ce.git\ncd tramiflow-ce\nnpm install\ncp .env.example .env.local\n# Fill in your Supabase credentials in .env.local\nnpm run dev\n```\n\nOpen [http://localhost:3000](http://localhost:3000).\n\n📖 For full setup with Supabase migrations, see [LOCAL_SETUP.md](./LOCAL_SETUP.md).\n\n---\n\n## 🗺 Roadmap\n\n- [x] Multi-tenant architecture with RLS\n- [x] Dynamic Kanban with custom statuses\n- [x] PDF Kit (compress, merge, OCR)\n- [x] Smart Documents basic validation\n- [ ] Email notifications (Resend integration)\n- [ ] Mobile app (React Native / Expo)\n- [ ] Webhook system for external integrations\n- [ ] i18n support (PT-BR, EN)\n\n---\n\n## 🤝 Contributing\n\nContributions are welcome! Please read [CONTRIBUTING.md](./CONTRIBUTING.md) for:\n- Branch naming convention\n- Commit message format\n- PR process and review criteria\n- Security reporting guidelines\n\n---\n\n## 📄 License\n\nTramiFlow Community Edition is licensed under [AGPL-3.0](./LICENSE).\n\n**What this means:**\n- ✅ Free to use, modify, and self-host\n- ✅ Commercial use allowed (self-hosted)\n- ⚠️ If you offer TramiFlow as a hosted service, you must open-source your modifications\n- ❌ The Pro features are not covered by this license\n\nFor commercial licensing inquiries: hola@carlosindriago.com\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcarlosindriago%2Ftramiflow-ce","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcarlosindriago%2Ftramiflow-ce","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcarlosindriago%2Ftramiflow-ce/lists"}