An open source visual form builder for everyone who wants to gather feedback, leads and opinions.
Introduction · Tech Stack · Contributing
Dorf is an open-source visual form builder to easily gather feedback, leads and opinions. Built with Vercel KV, and PlanetScale MySQL.
- Next.js – framework
- Typescript – language
- Tailwind – CSS
- Vercel KV – redis
- PlanetScale – database
- Drizzle - ORM
- NextAuth.js – auth
- Vercel – hosting
- Postmark - emails
- Clone this repo
- cp .env.example .env.local
- Set NEXTAUTH_SECRET in
.env.local
with value returned when runningopenssl rand -base64 32
in your terminal - Configure Github auth provider by following this guide (callback url ${NEXT_PUBLIC_APP_URL}/api/auth/callback/github) and add email to permissions
- Set DATABASE_URL in
.env.local
to the connection string of your mysql database (either locally running or a Planetscale development branch). Format should bemysql://USER:PASSWORD@HOST/DATABASE?ssl={"rejectUnauthorized":true}
- Set these .env vars to
.optional()
insrc/env.mjs
if you dont want to use Email authentication:SMTP_FROM: z.string().min(1).optional(), POSTMARK_API_TOKEN: z.string().min(1).optional(), POSTMARK_SIGN_IN_TEMPLATE: z.string().min(1).optional(), POSTMARK_ACTIVATION_TEMPLATE: z.string().min(1).optional()
- Create Vercel KV Database in your dashboard and connect it to a (new) project.
- Set the provided secrets in
.env.local
for following values:
KV_URL=
KV_REST_API_URL=
KV_REST_API_TOKEN=
KV_REST_API_READ_ONLY_TOKEN=
- Run
pnpm i
to install dependencies (if you haven't installed pnpm yet follow this guide) - Run
pnpm run db:push
to push the database schema to your database - Run
pnpm dev
to start the development server - Happy coding 🎉
We love our contributors! Here's how you can contribute:
- Open an issue if you believe you've encountered a bug.
- Make a pull request to add new features/make quality-of-life improvements/fix bugs.
- Matyas Heins (@matheins)
Inspired by Plausible and Dub, Dorf is open-source under the GNU Affero General Public License Version 3 (AGPLv3) or any later version. You can find it here.