Synaplan
開源 AI 平台,供企業使用:自行託管的 AI 代理、符合 GDPR 的聊天機器人小工具、RAG 知識庫、WhatsApp 與 Outlook AI、MCP、多模型路由。Docker、Kubernetes 或託管於 Germ
AI 翻譯
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗Ooruda is a premium Software-as-a-Service (SaaS) application built for housing association and property management. It is designed using a multi-tenant architecture on top of Next.js 16 (App Router), Supabase (Postgres, Auth, Storage), Tailwind CSS 4, and Turborepo.
auth.users.id = accounts.id).super-admin: Platform-wide administrator with control over dashboards, user accounts, subscription metrics, and association creation.assoc_admin: Association Admin owning and managing the settings and memberships of their team/association.billing_operator: Association operator responsible for billing, receipts, and invoices.prop_owner: Property Owner within an association.tenant: Tenant occupying a property within an association./admin):
| Directory | Purpose | Detail |
|---|---|---|
apps/web | Main Next.js Product App | Contains marketing pages, auth, user workspaces, and super-admin panels. |
apps/web/supabase | Backend Migrations & Config | Handles local database schemas, seeds, and migration logic. |
apps/e2e | Playwright E2E Tests | End-to-end testing scripts. |
packages/ui | Core Component Library | Design system elements (@kit/ui) styled with Tailwind and CSS variables. |
packages/supabase | Supabase Clients & SDK | Preconfigured Supabase hooks, browser clients, and server clients. |
packages/next | Next.js Utilities | Safe action clients (authActionClient) and enhancements for route handlers. |
packages/features | Shared Feature Modules | Domain modules (e.g., admin, accounts, auth, billing, team-accounts). |
v20.10.0 or higherv9.15.0 or higherClone the repository and install the dependencies:
pnpm install
Start the local Supabase environment (launches PostgreSQL, Auth, and Storage locally inside Docker):
pnpm supabase:web:start
To reset the database, apply migrations, and run seed files:
pnpm supabase:web:reset
Generate TypeScript types for your Supabase database:
pnpm supabase:web:typegen
Start Next.js and Tailwind dev server:
pnpm dev
The app will be accessible at http://localhost:3000.
getSupabaseServerClient() from @kit/supabase/server-client. Row-Level Security (RLS) is automatically enforced based on the session token.useSupabase() hook from @kit/supabase/hooks.getSupabaseServerAdminClient() from @kit/supabase/server-admin-client when performing actions that bypass RLS (e.g., in a background job or admin actions). Ensure manual validation is done first.Actions are written using authActionClient from @kit/next/safe-action to ensure type-safe parameters, parsed input validations (using Zod schemas), and automatic authentication checks.
import { authActionClient } from '@kit/next/safe-action';
import { z } from 'zod';
export const myAction = authActionClient
.inputSchema(z.object({ id: z.string().uuid() }))
.action(async ({ parsedInput: { id }, ctx }) => {
// ctx.user contains the authenticated caller
});
Before pushing code, run the verification commands:
pnpm typecheck # Run compiler checks
pnpm lint:fix # Fix lint errors with oxlint
pnpm format:fix # Format code with oxfmt
Deployment consists of deploying the frontend Next.js application to Vercel and linking migrations/Edge functions to Supabase.
Detailed deployment instructions, required environment variables, and SMS/OTP configurations are listed in DEPLOYMENT.md.