Synaplan
기업을 위한 오픈소스 AI 플랫폼
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 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.