Thank you for your interest in Formless!
Formless is in active early development. The codebase is evolving quickly and the schema/API may change significantly. For this reason, external pull requests are not being accepted at this time while the MVP is being validated.
What you can do right now:
- ⭐ Star the repo to follow progress
- 🐛 Report bugs
- 💡 Suggest features
- 💬 Share feedback by opening a discussion
Once the MVP is stable, trusted contributors will be invited to collaborate. This file will be updated when that happens.
If you've been invited to contribute, here is the full workflow.
- Node.js v18+
- A Supabase account (free tier)
- A Groq API key (free tier at console.groq.com)
git clone https://github.com/otonielrojas/formless.git
cd formless/app
npm install
cp .env.local.example .env.local
# Fill in your Supabase and Groq credentials in .env.localRun the database migration in your Supabase SQL editor:
# Paste the contents of supabase/migrations/001_initial_schema.sql
# into your Supabase project's SQL editor and run itStart the dev server:
npm run dev
# App runs at http://localhost:3000Always work in a branch — never commit directly to master.
git checkout master && git pull
git checkout -b <type>/<short-description>| Prefix | When to use |
|---|---|
feat/ |
New user-visible functionality |
fix/ |
Bug fix |
chore/ |
Deps, config, tooling |
test/ |
Tests only |
docs/ |
Documentation only |
refactor/ |
Code restructure, no behaviour change |
cd app
npm run lint # zero lint errors
npm run build # must succeed (catches TypeScript errors)- All CI checks must pass
- New behaviour must have tests; bug fixes must include a regression test
docs/ROADMAP.mdupdated if a milestone item is completedCLAUDE.mdupdated if architectural decisions change
We follow Conventional Commits:
<type>(<scope>): <short summary>
[optional body explaining why, not what]
Types: feat, fix, chore, test, docs, refactor, ci
- TypeScript strict mode — no
anyunless unavoidable - Tailwind for all styling — no inline styles
- All AI output must be Zod-validated before touching the database
- Use the service role Supabase client for server-side operations that bypass RLS
- Never expose
SUPABASE_SERVICE_ROLE_KEYorGROQ_API_KEYto the client
Before contributing, read:
CLAUDE.md— dev conventions and AI pipeline overviewdocs/ARCHITECTURE.md— tech stack and design decisionsdocs/PRD.md— product requirements and user flows
Open a GitHub Discussion or reach out via the issue tracker.