Synaplan
Open-source AI platform for companies: self-hosted AI agents, GDPR-compliant chatbot widget, RAG knowledge base, WhatsApp and Outlook AI, MCP, multi-model routing. Docker, Kubernetes or hosted in Germ
Professional property management system for MPIRE Property Management, Oman
Translation pending
BusinessTypeScript · JavaScriptGitHub @MPIREOMOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full 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.