Build, share, and manage forms effortlessly with DynaForm - a modern, hypermedia-driven web application powered by HTMX for creating dynamic forms with real-time responses and zero JavaScript frameworks.
Features • Installation • Usage • Tech Stack • Project Structure
- ⚡ HTMX-Powered Interactions - Enjoy smooth, real-time updates without complex JavaScript frameworks
- 🎨 Drag & Drop Interface - Intuitive form builder with drag-and-drop functionality
- 📝 Multiple Field Types - Support for text fields, checkboxes, dropdowns, radio buttons, textareas, and more
- 👥 Google OAuth Authentication - Secure login with Google OAuth 2.0
- 📊 Response Management - Collect, view, and manage form responses efficiently
- 🚀 Hypermedia-Driven Architecture - Leveraging HTMX for a modern, SPA-like experience with server-side rendering
- 📱 Responsive Design - Beautiful UI built with Tailwind CSS
- 💾 Form History - Track changes and maintain version history
- 🔗 Easy Sharing - Share forms with custom links
- 📋 Templates - Pre-built templates for surveys, feedback forms, and information collection
- Node.js (v16 or higher)
- MongoDB (v6.8 or higher)
- npm or yarn package manager
-
Clone the repository
git clone https://github.com/Charles787205/DynaForm.git cd DynaForm -
Install dependencies
npm install
-
Configure environment variables
Create a
.envfile in the root directory:# MongoDB Connection MONGO_URI=mongodb://localhost:27017/dynaform # Session Secret SESSION_SECRET=your_session_secret_here # Google OAuth Credentials GOOGLE_CLIENT_ID=your_google_client_id GOOGLE_CLIENT_SECRET=your_google_client_secret GOOGLE_CALLBACK_URL=http://localhost:3000/auth/google/callback # Application Port PORT=3000
-
Start the development server
npm start
The application will start on
http://localhost:3000
- Log in with your Google account
- Click on "Create New Form"
- Drag and drop fields from the sidebar
- Customize field properties and styling
- Save and share your form
- View all responses in the dashboard
- Export responses for analysis
- Track response statistics and summaries
Choose from pre-built templates:
- Survey Forms - For gathering opinions and feedback
- Feedback Forms - Collect customer/user feedback
- Information Forms - Gather data and information
- Express.js - Web application framework
- MongoDB & Mongoose - Database and ODM
- Passport.js - Authentication middleware
- Express Session - Session management
- HTMX - 🌟 Core Technology - High-power tools for hypermedia, enabling modern browser features directly from HTML attributes. No build step, no complex JavaScript frameworks required!
- EJS - Server-side templating engine for dynamic HTML generation
- Tailwind CSS - Utility-first CSS framework for responsive design
- SweetAlert - Beautiful alerts and modals
- Babel - JavaScript transpiler
- Nodemon - Auto-restart development server
- ESLint - Code linting
DynaForm/
├── public/ # Static assets
│ ├── css/ # Stylesheets
│ └── js/ # Client-side JavaScript
├── src/
│ ├── controllers/ # Route controllers
│ ├── models/ # Database models
│ ├── routes/ # Route definitions
│ ├── middleware/ # Custom middleware
│ ├── views/ # EJS templates
│ ├── objects/ # Business logic objects
│ └── util/ # Utility functions
├── index.js # Application entry point
├── passport.js # Passport configuration
└── package.json # Project dependencies
# Start development server with hot reload
npm start
# Run Tailwind CSS compiler in watch mode
npm run tailwind
# Start server with Nodemon
npm run nodemon
# Run tests
npm testContributions, issues, and feature requests are welcome! Feel free to check the issues page.
- Fork the project
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is ISC licensed.
Charles787205
- GitHub: @Charles787205
Made with ❤️ by the DynaForm Team