A modern full-stack survey and form-building platform that lets users create branded surveys, share public links, collect responses, and manage submissions from a single dashboard.
- Overview
- Features
- Deployment
- Tech Stack
- Architecture
- Getting Started
- Available Scripts
- Configuration
- Contribution Guidelines
- Developers
- License
Forms Simplified is organized as a monorepo with two main applications:
| Component | Description |
|---|---|
| Web App | React + TypeScript frontend for creating and managing surveys |
| API | Hono-based backend running on Cloudflare Workers with Prisma and PostgreSQL |
The product focuses on a smooth creator experience with authentication, survey creation, public sharing, QR-code distribution, and response management.
The project is deployed and can be accessed via the link below:
- User authentication and protected dashboards
- Create and edit surveys with title, description, cover image, and theme color
- Publish and share public survey links
- Generate QR codes for sharing
- Collect and review survey responses in real-time
- Manage surveys from a centralized dashboard
- Responsive design for mobile and desktop
- Framework: React 19
- Language: TypeScript
- Build Tool: Vite
- Routing: TanStack Router
- Styling: Tailwind CSS
- UI Components: Custom & shadcn/ui
- Framework: Hono
- Infrastructure: Cloudflare Workers
- Database ORM: Prisma
- Database: PostgreSQL-compatible deployed on Neon
- Validation: Zod
- Authentication: JWT-based (Session)
- Monorepo Manager: pnpm workspaces
- Code Quality: Biome (formatting, linting, imports)
- Deployment: Wrangler (Cloudflare) ,Cloudflare Pages for Frontend, Cloudflare Workers for Backend
- Process Manager: concurrently - Run multiple packages simultaneously
Forms Simplified follows a clean separation between client and API layers:
┌─────────────────────────────────────────────────────────────┐
│ Forms Simplified │
├─────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────────────┐ ┌──────────────────────┐ │
│ │ Web Frontend │ │ API Backend │ │
│ │ (React + TS) │◄────►│ (Hono + Workers) │ │
│ │ - Routes │ │ - Controllers │ │
│ │ - Components │ │ - Middleware │ │
│ │ - State Mgmt │ │ - Routes │ │
│ └──────────────────────┘ └──────────────────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────────┐ │
│ │ Prisma ORM │ │
│ │ - Schema │ │
│ │ - Migrations │ │
│ └──────────────────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────────┐ │
│ │ PostgreSQL Database │ │
│ │ - Users │ │
│ │ - Surveys │ │
│ │ - Responses │ │
│ └──────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘
Forms-Simplified/
├── web/ # React frontend
│ ├── src/
│ │ ├── components/ # React + Shadcn components
│ │ ├── routes/ # TanStack Router pages
│ │ ├── hooks/ # Custom React hooks
│ │ └── lib/ # Utilities and API client
│ ├── package.json
│ └── tsconfig.json
│
├── api/ # Hono backend (Cloudflare Workers)
│ ├── src/
│ │ ├── controllers/ # Business logic
│ │ ├── routes/ # API endpoints
│ │ ├── middlewares/ # Authentication & file upload
│ │ ├── lib/ # Database setup
│ │ └── utils/ # Helpers & validations
│ ├── prisma/
│ │ ├── schema.prisma # Data model
│ │ └── migrations/ # Database migrations
│ ├── wrangler.jsonc # Cloudflare config
│ └── package.json
│
└── biome.json # Code quality config
| Requirement | Version |
|---|---|
| Node.js | 20.0.0+ |
| pnpm | 9.0.0+ |
| Database | PostgreSQL-compatible |
| Wrangler | Latest (for Cloudflare deployment) |
1. Clone the repository
git clone https://github.com/Pranava-Pai-N/Forms-Simplified.git
cd Forms-Simplified2. Install dependencies
pnpm install3. Configure environment variables
Frontend:
cd web && cp .env.example .envBackend:
cd api && cp .env.example .env4. Set up the database
pnpm db:migrate5. Start the database via docker
docker run -it -p 5432:5432 -e POSTGRES_USER=username -e POSTGRES_PASSWORD=password postgres
6. Migrate the Database
npx prisma migrate dev7. Generate the Prisma Client
npx prisma generate8. Start development servers
pnpm dev| Service | URL |
|---|---|
| Frontend | http://localhost:5173 |
| Backend API | http://localhost:8787 |
Deployments for this monorepo use Cloudflare Pages for the frontend and Cloudflare Workers (Wrangler) for the API. Quick steps:
- Frontend (Cloudflare Pages)
# build the frontend
cd web
pnpm build- Backend (Cloudflare Workers)
cd api
wrangler publishFrom the repository root:
| Command | Description |
|---|---|
pnpm dev |
Run frontend and API concurrently |
pnpm build |
Build frontend for production |
pnpm typecheck |
Run TypeScript type checking |
pnpm check |
Run Biome lint and format validation |
pnpm check:fix |
Auto-fix Biome issues |
pnpm format |
Format code with Biome |
pnpm lint |
Run Biome linter only |
# Development
pnpm dev # Start development servers
# Code Quality
pnpm check # Lint and format check
pnpm check:fix # Auto-fix issues
pnpm typecheck # TypeScript validation
# Production
pnpm build # Build for productionThis project uses Biome as the unified tool for code formatting and linting. Configuration is defined in biome.json:
| Setting | Value |
|---|---|
| Indentation | 2 spaces |
| Quotes | Single quotes |
| Semicolons | Included |
| Trailing Commas | All |
| Line Width | 80 |
Key Features:
- JavaScript/TypeScript formatting
- Tailwind CSS support
- Import organization
- Recommended lint rules
- CSS-in-JS awareness
Recommended Workflow:
pnpm check # Validate formatting and linting
pnpm check:fix # Auto-fix all issues
pnpm format # Reformat codeWe welcome contributions! Please follow this professional workflow:
git checkout -b feature/your-feature-name- Keep changes focused and well-scoped
- Follow existing code style and naming conventions
- Write clear, descriptive commit messages
pnpm check # Lint and format validation
pnpm typecheck # TypeScript type checking
pnpm build # Verify build succeedsFollow conventional commits:
feat:for new featuresfix:for bug fixeschore:for maintenance and toolingdocs:for documentation updatesrefactor:for code restructuringtest:for test additions
- Open PR with a clear summary
- Link related issues
- Describe the changes and their impact
- Ensure CI checks pass
git add .
git commit -m "feat: add user profile customization"
git push origin feature/your-feature-name
# Create PR on GitHubThis project is licensed under the MIT License - see the LICENSE file for details.
Pranava Pai N
- GitHub: Pranava-Pai-N
- Website: Portfolio Website
- Role: Full-Stack Developer and ML Engineer