A free, 100% open-source serverless form backend platform built entirely on Google Firebase. Point your frontend HTML forms to your deployed API endpoints to natively collect, store, and act on standard form submission data without wrangling complex backend servers or database integrations.
- Effortless Deployment: Push directly to Firebase Cloud Functions and Authentication.
- Silent Spam Protection: Out-of-the-box undetectable honeypot fielding drops bots.
- Admin Dashboard UI: An elegant, minimal console to manage and securely download submissions (CSV / JSON).
- Email Notifications: Hooks straight into native SMTP transports to fire emails directly to your admins upon request receipt.
- Developer Rest API: Trigger requests gracefully through
fetch()for React / Vue projects avoiding HTML redirects.
If you have never used Firebase before, don't worry! This guide will walk you through exactly how to spin up your own secure backend form-processor from absolute scratch.
- Go to the Firebase Console.
- Click Add Project.
- Name your project (e.g.,
my-freeforms). - You can enable or disable Google Analytics (it is not required for FreeForms).
- Click Create Project. Let it finish provisioning.
- On the Firebase Project Overview page, click the Web icon (
</>) to add a web app. - Name the app (e.g.,
freeforms-frontend). You must check the box for "Also set up Firebase Hosting". - Click Register app.
- You will see a
firebaseConfigobject containing your API keys. Keep this window open (or copy the block of code), you will need it in Step 6. - Click Next through the rest of the steps until you are back at the console.
- On the left sidebar, click Build -> Authentication.
- Click Get Started.
- Go to the Sign-in method tab.
- Click Email/Password.
- Enable the Email/Password toggle (do not enable Email link) and click Save.
- On the left sidebar, click Build -> Firestore Database.
- Click Create database.
- Select Start in Production Mode (this is safest; our code will automatically upload security rules later to protect it).
- Choose a geographic region close to where you or your users live.
- Click Enable.
Google inherently restricts external network calls on the default free plan tier (Spark). Since FreeForms relies on NodeMailer sending SMTP requests outward to your inbox:
- In the bottom-left corner of the Firebase Console, click Upgrade.
- Select the Blaze (Pay-as-you-go) plan.
- Note: The free allowance on the Blaze plan is extraordinarily generous and accommodates standard indie/maker application capacity before billing actually triggers. (See Firebase Pricing).
Now that Firebase is ready, download this repository to your computer. Make sure you have Node.js installed.
- Firebaserc:
Rename
.firebaserc.sampleto.firebaserc. Open it and replace"YOUR_PROJECT_ID"with the actual Project ID of the Firebase project you created in Step 1. - Frontend Config:
Rename
public/js/firebase-config.sample.jstopublic/js/firebase-config.js. Open it and replace the placeholderfirebaseConfigvariables with your actual API keys from Step 2.
To make your Cloud Functions send emails securely without exposing your email password in the code, you need to set environments in your terminal before deploying. Open your command line/terminal and run:
npm install -g firebase-tools
firebase loginFollow the browser prompts to log in. Then set your custom SMTP server details:
firebase functions:config:set smtp.host="smtp.gmail.com" smtp.port="587" smtp.user="youremail@gmail.com" smtp.pass="YOUR_APP_PASSWORD" smtp.secure="false"(Tip: If using Gmail, you cannot use your standard password. You must generate an "App Password" inside your Google Account Security settings).
Once your configs and SMTP are set, deploy the entire stack to Google's cloud with one command:
# Install dependencies for the Cloud Functions
cd functions
npm install
cd ..
# Deploy everything
firebase deployWhen it finishes, your terminal will provide a Hosting URL (e.g., https://my-freeforms.web.app). Go there, create a new account, and start making forms!
For complete API references, fetch() payload structures, React UI template configurations, and spam-mitigation strategies, explore the interactive protocol sheet natively hosted within the dashboard: FreeForms Developer Documentation
FreeForms operates on standard MIT Licensing structure. Pull requests, feedback, and issue submissions are actively monitored and encouraged!