Skip to content

Latest commit

Β 

History

History
95 lines (71 loc) Β· 3.02 KB

File metadata and controls

95 lines (71 loc) Β· 3.02 KB

DataSnap

A lightweight Google Forms alternative built with Flask and Firebase. Create public forms in a few clicks and collect responses in real time.

πŸ”— Live Demo: https://datasnap.onrender.com

πŸ“¦ Repository: https://github.com/sheikhwasimuddin/DataSnap

Features

  • User Authentication β€” Sign up, log in, and password reset via Firebase Auth with email verification
  • Form Builder β€” Create and edit forms with custom fields from a dashboard
  • Public Sharing β€” Each form gets a unique public URL anyone can submit
  • Response Collection β€” Submissions are stored in Firebase Realtime Database with timestamps
  • Toggle Responses β€” Enable or disable form submissions at any time
  • Admin Dashboard β€” View and manage all your forms in one place
  • Form Deletion β€” Remove forms you no longer need

Tech Stack

Layer Technology
Backend Flask, Gunicorn
Database Firebase Realtime Database
Auth Firebase Authentication
Frontend Jinja2 Templates, HTML/CSS
Hosting Render

Project Structure

β”œβ”€β”€ app.py                 # Main Flask application and routes
β”œβ”€β”€ definitions.py         # Day/month name mappings
β”œβ”€β”€ wsgi.py                # WSGI entry point
β”œβ”€β”€ build.sh               # Render build script
β”œβ”€β”€ requirements.txt       # Python dependencies
β”œβ”€β”€ templates/             # Jinja2 HTML templates
β”‚   β”œβ”€β”€ index.html         # Login page
β”‚   β”œβ”€β”€ signup.html        # Registration page
β”‚   β”œβ”€β”€ dashboard.html     # User dashboard
β”‚   β”œβ”€β”€ form.html          # Public form view
β”‚   β”œβ”€β”€ temp_form.html     # Form editor
β”‚   └── ...
└── static/                # Static assets

Setup

Prerequisites

  • Python 3.11+
  • A Firebase project with Realtime Database and Authentication enabled

Environment Variables

Create a .env file in the project root:

FIREBASE_APIKEY=your_api_key
FIREBASE_AUTHDOMAIN=your_project.firebaseapp.com
FIREBASE_DATABASEURL=https://your_project.firebaseio.com
FIREBASE_PROJECT_ID=your_project_id
FIREBASE_STORAGE_BUCKET=your_project.appspot.com
FIREBASE_MESSAGING_SENDER_ID=your_sender_id
FIREBASE_APP_ID=your_app_id
FIREBASE_MEASUREMENT_ID=your_measurement_id
SESSION_SECRET_KEY=your_secret_key

Local Development

pip install -r requirements.txt
python wsgi.py

The app will run at http://localhost:5000.

Deploy to Render

  1. Push the repo to GitHub
  2. Create a new Web Service on Render
  3. Set the following:
    • Build Command: chmod +x build.sh && ./build.sh
    • Start Command: gunicorn app:app
  4. Add all environment variables from the .env section above
  5. Deploy

License

This project is open source.

Author

Made by sheikhwasimuddin