Ever wanted to easily create a form Without relying on big tech (like Google or Microsoft) or having absurdly low limits (like Limesurvey)? This is for you! Create your form for free and publish it on your favorite free hosting provider (like GitHub / GitLab / Cloudflare Pages). No limitations, no cost!
Additionally this is an extension to Markdown! Write all the form elements in easy-to-write, easy-to-read format and include Markdown for styling everything! And you can edit it offline in your favorite text editor!
This tool already includes many different question types to gather different kinds of insightful data:
🖹 Free Text (one or multi-line; optionally add auto-completion suggestions; different types: number, date, email, etc.)
🔘 Multiple Choice (Radio; optionally add an "other" answer to allow free text answers)
☑ Checkbox (optionally add an "other" answer to allow free text answers)
🌢 Dropdown (optionally add optgroups / non-selectable entries for categorization)
---
Note: When clicking submit in the demo survey, make sure to open with a mail application (such as Outlook, GMail, etc.) when prompted. To submit the survey you need to send that email, so you need to have an email account set up in that mail application.
(When doing your own forms you can choose alternative methods, which don't require this step)
No followers yet
Once you ship this you can't edit the description of the project, but you'll be able to add more devlogs and re-ship it as you add new features!
I needed to fix a small bug. Thankfully I noticed it before shipping:
My /core_convert/filter.py was coded really weirdly (by me), so not every case was covered. I first didn't know what happened, but after I found the error it was a quite simple fix using some regex instead of the Python native str in str.
Additionally I created a new thumbnail to hopefully get more votes on this project!
I did some things from /todo.txt, to make the service a better product in general:
- complete CSS rework
- other text inputs only visible when other option is selected (may change to active in the future)
- filter.py full rework, as it was very bad code quality before.
This is also the release of v1.0, as I'm kinda afraid it wouldn't go through until end of August otherwise. So everything (should) work(s) now!
I have worked around 2 weeks on this with a very bad internet connection (max. 8kB/s), so Summer of Making didn't load at all. Here is a devlog of these two weeks and 5½ hours of work:
This project is getting close to a production-ready state, however my to-do list of things I could somewhen do is incredibly loooong... I have, however managed to already publish one form with fMD, and it worked great!
Features added:
- DROPDOWN - select your element out of a dropdown
- DATALISTS - get context-based suggestions for text inputs - BROKEN (MD processing breaks everything there)
- GLOBAL OPTIONS - set preferred submit method, title, etc.
- WORKING SUBMIT - using different services (formsubmit, mailto: link, etc.) the form can FINALLY be submitted! using formsubmit, it is a clean user experience, as no mail program, etc. needs to be installed.
- probably more I forgot about
Continued on the documentation for a new feature I will reveal once implemented! As a small hint: It's included in the Syntax of the screenshot.
improved a lot on the documentation (GitHub wiki), made a doc page for every question type, currently working on global options.
Additionally made a getting started guide for new users.
Added docs for different question types, so users can easily review the syntax.
added 'other' field for checkbox and radio questions
Minor bug fixes, e.g. newline chars in textareas not being transmitted to the mailto: URL
small improvement: changed a more complicated while statement to a regex '-+', to turn multiple hyphens in a generated qid into 1.
New Feature!
textareas, now you can promt your users to submit longer feedback, by including a multi-line textarea, just like the one you write your DevLogs in.
Bug Fixes:
I've fixed many minor bugs, the biggest of them being MD in divs not being rendered. Using the Markdown extension mdinhtml, I was able to still have it rendered though.
I've finished the stylesheet to make it look good, I've used multiple variables, so I can update them via JS and global options in the document in future DevLogs.
Here is the link for the live prview: https://0yqc.github.io/formsMD/output/page1.html
I started some work on the CSS to not only make it functional but also visually appealing, this is not finished yet, I'll make it look more beautiful tomorrow.
What's planned already?
- Options for the result, e.g. some CSS colors, info about where to send emails, etc.
- logic support, e.g. dynamically hide or show questions/answers
and more...
(In case you wonder, the submit action on the demo page doesn't work yet as the demo tool doesn't support JS)
(The currently generated page is just some random text and options I wrote to test everything out.)
first thing I did: added the support for all text input fields, as I started this yesterday it wasn't as difficult.
second thing: added a simple submit function with some JS cloning, I'll need to change it, since currently it always sends all form submissions to my personal email address. the plan is, to include these options at the top of the file:
- document name for the HTML title and email subject
- receiving email address for receiving all form submissions
I started to make the compiler for open-ended input questions (, etc.), however for that I needed to implement an options system where questions can implement options. And that took longer than expected...
So here I am after 1h37m and haven't finished text input yet, but am nearly done with the options, which will be a time-saver also for other question types.
If you wonder, why the code in the screenshot looks so short for that long coding time, it's because I tried a lot of other options before coming up with this complicated regex.
Added support for multiple-choice questions!
Now you can ask your survey or form participants a question where they need to decide themself.
It was basically just copying over the code from checkboxes and changing the generated HTML a bit to now include radio buttons.
Next up will be text input fields (+ email, etc.) and textareas.
Reworked Compiler!
Now I included more reusable code and made it cleaner in general by utilizing f-strings. Additionally the output now looks way cleaner and is even better styleable using CSS, since I used more IDs and classes.
with the new compiler I'll probably be able to do other question types in the near future...
finished up the checkbox conversion and fixing some bugs
added the markdown library to convert markdown to HTML (sudo apt install python-markdown-doc), so now I get the first outputs
as you can see on the screenshot, this project needs a lot of work to be competitive with the major forms platforms, but I'll maybe get there eventually
finished basic compiling for checkbox questions, the screenshot shows all the code I did for that.
is it the most efficient solutions? i don't think so
but does it work? yes, so I'm gonna keep it (at least for now)
next up will be multiple choice questions and then text input fields. In the end I would like logic and advanced options, let's what this project will evolve to...
core conversion system: Big progress!
✅ open and process files for compiling
✅ filter out formsMD blocks for further compiling
⏳ compile fMD blocks into HTML elements
If you want to see this project process, consider following this project. If you have questions, just drop them in the comments or send them to 0yqc@duck.com
If you like this project, you may want to visit the GitHub repository.
Don't have a new image, but I started to do some work on the Core Conversion system, which is written in Python.
I'm not as fast, so in this hour I've mainly set the files up and done some script, that they can open input files.
My Plan:
- Filter out lines that are from formsMD and not regular MD
- let them compile using a custom compiler I will write
- insert the compiled HTML
- a MD library will handle the rest
Started to work on how the markup syntax looks like. It may change in the future though :)
Basically this should in the end be a python tool that converts this Markdown to a HTML/JS site. If you have any ideas on how to save the results using only a front-end site (e.g open-source online-services), please send them to 0yqc@duck.com. Thanks!