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
Turn maintenance chaos into completed work orders — faster fixes, cleaner owner updates, fewer resident follow-ups. Built for Buildium.
BusinessTypeScript · JavaScriptGitHub @brandonoscarOnlineOwner 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
Helixis onboarding
Translation pending
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
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.Read the full 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.