Synaplan
开源 AI 软件平台,面向企业:自托管 AI 代理,符合 GDPR 的聊天机器人小部件,RAG 知识库,WhatsApp 与 Outlook AI,MCP,多模型路由。支持 Docker、Kubernetes 或在 Germ 托管。
AI 翻译
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗Professional property management system for MPIRE Property Management, Oman.
| Layer | Technology |
|---|---|
| Framework | Next.js 16 (App Router) |
| Database | Supabase (PostgreSQL) |
| ORM | Drizzle ORM |
| Auth | Supabase Auth + RLS |
| UI | shadcn/ui + Radix UI + Tailwind CSS 4 |
| i18n | next-intl (Arabic + English) |
| Meta Cloud API (direct) | |
| Resend | |
| Deployment | Vercel + Supabase Cloud |
git clone <your-repo-url>
cd mpire
npm install
cp .env.example .env.local
Edit .env.local with your credentials (see Environment Variables section below).
supabase/migrations/001_initial_schema.sqlsupabase/migrations/002_storage_setup.sqlUPDATE users SET role = 'super_admin', full_name = 'Admin' WHERE email = '[email protected]';
npm run dev
| Variable | Description | Required |
|---|---|---|
NEXT_PUBLIC_SUPABASE_URL | Supabase project URL | Yes |
NEXT_PUBLIC_SUPABASE_ANON_KEY | Supabase anonymous key | Yes |
SUPABASE_SERVICE_ROLE_KEY | Supabase service role key (for cron) | Yes |
DATABASE_URL | Direct PostgreSQL connection string | For Drizzle |
WHATSAPP_ACCESS_TOKEN | Meta Cloud API permanent token | For WhatsApp |
WHATSAPP_PHONE_NUMBER_ID | WhatsApp phone number ID | For WhatsApp |
WHATSAPP_BUSINESS_ACCOUNT_ID | Meta Business Account ID | For WhatsApp |
WHATSAPP_WEBHOOK_VERIFY_TOKEN | Custom token for webhook verification | For WhatsApp |
RESEND_API_KEY | Resend API key | For Email |
RESEND_FROM_EMAIL | Sender email address | For Email |
NEXT_PUBLIC_APP_URL | Application URL | Yes |
CRON_SECRET | Secret for Vercel Cron authentication | Yes |
https://yourdomain.com/api/webhooks/whatsappTemplates should be named:
mpire_rent_upcoming_en / mpire_rent_upcoming_armpire_rent_overdue_en / mpire_rent_overdue_armpire_cheque_due_en / mpire_cheque_due_armpire_lease_expiry_en / mpire_lease_expiry_arEach template uses variables: {{1}} tenant name, {{2}} unit number, {{3}} property name, {{4}} amount, {{5}} due date.
Reminders are dispatched daily at 8:00 AM via Vercel Cron:
Configuration is in vercel.json. The cron endpoint is protected by CRON_SECRET.
src/
├── app/
│ ├── [locale]/
│ │ ├── auth/ # Login, callback
│ │ └── (dashboard)/ # Protected pages
│ │ ├── dashboard/
│ │ ├── properties/
│ │ ├── tenants/
│ │ ├── payments/
│ │ ├── cheques/
│ │ ├── maintenance/
│ │ ├── documents/
│ │ ├── reminders/
│ │ ├── reports/
│ │ └── settings/
│ └── api/
│ ├── cron/ # Scheduled jobs
│ ├── whatsapp/ # Manual send
│ └── webhooks/ # WhatsApp delivery status
├── components/
│ ├── ui/ # Design system components
│ └── layout/ # Sidebar, Topbar
├── db/
│ └── schema/ # Drizzle ORM schema
├── i18n/
│ └── messages/ # en.json, ar.json
├── lib/
│ ├── supabase/ # Client, server, middleware
│ ├── whatsapp/ # Meta Cloud API client
│ ├── email/ # Resend client
│ └── utils/ # Helpers
└── types/ # TypeScript types
Theme: "Operational Clarity" - Dark-first, teal accent, inspired by Linear/Vercel.
vercel --prod
Set all environment variables in Vercel Dashboard > Settings > Environment Variables.
The Supabase project runs on Supabase Cloud. No self-hosting required.
Private - MPIRE Property Management, Oman.