Lalabase
Tickets, Doku, Zeiterfassung und Kundengespräche an einem Ort, durchsuchbar per KI. Für Softwarefirmen mit Kundenprojekten. Open Source: auf deinem eigenen Server oder in unserer Cloud in Deutschland.
翻译准备中
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证Helixis onboarding
翻译准备中
取自仓库 README
正在加载完整 README。 以下为已保存的摘录。
Occupella Onboarding — Architecture & Setup Guide
⚠ Everything below the "Project Structure" heading predates ADR 0003
(2026-06-12) and describes an architecture this repo no longer uses. The
wizard had its own Supabase project + Edge Functions back then; today it is a
pure API client against the AgenticHelixis backend, and it authenticates
against the shared helixis-test Supabase project (see src/lib/supabase.ts
and src/lib/api.ts for what is actually wired). The helixis.com /
hooks.helixis.com hosts named below were never provisioned.查看完整 README ↗⚠ Everything below the "Project Structure" heading predates ADR 0003 (2026-06-12) and describes an architecture this repo no longer uses. The wizard had its own Supabase project + Edge Functions back then; today it is a pure API client against the AgenticHelixis backend, and it authenticates against the shared
helixis-testSupabase project (seesrc/lib/supabase.tsandsrc/lib/api.tsfor what is actually wired). Thehelixis.com/hooks.helixis.comhosts named below were never provisioned. Treat this as historical until it is rewritten — the live contract lives inAgenticHelixis/docs/adr/0003-product-consolidation-contract.md.
| Layer | Technology | Why |
|---|---|---|
| Frontend | React + TypeScript | Type-safe, component-based |
| Backend | Supabase (Postgres + Edge Functions) | SOC 2 certified infra, RLS, Vault |
| Secret storage | Supabase Vault (pg_sodium/AES-256-GCM) | Encrypted at rest, opaque to clients |
| Auth | Supabase Auth (magic link) | No password storage, audit logged |
| Custom SMTP via SendGrid | @helixis.com domain, no Supabase branding |
helixis-onboarding/
├── src/
│ └── App.tsx # Full onboarding wizard (6 steps)
├── supabase/
│ ├── migrations/
│ │ └── 001_initial_schema.sql # Full schema + RLS
│ └── functions/
│ ├── provision-integration/ # Stores encrypted API keys
│ ├── test-connection/ # Tests Buildium API
│ ├── lock-integration/ # Locks integration (immutable)
│ ├── rotate-webhook-secret/ # Generates webhook signing secret
│ └── invite-member/ # Sends workspace invitations
└── README.md
npx supabase init
npx supabase login
npx supabase link --project-ref YOUR_PROJECT_REF
In Supabase Dashboard → Database → Extensions, enable:
pg_cryptosupabase_vault (click Enable)Run in SQL Editor:
CREATE OR REPLACE FUNCTION vault_create_secret(p_secret TEXT, p_name TEXT, p_description TEXT)
RETURNS UUID LANGUAGE plpgsql SECURITY DEFINER AS $$
DECLARE v_id UUID;
BEGIN
INSERT INTO vault.secrets (secret, name, description) VALUES (p_secret, p_name, p_description)
RETURNING id INTO v_id;
RETURN v_id;
END;
$$;
CREATE OR REPLACE FUNCTION vault_get_secret(p_id UUID)
RETURNS TEXT LANGUAGE plpgsql SECURITY DEFINER AS $$
BEGIN
RETURN (SELECT decrypted_secret FROM vault.decrypted_secrets WHERE id = p_id);
END;
$$;
npx supabase db push
npx supabase functions deploy provision-integration
npx supabase functions deploy test-connection
npx supabase functions deploy lock-integration
npx supabase functions deploy rotate-webhook-secret
npx supabase functions deploy invite-member
npx supabase secrets set SITE_URL=https://onboarding.helixis.com
Dashboard → Authentication → Settings → SMTP Settings:
# Install dependencies
npm install @supabase/supabase-js react react-dom typescript
# Replace mock supabase client in App.tsx with:
import { createClient } from '@supabase/supabase-js'
const supabase = createClient(
process.env.REACT_APP_SUPABASE_URL!,
process.env.REACT_APP_SUPABASE_ANON_KEY!
)
REACT_APP_SUPABASE_URL=https://xxxx.supabase.co
REACT_APP_SUPABASE_ANON_KEY=eyJ... # Public anon key (safe to expose)
REACT_APP_SITE_URL=https://onboarding.helixis.com
UI → Edge Function → pg_sodium (vault.secrets) → vault.decrypted_secrets (RLS-blocked)
↑ ↑
service_role key AES-256-GCM via pg_sodium
never in client root key managed by Supabase
| Table | Owner | Manager | Employee |
|---|---|---|---|
| workspaces | ✓ | ✓ | ✓ |
| workspace_members | ✓ | ✓ | ✓ |
| integrations (status only) | ✓ | ✓ | ✗ |
| integration_secrets | ✗ | ✗ | ✗ |
| webhooks | ✓ | ✓ | ✗ |
| audit_log | ✓ | ✓ | ✗ |
| vault.secrets | ✗ | ✗ | ✗ |
The UI fields for API keys are type="password" with autocomplete="new-password". Once submitted to the Edge Function, the values are:
vault.create_secret() — never persisted in application codekey_hint (last 4 chars) is stored in integration_secretsintegration_secrets)audit_log table, append-only via RLS)-- Add to sign-in hook: require TOTP for owners
-- Dashboard → Auth → MFA Settings
@helixis.comCREATE POLICY "delete_old_logs" ON audit_log AS PERMISSIVE
FOR DELETE USING (created_at < NOW() - INTERVAL '1 year');
Supabase is SOC 2 Type II certified. Request their Security Report via:
https://security.supabase.com (available under NDA for Enterprise)
This covers: physical security, network security, availability, and infrastructure controls. Your application-layer controls (this codebase) layer on top.
Buildium uses HTTP Basic Auth (not OAuth) with Client Credentials:
https://api.buildium.com/v1The test in test-connection/index.ts hits /v1/properties?pagesize=1 — a lightweight read.
The schema uses an integration_provider enum. To add AppFolio:
'appfolio' to the enumtest-connection/index.tsThe webhook endpoint (https://hooks.helixis.com/{workspace_id}/{provider}) needs a separate webhook receiver service (not included here). Architecture:
Buildium → hooks.helixis.com/{ws}/{provider}
↓
Webhook Receiver (Edge Function or standalone service)
↓ HMAC-SHA256 verify against vault signing secret
↓ Insert to events table
↓ Trigger Helixis AI processing
This is a Phase 2 implementation item.