{"id":25495259,"url":"https://github.com/iamrohanshrestha/form-builder","last_synced_at":"2025-04-10T02:32:05.247Z","repository":{"id":206988987,"uuid":"665009027","full_name":"iamrohanshrestha/form-builder","owner":"iamrohanshrestha","description":"A Full Stack MERN app for building dynamic forms with drag and drop interface \u0026 to track and view the responses received in the created form.","archived":false,"fork":false,"pushed_at":"2024-07-13T17:45:27.000Z","size":469,"stargazers_count":40,"open_issues_count":0,"forks_count":11,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-24T04:03:00.120Z","etag":null,"topics":["dnd-kit","express-rate-limit","expressjs","mongodb","mongoose","monorepo","multer","nodejs","nodemailer","pnpm-workspace","react-hook-form","reactjs","shadcn-ui","tailwindcss","tanstack-react-query","tanstack-table","tiptap","typescript","zod","zustand"],"latest_commit_sha":null,"homepage":"https://easyformbuilder.netlify.app","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/iamrohanshrestha.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-07-11T08:35:04.000Z","updated_at":"2025-02-08T17:21:52.000Z","dependencies_parsed_at":"2024-07-13T19:09:46.998Z","dependency_job_id":null,"html_url":"https://github.com/iamrohanshrestha/form-builder","commit_stats":{"total_commits":133,"total_committers":1,"mean_commits":133.0,"dds":0.0,"last_synced_commit":"6bd4b91210290dec3d3fc0d4da93b7dbf3f91a80"},"previous_names":["rohanshrestha01/form-builder","iamrohanshrestha/form-builder"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iamrohanshrestha%2Fform-builder","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iamrohanshrestha%2Fform-builder/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iamrohanshrestha%2Fform-builder/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iamrohanshrestha%2Fform-builder/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/iamrohanshrestha","download_url":"https://codeload.github.com/iamrohanshrestha/form-builder/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248144249,"owners_count":21054891,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dnd-kit","express-rate-limit","expressjs","mongodb","mongoose","monorepo","multer","nodejs","nodemailer","pnpm-workspace","react-hook-form","reactjs","shadcn-ui","tailwindcss","tanstack-react-query","tanstack-table","tiptap","typescript","zod","zustand"],"created_at":"2025-02-19T00:25:19.879Z","updated_at":"2025-04-10T02:32:05.225Z","avatar_url":"https://github.com/iamrohanshrestha.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Form Builder\nA Full Stack MERN app for building dynamic forms with drag and drop interface \u0026amp; to track and view the responses received in the created form.\n\nhttps://easyformbuilder.netlify.app/\n\n(Profile picture upload only works in local development as costs money in deployed server.)\n\n![Screenshot of form builder website](https://github.com/RohanShrestha01/form-builder/assets/70142301/a4273f13-1842-46cb-aef6-b04244c8f46e)\n\n## Installation\nYou need to install [pnpm](https://pnpm.io/installation) first as pnpm workspace is used for this monorepo.\n\n```bash\nnpm install -g pnpm\n```\n\nClone the project\n\n```bash\ngit clone https://github.com/RohanShrestha01/form-builder.git\n```\n\nthen navigate into the project\n\n```\ncd form-builder\n```\n\nNow, Install the packages\n\n```bash\npnpm i\n```\n\nthen build the shared validation package\n\n```bash\npnpm -F @form-builder/validation build\n```\n\nAlso, create .env file with the help of .env.example file for both client and server. You can use [Brevo](https://www.brevo.com/) for free SMTP server and [MongoDB Atlas](https://www.mongodb.com/atlas/database) for database.\n\nRun the project with command\n\n```bash\npnpm dev\n```\n\n\u003ch2\u003e Built with \u003c/h2\u003e\n\u003cul\u003e\n  \u003cli\u003eFrontend: \u003cb\u003e React, TypeScript, Tailwind, React Hook Form, Zod, ShadcnUI, React Router, DND Kit, Tanstack Query, Tanstack Table, Tiptap, React Dropzone, React Easy Crop, Zustand \u003c/b\u003e\u003c/li\u003e\n  \u003cli\u003eBackend:  \u003cb\u003e Node, Express, TypeScript, Nodemailer, Multer, JWT \u003c/b\u003e \u003c/li\u003e\n  \u003cli\u003eDatabase: \u003cb\u003e MongoDB, Mongoose \u003c/b\u003e \u003c/li\u003e\n\u003c/ul\u003e\n\n\u003ch2\u003e Features \u003c/h2\u003e\n\u003cul\u003e\n  \u003cli\u003e JWT Authentication along with Protected Routes, Refresh Tokens, reuse detection and rotation. \u003c/li\u003e\n  \u003cli\u003e Logout, Change password and delete account functionalities. \u003c/li\u003e\n  \u003cli\u003e Email sending functionality after signup and while resetting password using Nodemailer. \u003c/li\u003e\n  \u003cli\u003e Profile picture upload with drag n drop and crop functionality. \u003c/li\u003e\n  \u003cli\u003e Implemented error logging mechanisms for easier troubleshooting and maintenance. \u003c/li\u003e\n  \u003cli\u003e Implemented proper error handling and user feedback mechanisms. \u003c/li\u003e\n  \u003cli\u003e Dynamic forms can be created using different form elements by dragging and dropping. \u003c/li\u003e\n  \u003cli\u003e CRUD operations and search functionality on the form. \u003c/li\u003e\n  \u003cli\u003e Functionality to submit the form and view the responses on the form. \u003c/li\u003e\n  \u003cli\u003e Included various form elements like WYSIWYG editor, Calendar, Date Range Picker etc. \u003c/li\u003e\n\u003c/ul\u003e\n\n\u003ch2\u003e API \u003c/h2\u003e\n\n\u003ch4\u003e Auth \u003c/h4\u003e\n\u003cul\u003e\n  \u003cli\u003e \u003cb\u003ePOST\u003c/b\u003e /api/v1/auth/signup \u003c/li\u003e\n  \u003cli\u003e \u003cb\u003ePOST\u003c/b\u003e /api/v1/auth/login \u003c/li\u003e\n  \u003cli\u003e \u003cb\u003eGET\u003c/b\u003e /api/v1/auth/refresh \u003c/li\u003e\n  \u003cli\u003e \u003cb\u003eGET\u003c/b\u003e /api/v1/auth/logout \u003c/li\u003e\n  \u003cli\u003e \u003cb\u003ePOST\u003c/b\u003e /api/v1/auth/forgot-password \u003c/li\u003e\n  \u003cli\u003e \u003cb\u003ePATCH\u003c/b\u003e /api/v1/auth/reset-password/:token \u003c/li\u003e\n\u003c/ul\u003e\n\n\u003ch4\u003e User \u003c/h4\u003e\n\u003cul\u003e\n  \u003cli\u003e \u003cb\u003ePATCH\u003c/b\u003e /api/v1/user/change-password \u003c/li\u003e\n  \u003cli\u003e \u003cb\u003ePATCH\u003c/b\u003e /api/v1/user/profile \u003c/li\u003e\n  \u003cli\u003e \u003cb\u003eGET\u003c/b\u003e /api/v1/user/profile \u003c/li\u003e\n  \u003cli\u003e \u003cb\u003eDELETE\u003c/b\u003e /api/v1/user/delete-account \u003c/li\u003e\n\u003c/ul\u003e\n\n\u003ch4\u003e Form \u003c/h4\u003e\n\u003cul\u003e\n  \u003cli\u003e \u003cb\u003eGET\u003c/b\u003e /api/v1/forms?page=0\u0026pageSize=10\u0026sort=-name\u0026search=form \u003c/li\u003e\n  \u003cli\u003e \u003cb\u003eGET\u003c/b\u003e /api/v1/forms/:id \u003c/li\u003e\n  \u003cli\u003e \u003cb\u003ePOST\u003c/b\u003e /api/v1/forms \u003c/li\u003e\n  \u003cli\u003e \u003cb\u003ePATCH\u003c/b\u003e /api/v1/forms/:id \u003c/li\u003e\n  \u003cli\u003e \u003cb\u003ePATCH\u003c/b\u003e /api/v1/forms/bulk-delete \u003c/li\u003e\n  \u003cli\u003e \u003cb\u003eDELETE\u003c/b\u003e /api/v1/forms/:id \u003c/li\u003e\n\u003c/ul\u003e\n\n\u003ch4\u003e Form Response \u003c/h4\u003e\n\u003cul\u003e\n  \u003cli\u003e \u003cb\u003eGET\u003c/b\u003e /api/v1/forms/:id/responses \u003c/li\u003e\n  \u003cli\u003e \u003cb\u003ePOST\u003c/b\u003e /api/v1/forms/:id/responses \u003c/li\u003e\n\u003c/ul\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiamrohanshrestha%2Fform-builder","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fiamrohanshrestha%2Fform-builder","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiamrohanshrestha%2Fform-builder/lists"}