Ikiform is a modern, AI-powered form builder and analytics platform. It allows users to create, manage, and analyze forms with advanced features such as AI-assisted form creation, analytics, and integrations.
Built with Next.js App Router, React, Supabase, and Tailwind CSS.
- AI-powered form builder
- Real-time analytics and reporting
- User authentication and dashboard
- Customizable appearance and themes
- Next.js 16 (App Router + Turbopack)
- React 19
- Supabase
- Tailwind CSS v4
- Base UI primitives via
@base-ui/react - shadcn CLI with
base-vegastyle (components.json) - Playwright for browser E2E/regression coverage
- Install dependencies:
bun install
- Configure environment:
cp .env.example .env.local- Fill required values in
.env.local
- Start local dev server:
bun run dev
The app will be available at http://localhost:3000 by default.
bun run dev: Start development server.bun run build: Production build.bun run start: Start production server.bun run lint: Lint checks.bun run format: Auto-format code.bun run check: Full static checks (via ultracite).bun run test:e2e: Run Playwright E2E suite.bun run test:e2e:headed: Run E2E tests in headed mode.bun run test:e2e:ui: Open Playwright UI mode.bun run test:e2e:report: Open Playwright HTML report.bun run agent:live-login: Run live agent-browser login automation helper.
/: Marketing home./login: Auth UI./reset-password: Password reset./changelog: Product changelog./embed,/embed/test: Embed tooling and preview./ai-builder: AI builder UI./demo-form-builder: Demo experience./form-builder: Form builder index./form-builder/[id]: Builder editor./form-builder/[id]/customize: Form customization./forms/[id]: Internal form page./f/[slug]: Public form by slug./success: Post-checkout/success state./legal/privacy,/legal/terms,/legal/gdpr,/legal/dpa: Legal pages.
/dashboard: User dashboard./dashboard/forms/[id]/analytics: Form analytics./dashboard/forms/[id]/submissions: Form submissions./admin: Admin dashboard./admin/forms/[formId]: Admin form details./admin/users/[userId]: Admin user details.
/e2e-ui: Internal UI regression harness for Playwright checks.- This route is blocked from indexing and excluded from sitemap output.
- Auth/identity:
/auth/callback,/api/user,/api/chat/sessions - AI:
/api/ai-builder,/api/ai-builder/chat,/api/analytics-chat,/api/analytics-chat/history - Forms:
/api/forms/[id]/submit,/api/forms/[id]/api-submit,/api/demo-options - Upload/files:
/api/upload,/api/files/refresh-urls - Webhooks:
/api/webhook,/api/webhook/[id],/api/webhook/[id]/test,/api/webhook/[id]/resend,/api/webhook/inbound,/api/webhook/inbound/[id],/api/webhook/logs,/api/webhook/polar - Admin:
/api/admin/form-submissions,/api/admin/user-forms,/api/users/count,/api/users/emails,/api/users/stats - Maintenance:
/api/cron/expire-trials,/api/google-fonts,/checkout,/portal
components.jsonis configured with:style: "base-vega"- Base UI-backed shadcn generation
- UI primitives and wrappers are in
src/components/ui/.
- Config:
playwright.config.ts - Specs:
e2e/smoke-interactions.spec.tse2e/ui-regressions.spec.ts
For authenticated E2E checks:
E2E_TEST_EMAIL="[email protected]" \
E2E_TEST_PASSWORD="your-password" \
bun run test:e2eUse the helper script to run a real browser login flow you can watch:
AB_EMAIL="[email protected]" \
AB_PASSWORD="your-password" \
bun run agent:live-loginOptional base URL argument:
AB_EMAIL="[email protected]" \
AB_PASSWORD="your-password" \
bun run agent:live-login -- http://127.0.0.1:3000Ikiform/
├── e2e/ # Playwright E2E and regression specs
├── public/ # Static assets + generated robots/sitemap
├── scripts/
│ └── agent-browser/ # Browser automation helpers
├── src/
│ ├── app/ # Next.js app routes and API handlers
│ ├── components/ # Reusable React components
│ ├── hooks/ # Custom hooks
│ ├── lib/ # Services, API clients, utilities
│ └── utils/ # Shared runtime utils
├── components.json # shadcn config (base-vega style)
├── next.config.ts # Next.js configuration
├── next-sitemap.config.js # Sitemap/robots configuration
├── playwright.config.ts # Playwright configuration
├── package.json # Scripts + dependencies
└── README.md # Project documentation