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.