{"id":25487814,"url":"https://github.com/formsmd/formsmd","last_synced_at":"2025-11-07T23:30:21.058Z","repository":{"id":255438255,"uuid":"804887255","full_name":"formsmd/formsmd","owner":"formsmd","description":"Developer-first, open source Typeform alternative","archived":false,"fork":false,"pushed_at":"2025-02-15T13:02:51.000Z","size":250,"stargazers_count":293,"open_issues_count":1,"forks_count":9,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-15T13:35:02.193Z","etag":null,"topics":["form","form-builder","forms","google-sheets","typeform","typeform-clone"],"latest_commit_sha":null,"homepage":"https://forms.md","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/formsmd.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2024-05-23T13:13:55.000Z","updated_at":"2025-02-15T13:11:54.000Z","dependencies_parsed_at":"2024-11-09T11:18:54.762Z","dependency_job_id":"2adcb7a0-d595-4999-bc29-79af410a50bd","html_url":"https://github.com/formsmd/formsmd","commit_stats":null,"previous_names":["blocksmd/blocksmd"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/formsmd%2Fformsmd","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/formsmd%2Fformsmd/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/formsmd%2Fformsmd/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/formsmd%2Fformsmd/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/formsmd","download_url":"https://codeload.github.com/formsmd/formsmd/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239541825,"owners_count":19656099,"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":["form","form-builder","forms","google-sheets","typeform","typeform-clone"],"created_at":"2025-02-18T20:02:25.490Z","updated_at":"2025-11-07T23:30:20.990Z","avatar_url":"https://github.com/formsmd.png","language":"JavaScript","funding_links":[],"categories":["JavaScript"],"sub_categories":[],"readme":"![Forms.md cover image](https://res.cloudinary.com/dnriuttuy/image/upload/v1737557694/formsmd-og-image_qxkxec.png)\n\n# Forms.md: Developer-first, open source Typeform alternative\n\n**Forms.md** (formerly Blocks.md) lets you build powerful multi-step forms and surveys with minimal code. Create production-ready forms that are privacy-focused, accessible, localizable, and themeable. Perfect for user onboarding, data collection, customer feedback, and much more. The best part? [It's completely free](https://forms.md/pricing/).\n\nTo learn more, please [visit the website](https://forms.md) or [read the docs](https://docs.forms.md).\n\n## Installation\n\n### Install via npm\n\n```\nnpm install formsmd\n```\n\n### Use in browser\n\nDownload the distribution files from this repo and include them using `\u003clink\u003e` and `\u003cscript\u003e` tags in your template.\n\n```html\n\u003c!-- Forms.md CSS --\u003e\n\u003clink rel=\"stylesheet\" type=\"text/css\" href=\"path/to/formsmd/dist/css/formsmd.min.css\" /\u003e\n\u003c!--\nOr RTL version:\n\u003clink rel=\"stylesheet\" type=\"text/css\" href=\"path/to/formsmd/dist/css/formsmd.rtl.min.css\" /\u003e\n--\u003e\n\n\u003c!-- Forms.md JS bundle --\u003e\n\u003cscript src=\"path/to/formsmd/dist/js/formsmd.bundle.min.js\"\u003e\u003c/script\u003e\n```\n\n***\n\n## Usage\n\nCreate forms programmatically using the Composer class, then initialize them with the Formsmd class by passing in the template.\n\n```javascript\nimport \"formsmd/dist/css/formsmd.min.css\"; // Or import formsmd.rtl.min.css in case of RTL\nimport { Composer, Formsmd } from \"formsmd\";\n \n// Create form with ID and submission endpoint\nconst composer = new Composer({\n  id: \"onboarding-form\",\n  postUrl: \"/api/onboard\"\n});\n \n// Choice input for position\ncomposer.choiceInput(\"position\", {\n  question: \"What's your position?\",\n  choices: [\"Product Manager\", \"Software Engineer\", \"Founder\", \"Other\"],\n  required: true\n});\n \n// Text input if user selects \"Other\" position\ncomposer.textInput(\"positionOther\", {\n  question: \"Other\",\n  required: true,\n  labelStyle: \"classic\",\n  displayCondition: {\n    dependencies: [\"position\"],\n    condition: \"position == 'Other'\"\n  }\n});\n \n// Start new slide, progress indicator at 50%\ncomposer.slide({\n  pageProgress: \"50%\"\n});\n \n// Choice input for how user discovered the product\ncomposer.choiceInput(\"referralSource\", {\n  question: \"How did you hear about us?\",\n  choices: [\"News\", \"Search Engine\", \"Social Media\", \"Recommendation\"],\n  required: true\n});\n \n// Start new slide, show only if user was recommended, progress indicator at 75%\ncomposer.slide({\n  jumpCondition: \"referralSource == 'Recommendation'\",\n  pageProgress: \"75%\"\n});\n \n// Email input for recommender email address\ncomposer.emailInput(\"recommender\", {\n  question: \"Who recommended you?\",\n  description: \"We may be able to reach out to them and provide a discount for helping us out.\"\n});\n \n// Initialize with template, container, and options\nconst formsmd = new Formsmd(\n  composer.template,\n  document.getElementById(\"onboarding-form-container\"),\n  {\n    postHeaders: {\n      Authorization: `Bearer ${localStorage.getItem(\"token\")}`\n    }\n  }\n);\nformsmd.init();\n```\n\n## Build\n\nRun the following to build the project:\n\n```\nnpm run build\n```\n\nMake sure you have the dev dependencies installed.\n\n## Test\n\nRun the following to test the project:\n\n```\nnpm run test\n```\n\nAgain, make sure you have the dev dependencies installed.\n\n## License\n\n**Forms.md** is [licensed under Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fformsmd%2Fformsmd","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fformsmd%2Fformsmd","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fformsmd%2Fformsmd/lists"}