Javis OS
Javis OS는 기업가를 돕는 에이전시 AI로, 업무를 지원하고 함께 성장합니다
빌드리움을 위한 Occupella, 유지보수 혼란을 작업 지시서로 전환·빠른 수리·업데이트 간소화·주민 추적 감소
Turn maintenance chaos into completed work orders — faster fixes, cleaner owner updates, fewer resident follow-ups. Built for Buildium.
비즈니스TypeScript · JavaScriptGitHub @brandonoscar온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기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.