Open-source form builder inspired by Typeform - beautiful, conversational forms made simple.
OpenFormy is a modern, open-source alternative to Typeform and Google Forms. Built on the powerful Pagode framework, it combines the speed and type-safety of Go with the flexibility of React to deliver beautiful, engaging forms.
- π¨ Conversational & Traditional Modes - Choose between one-question-at-a-time (Typeform-style) or traditional multi-field forms
- π¨ Auto Brand Color Extraction - Automatically extract and apply your brand colors from any website URL
- β‘ Lightning Fast - Built on Go + Echo for blazing-fast performance
- π Secure by Default - Session-based authentication, CSRF protection, rate limiting
- π Response Analytics - View, filter, and analyze form submissions with ease
- π― Rich Question Types - Text, email, number, dropdown, checkboxes, date, file upload, and more
- π Public Sharing - Share forms via unique URLs with published/draft status control
- πΎ Simple Database - SQLite for easy setup and portability
- π Auto-Generated Admin Panel - Manage all entities through built-in admin interface
- π Hot Reload Development - Fast development workflow with Air
Backend:
- Go 1.24 with Echo v4 web framework
- Ent ORM for type-safe database operations
- SQLite with WAL mode for concurrent access
- InertiaJS for seamless frontend-backend communication
Frontend:
- React 19 with TypeScript
- Tailwind CSS v4 for styling
- shadcn/ui component library
- Vite for blazing-fast builds
- Go 1.24+
- Node.js 18+
- Make (optional but recommended)
# Clone the repository
git clone https://github.com/pansani/openformy.git
cd openformy
# Install backend dependencies
go mod download
# Install frontend dependencies
npm install
# Generate Ent code
make ent-gen
# Run the application
make runThe application will be available at http://localhost:8000
# Install Air (Go hot reload)
make air-install
# Start with hot reload
make watch- Register an account at
/user/register - Create a form - Click "New Form" from the dashboard
- Add questions - Drag question types from the sidebar
- Choose display mode - Toggle between Conversational and Traditional
- Publish - Toggle the Published switch
- Share - Copy the public form URL and share it
Traditional Mode:
- All questions visible on one page
- Faster for short forms
- Familiar user experience
Conversational Mode:
- One question at a time
- Typeform-style experience
- More engaging for users
- Progress indicator and keyboard navigation
OpenFormy is built on Pagode, a full-stack Go + React starter kit. For detailed documentation on the underlying framework:
- π Pagode Documentation
- ποΈ Architecture Guide
- ποΈ Database & ORM
- π Authentication
- βοΈ Configuration
- CLAUDE.md - Development guide and architecture notes
- DEPLOYMENT.md - Production deployment guide for Coolify
# Run the application
make run
# Hot reload development
make watch
# Run tests
make test
# Generate Ent code (after schema changes)
make ent-gen
# Create new Ent entity
make ent-new name=EntityName
# Create admin user
make admin [email protected]openformy/
βββ cmd/ # Application entry points
β βββ web/ # Main web application
β βββ admin/ # Admin CLI tools
βββ pkg/
β βββ handlers/ # HTTP request handlers
β βββ middleware/ # Custom middleware
β βββ services/ # Business logic & service container
β βββ routenames/ # Route name constants
βββ ent/
β βββ schema/ # Database entity schemas
βββ resources/
β βββ js/
β βββ Pages/ # InertiaJS page components
β βββ components/ # Reusable React components
β βββ hooks/ # Custom React hooks
β βββ types/ # TypeScript type definitions
βββ config/ # Configuration files
βββ static/ # Static assets
# Run all Go tests
make test
# Run E2E tests with Playwright
npx playwright test
# Run E2E tests in headed mode
npx playwright test --headed
# Run specific E2E test file
npx playwright test e2e/forms.spec.ts
# Run specific Go test
go test ./pkg/handlers -run TestFormsDeploy OpenFormy to production using Coolify with automatic Nixpacks builds.
- Connect your Git repository to Coolify
- Nixpacks will auto-detect and configure the build
- Set required environment variables (see table below)
- Deploy!
| Variable | Description | Example |
|---|---|---|
PAGODA_APP_ENVIRONMENT |
Set to production |
production |
PAGODA_APP_HOST |
Your public URL | https://forms.yourdomain.com |
PAGODA_APP_ENCRYPTIONKEY |
32+ char secret | Generate with openssl rand -base64 32 |
| Variable | Description |
|---|---|
PAGODA_DATABASE_CONNECTION |
Database path (SQLite) or connection string (MySQL) |
PAGODA_OPENAI_APIKEY |
For AI features |
PAGODA_PAYMENT_STRIPE_SECRETKEY |
For payment features |
PAGODA_MAIL_* |
For email functionality |
π Full Deployment Guide - Detailed instructions, database setup, troubleshooting, and more.
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is open source and available under the MIT License.
OpenFormy is built with and inspired by many amazing open-source projects:
- Pagode - Full-stack Go + React starter kit
- Go - Programming language
- Echo - Web framework
- Ent - Entity framework & ORM
- SQLite - Database
- Air - Hot reload
- Backlite - Background job processing
- Viper - Configuration management
- React - UI library
- InertiaJS - SPA bridge (via gonertia)
- TypeScript - Type safety
- Tailwind CSS - Styling
- shadcn/ui - Component library
- Vite - Build tool
- Lucide - Icons
- π Documentation
- π Issue Tracker
- π¬ Discussions
Built with β€οΈ using Pagode