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.