Web companion for the Zohal document platform. Built with Next.js 14, React, and TypeScript.
This is a separate git repository from zohal-core/ (which contains iOS + Supabase backend + core docs). Commit and push changes inside each repo.
npm install
npm run devOpen http://localhost:3000 in your browser.
src/
├── app/ # Next.js App Router
│ ├── (app)/ # Authenticated routes
│ │ ├── workspaces/ # Workspace pages
│ │ ├── search/ # Search page
│ │ └── settings/ # Settings & billing
│ ├── (auth)/ # Authentication routes
│ └── (public)/ # Public pages (home, terms, privacy)
├── components/
│ ├── ui/ # Base components (Button, Card, Toast)
│ ├── layout/ # AppShell, Header, Sidebar
│ ├── pdf-viewer/ # PDF viewing components
│ └── ai/ # AI panel components
├── lib/
│ ├── errors.ts # Error handling utilities
│ └── supabase/ # Supabase client (browser/server)
└── types/ # TypeScript types
import { mapErrorToUserFacing, showErrorToast } from '@/lib/errors'
try {
await supabase.functions.invoke('endpoint', { body })
} catch (error) {
const userError = mapErrorToUserFacing(error)
showErrorToast(userError)
}- Use Tailwind CSS with Scholar theme colors
- No inline hex colors - use theme tokens
- Global toast for transient errors via
Toastcomponent
Create .env.local:
NEXT_PUBLIC_SUPABASE_URL=your-supabase-url
NEXT_PUBLIC_SUPABASE_ANON_KEY=your-anon-key
NEXT_PUBLIC_PIPELINE_BUILDER_ENABLED=true
NEXT_PUBLIC_PIPELINE_BUILDER_WORKSPACE_ALLOWLIST=workspace_uuid_1,workspace_uuid_2
When enabled for a workspace, the internal scaffold is available at:
/workspaces/<workspace_id>/pipelines
Pipeline presets (node “recipes” and starter certified pipelines) are intended to remain a pure UX layer:
- Preset nodes are prefilled configs for existing node kinds (no new runtime semantics).
- Certified starter pipelines are shipped as global system preset pipelines that users can duplicate/edit.
Delta-to-GA backend capabilities (consumed by scaffold and follow-up UX work):
pipelines-node-catalog,pipelines-validate-spec,pipelines-node-actionpipeline-connections-testpipelines-get-artifact(artifact pointer retrieval / signed access)
npm run buildSee the main project documentation in ../zohal-core/Documentation/: