The Open-Source Typeform Alternative

Overview

Logo

snoopForms

The Open-Source Typeform Alternative
Website | Join Discord community

License Join snoopForms Discord


⚠️ Note: This repository is still in an early stage of development. We love the open source community and want to show what we are working on early. We will update this readme with more information once it is safe to use. Until then, feel free to share your thoughts, contact us, and contribute if you'd like.


About snoopForms

screenshot-snoopForms

Spin up forms in minutes. Pipe your data exactly where you need it. Maximize your results with juicy analytics.

Features

  • Work with the React Lib or use our No Code Builder to build exactly the forms you need.
  • Pipe your data where you need it. Don’t wait for your form provider to finally build the integration you desperately need.
  • Since you can self-host Snoop Forms, it’s 100% compliant with all privacy regulations.
  • How users interact with your form can be as important as their input. Don’t miss anything with our best-in-class analytics.
  • We aim for the best possible developer experience. Use what you like, build on top what you need. Everything is possible.

Built With

Getting started

To get the project running locally on your machine you need to have the following development tools installed:

  • Node.JS (we recommend v16)
  • Yarn
  • PostgreSQL
  1. Clone the project:
git clone https://github.com/snoopForms/snoopforms.git && cd snoopforms
  1. Install Node.JS packages:
yarn install
  1. Create a .env file based on .env.example and change it according to your setup. Make sure the DATABASE_URL variable is set correctly according to your local database.
cp .env.example .env
  1. Use the code editor of your choice to edit the .env file.

  2. Make sure your PostgreSQL Database Server is running. Then let prisma set up the database for you:


npx prisma migrate dev

  1. Start the development server:

yarn dev

You can now access the app on https://localhost:3000

Deployment

The easiest way to deploy snoopForms yourself on your own machine is using Docker. This requires Docker and docker-compose on your system to work.

Clone the repository:


git clone https://github.com/snoopForms/snoopforms.git && cd snoopforms

Create a .env file based on .env.example and change it according to your setup.


cp .env.example .env && nano .env

Start the docker-compose process to build and spin up the snoopForms container as well as the postgres database.


docker-compose up -d

You can now access the app on https://localhost:3000

Contributing

Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are greatly appreciated.

  1. Fork the project
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Make your changes
  4. Commit your changes (git commit -m 'Add some AmazingFeature')
  5. Push to the branch (git push origin feature/AmazingFeature)
  6. Open a pull request

License

Distributed under the AGPLv3 License. See LICENSE for more information.

Comments
  • feat(github): add social logins (github, google)

    feat(github): add social logins (github, google)

    Issues: #18 #36

    TODO:

    • [x] Github Login Button (styling)
    • [x] Add Github provider
    • [x] Add required environment variables
    • [x] Google Login Button
    • [x] Add Google Provider
    • [x] Add required environment variables
    opened by kymppi 7
  • Add default flow if SMTP data not provided

    Add default flow if SMTP data not provided

    • adds canSendEmails function which reads the SMTP config provided
    • only send confirmation mail on signup when canSendEmails returns true
    • conditionally route to verification requested page or to newly added "go to login" page.

    Probably could also leave out the login step, but I felt like this is the better UX :)

    opened by timothyde 3
  • Pipeline settings instructions need link to documentation

    Pipeline settings instructions need link to documentation

    The instruction below is displayed when creating or updating a pipeline: (Using webhook as example)

    Configure your webhook. To learn more about how webhooks work, please check out our docs.

    However, the term "docs" above is not linked to the documentation page, hence requiring a few more clicks from the user to search for it.

    Proposed solution:

    Link the instruction to the documentation page for both webhook and email notification pipelines settings, available here: https://github.com/formbricks/formbricks/blob/main/apps/web/components/pipelines/webhook/SettingsComponent.tsx https://github.com/formbricks/formbricks/blob/main/apps/web/components/pipelines/emailNotification/SettingsComponent.tsx

    opened by syahzuan 2
  • refactor: phone, website, number components, add: nixos development

    refactor: phone, website, number components, add: nixos development

    Hey, I wanted to refactor the phone, website, and number components. I also added nixos development configs for everyone else who also uses nix to speed up the development time.

    Resolves #99 Resolves #98 Resolves #97

    related: https://github.com/formbricks/snoopforms/pull/119

    opened by kymppi 2
  • build: add NEXTAUTH_URL_INTERNAL to example env

    build: add NEXTAUTH_URL_INTERNAL to example env

    From the NextAuth docs:

    If provided, server-side calls will use this instead of NEXTAUTH_URL. Useful in environments when the server doesn't have access to the canonical URL of your site.

    In our case, we hit an issue where the server-side calls were failing due to some strange dns resolution behavior. Using localhost here fixed it. Safest thing is probably to always force this to localhost.

    opened by chetan 2
  • Refactor PhoneQuestion Component

    Refactor PhoneQuestion Component

    Refactor/Rewrite the PhoneQuestion Component of EditorJS/NoCode-Editor to be better maintainable.

    The PhoneQuestion Component (snoopforms/components/editorjs/tools/PhoneQuestion.tsx) was build using an old pattern for EditorJS. New Components like the MultipleChoiceQuestion use a new approach which works much better with React. The old components needs to be refactored / rewritten to work using the newer approach. For that you can copy a newer component as a scaffolding and insert the logic and UI components of the PhoneQuestion.

    enhancement good first issue help wanted 
    opened by mattinannt 2
  • Refactor WebsiteQuestion Component

    Refactor WebsiteQuestion Component

    Refactor/Rewrite the WebsiteQuestion Component of EditorJS/NoCode-Editor to be better maintainable.

    The WebsiteQuestion Component (snoopforms/components/editorjs/tools/WebsiteQuestion.tsx) was build using an old pattern for EditorJS. New Components like the MultipleChoiceQuestion use a new approach which works much better with React. The old components needs to be refactored / rewritten to work using the newer approach. For that you can copy a newer component as a scaffolding and insert the logic and UI components of the WebsiteQuestion.

    enhancement good first issue help wanted 
    opened by mattinannt 2
  • Refactor NumberQuestion

    Refactor NumberQuestion

    Refactor/Rewrite the NumberQuestion Component of EditorJS/NoCode-Editor to be better maintainable.

    The NumberQuestion Component (snoopforms/components/editorjs/tools/NumberQuestion.tsx) was build using an old pattern for EditorJS. New Components like the MultipleChoiceQuestion use a new approach which works much better with React. The old components needs to be refactored / rewritten to work using the newer approach. For that you can copy a newer component as a scaffolding and insert the logic and UI components of the NumberQuestion.

    enhancement good first issue help wanted 
    opened by mattinannt 2
  • Can't download responses from a form

    Can't download responses from a form

    Found a bug? Please fill out the sections below. 👍

    Issue Summary

    Can't download responses from a form- click download csv and nothing happens, get the following message in console each time I click Download as CSV

    Steps to Reproduce

    1. On a completed form go to responses
    2. Clicked Download
    3. Cliced Download as CSV
    4. Nothing happens

    Here is what the console error message

    695-eb4a44993a5e2360.js:1 Uncaught (in promise) TypeError: Cannot use 'in' operator to search for 'DsbCfK_RPK' in undefined
        at o (695-eb4a44993a5e2360.js:1:4644)
        at l (695-eb4a44993a5e2360.js:1:4906)
        at responses-7f95b7f64b81125c.js:1:7886
        at Array.map (<anonymous>)
        at responses-7f95b7f64b81125c.js:1:7855
        at s (main-088a327fef529dcb.js:1:95873)
        at Generator._invoke (main-088a327fef529dcb.js:1:95661)
        at forEach.e.<computed> [as next] (main-088a327fef529dcb.js:1:96296)
        at n (396-d3e1f8f371def37b.js:1:104808)
        at s (396-d3e1f8f371def37b.js:1:105011)
    o @ 695-eb4a44993a5e2360.js:1
    l @ 695-eb4a44993a5e2360.js:1
    (anonymous) @ responses-7f95b7f64b81125c.js:1
    (anonymous) @ responses-7f95b7f64b81125c.js:1
    s @ main-088a327fef529dcb.js:1
    (anonymous) @ main-088a327fef529dcb.js:1
    forEach.e.<computed> @ main-088a327fef529dcb.js:1
    n @ 396-d3e1f8f371def37b.js:1
    s @ 396-d3e1f8f371def37b.js:1
    (anonymous) @ 396-d3e1f8f371def37b.js:1
    (anonymous) @ 396-d3e1f8f371def37b.js:1
    (anonymous) @ responses-7f95b7f64b81125c.js:1
    onClick @ responses-7f95b7f64b81125c.js:1
    onClick @ 730-ee622e46ba99a02d.js:1
    $e @ framework-bb5c596eafb42b22.js:1
    Ye @ framework-bb5c596eafb42b22.js:1
    (anonymous) @ framework-bb5c596eafb42b22.js:1
    Nr @ framework-bb5c596eafb42b22.js:1
    Tr @ framework-bb5c596eafb42b22.js:1
    (anonymous) @ framework-bb5c596eafb42b22.js:1
    Ie @ framework-bb5c596eafb42b22.js:1
    (anonymous) @ framework-bb5c596eafb42b22.js:1
    Fr @ framework-bb5c596eafb42b22.js:1
    Jt @ framework-bb5c596eafb42b22.js:1
    Zt @ framework-bb5c596eafb42b22.js:1
    t.unstable_runWithPriority @ framework-bb5c596eafb42b22.js:1
    Ql @ framework-bb5c596eafb42b22.js:1
    Me @ framework-bb5c596eafb42b22.js:1
    Xt @ framework-bb5c596eafb42b22.js:1
    

    Environment

    • [x] snoopForms Cloud (app.snoopforms.com)
    • [ ] self-hosted snoopForms, version/commit: [please provide]

    Additional Context

    Browsers tested: Chrome and Firefox

    bug 
    opened by hjpithadia 2
  • Red asterisk for required fields does not show

    Red asterisk for required fields does not show

    Issue Summary

    when a user click the '*'(red asterisk) button to make a required filed, the form does not show.

    Steps to Reproduce

    1. Creates form with 'No-Code Builder'.
    2. Click the 'add' button to add a question.
    3. In the question, click the 'click to tune' button to edit the question.

    If a user click the red asterisk button to describe that the question need to get an answer, only the type of 'Long Text Question' shows red asterisk. And Other types of questions do not show red asterisk even though a user click the red asterisk button.

    bug 
    opened by choeunlee 3
  • Typo Error in Email Notification Pipeline Settings

    Typo Error in Email Notification Pipeline Settings

    The instruction at 'Email Notification' pipeline settings: (https://github.com/formbricks/formbricks/blob/main/apps/web/components/pipelines/emailNotification/SettingsComponent.tsx)

    Set up this webhook to fit your needs.

    I think it should be changed to 'Set up this Email Notification to fit your needs.'

    bug 
    opened by choeunlee 0
  • token-reward after finishing form

    token-reward after finishing form

    Is your proposal related to a problem?

    Get more people in web3 communities to fill out a survey by incentivizing

    (Write your answer here.)

    Describe the solution you'd like

    so in a Web3 context i would do it like this

    1. user connects wallet
    2. user finishes the form
    3. at thank you page, user clicks on some "gift"
    4. gift is opened and user gets a random POAP NFT / amount of Token

    Describe alternatives you've considered

    (Write your answer here.)

    Additional context

    (Write your answer here.)

    opened by jobenjada 0
  • Disable public sign-up

    Disable public sign-up

    Discussed in https://github.com/formbricks/snoopforms/discussions/112

    Originally posted by salim-b October 17, 2022 Thanks for this promising open source project!

    I wonder: Is it possible to configure snoopForms to have public sign-up disabled? And does it instead allow existing users to invite new users? Or how would I control user account creation on a self-hosted instance?

    enhancement 
    opened by mattinannt 0
  • Add examples

    Add examples

    Is your proposal related to a problem?

    There are no example snoopForms, making you need to create an account just to test it out

    Describe the solution you'd like

    Examples in the README and website

    Describe alternatives you've considered

    Dealing with it

    opened by aMySour 2
Releases(@formbricks/[email protected])
  • @formbricks/[email protected](Dec 8, 2022)

  • @formbricks/[email protected](Dec 8, 2022)

  • @formbricks/[email protected](Nov 23, 2022)

    Minor Changes

    • 493bc3c: Add Input Types: Checkbox, Email, Number, Password, Phone, Radio, Search, Url | Add validations: accepted, email, url
    Source code(tar.gz)
    Source code(zip)
  • @formbricks/[email protected](Nov 22, 2022)

  • @formbricks/[email protected](Nov 16, 2022)

  • v0.4.1(Oct 28, 2022)

    New Features 🎉

    • E-Mail Pipeline that enables you getting a notification with every new submission or page submission by @fdis111 in https://github.com/formbricks/formbricks/pull/89

    Other 🤩

    • Refactor TextQuestion EditorJS Component by @devkiran in https://github.com/formbricks/formbricks/pull/119
    • Refactor Phone, Website, Number EditorJS Components, add: nixos development by @kymppi in https://github.com/formbricks/formbricks/pull/120
    • Add Nixos Dev Environment Support by @kymppi in https://github.com/formbricks/formbricks/pull/120
    • Upgrade to Next.js 13 by @mattinannt in https://github.com/formbricks/formbricks/pull/122

    New Contributors 👨‍👩‍👧‍👦

    • @fdis111 made their first contribution in https://github.com/formbricks/formbricks/pull/89
    • @kymppi made their first contribution in https://github.com/formbricks/formbricks/pull/120

    Full Changelog: https://github.com/formbricks/formbricks/compare/v0.4.0...v0.4.1

    Source code(tar.gz)
    Source code(zip)
  • v0.4.0(Oct 18, 2022)

    New Features 🎉

    • Help Texts for questions in react library and Nocode builder by @timothyde in https://github.com/formbricks/snoopforms/pull/61
    • Possibility to disable Signup via environment variable #113 by @mattinannt in https://github.com/formbricks/snoopforms/pull/114

    Bugfixes 🐛

    • Links not working in Nocode Editor by @mattinannt in https://github.com/formbricks/snoopforms/pull/94
    • introduce NEXTAUTH_URL_INTERNAL to fix routing issues in some cases by @chetan in https://github.com/formbricks/snoopforms/pull/108

    Other 🤩

    • New monorepository structure for snoopForms using turborepo & pnpm #95 by @mattinannt in https://github.com/formbricks/snoopforms/pull/105
    • Performance Optimization by using environment variables at build time #110 by @mattinannt in https://github.com/formbricks/snoopforms/pull/111
    • Refactor EmailQuestion Component by @devkiran in https://github.com/formbricks/snoopforms/pull/109
    • Improve Development Workflow by using Mailhog and VSCode Dev Containers by @npaulsen in https://github.com/formbricks/snoopforms/pull/79

    New Contributors

    • @tennox made their first contribution in https://github.com/formbricks/snoopforms/pull/83
    • @npaulsen made their first contribution in https://github.com/formbricks/snoopforms/pull/79
    • @chetan made their first contribution in https://github.com/formbricks/snoopforms/pull/108
    • @devkiran made their first contribution in https://github.com/formbricks/snoopforms/pull/109

    Full Changelog: https://github.com/formbricks/snoopforms/compare/v0.3.0...v0.4.0

    Source code(tar.gz)
    Source code(zip)
  • v0.3.0(Sep 1, 2022)

    New features 🎉

    • Add Webhook Integration by @matthiasnannt in https://github.com/snoopForms/snoopforms/pull/75
    • Unpublish forms by @timothyde in https://github.com/snoopForms/snoopforms/pull/59
    • Forgot password functionality by @venarius in https://github.com/snoopForms/snoopforms/pull/63
    • Enable Signup when SMTP data not provided by @timothyde in https://github.com/snoopForms/snoopforms/pull/54
    • Delete single submissions by @timothyde in https://github.com/snoopForms/snoopforms/pull/57

    Bugfixes 🐛

    • Delete button not visible with many forms by @jobenjada in https://github.com/snoopForms/snoopforms/pull/16
    • Truncate long formnames #56 by @matthiasnannt in https://github.com/snoopForms/snoopforms/pull/60
    • Fix issues with Posthog Tracking by @matthiasnannt in https://github.com/snoopForms/snoopforms/pull/71
    • ... a lot more

    Other enhancements 🤓

    • #49: Add 404 page by @timothyde in https://github.com/snoopForms/snoopforms/pull/58

    New Contributors 👨‍👩‍👦

    • @venarius made their first contribution in https://github.com/snoopForms/snoopforms/pull/63

    Full Changelog: https://github.com/snoopForms/snoopforms/compare/v0.2.0...v0.3.0

    Source code(tar.gz)
    Source code(zip)
  • v0.2.0(Aug 8, 2022)

  • v0.1.0(Jun 25, 2022)

    First snoopForms Release 🎉🎉 v0.1.0

    • Create Forms using our simple No-Code-Editor. Currently we provide Text-Input-Questions and will add new Question Types soon
    • Create a Form using our snoopReact Library
    • Share a link to your No-Code-Form and collect submissions
    • View a submission summary with basic stats and a summary of your questions
    • View detailed submission and see every answer of every user
    • View basic analytics like unique users count or when the last submission came in
    • Download your submissions as CSV
    Source code(tar.gz)
    Source code(zip)
Owner
snoopForms
snoopForms
🔑 Keagate is an open-source, high-performance alternative to popular cryptocurrency payment gateways such as Coinbase Commerce, CoinGate, BitPay, NOWPayments, CoinRemitter, CoinsPaid and more.

⛩️ Keagate – A High-Performance Cryptocurrency Payment Gateway ?? This project is actively in development ?? Table of Contents About the Project Purpo

null 76 Jan 3, 2023
Cal.com (formerly Calendso) The open-source Calendly alternative

Cal.com (formerly Calendso) The open-source Calendly alternative. Learn more » Slack · Website · Issues · Roadmap About The Project Scheduling infrast

Cal.com, Inc. 14.8k Dec 28, 2022
Lumos is an AWS Lambda visualizer and open source alternative to AWS CloudWatch.

Lumos Lambda Metrics Visualizer Table of Contents About Lumos Techologies Used Getting Started Key Lambda Metrics How to Contribute License Contributo

OSLabs Beta 36 Nov 5, 2022
Reference for How to Write an Open Source JavaScript Library - https://egghead.io/series/how-to-write-an-open-source-javascript-library

Reference for How to Write an Open Source JavaScript Library The purpose of this document is to serve as a reference for: How to Write an Open Source

Sarbbottam Bandyopadhyay 175 Dec 24, 2022
An Open-Source Platform to certify open-source projects.

OC-Frontend This includes the frontend for Open-Certs. ?? After seeing so many open-source projects being monetized ?? without giving any recognition

Open Certs 15 Oct 23, 2022
Shikhar 4 Oct 9, 2022
This is a project for open source enthusiast who want to contribute to open source in this hacktoberfest 2022. 💻 🎯🚀

HACKTOBERFEST-2022-GDSC-IET-LUCKNOW Beginner-Hacktoberfest Need Your first pr for hacktoberfest 2k22 ? come on in About Participate in Hacktoberfest b

null 8 Oct 29, 2022
A recreation of a startpage posted on Reddit without the source, so I rewrote it in Next.js + Tailwind for the open source community.

Startpage "Figma Balls" Rewrite Why Did I Make This I saw a startpage posted on the subreddit r/startpages that I thought looked nice, but when I look

Thomas Leon Highbaugh 5 Mar 29, 2022
Let's participate in Hacktoberfest and contribute to open-source. Star the repo and open a PR to get accepted.

Let's Contribute To Open-source First Contributions This project aims to simplify and guide the way, beginners can make their first contribution towar

Ehmad Saeed⚡ 5 Dec 3, 2022
An informal website of the alternative of KdB, an curriculum planning support system used in University of Tsukuba

alternative-tsukuba-kdb An informal website of the alternative of KdB, a curriculum planning support system used in University of Tsukuba. This reposi

いなにわうどん 27 Nov 25, 2022
A alternative to Github Copilot for vscode until you get the access to github copilot

Clara-Copilot ?? Code Howdy ?? I know you guys are ?? waiting for Github Copilot Here is a alternative one for now ?? ⭐ Star is all i want nothing muc

BadBoy17G 245 Jan 8, 2023
GetOsLocalesCrossPlatform - A cross platform alternative to get locales used on the platform. Works on Node, Electron, NW.js and Browsers

getOsLocalesCrossPlatform A cross platform alternative to get locales used on the platform. Works on Node, Electron, NW.js and Browsers This script is

null 1 Jan 2, 2022
A Fast & Light Virtual DOM Alternative

hyper(HTML) ?? Community Announcement Please ask questions in the dedicated discussions repository, to help the community around this project grow ♥ A

Andrea Giammarchi 3k Dec 30, 2022
A container-friendly alternative to os.cpus().length. Both cgroups v1 and cgroups v2 are supported.

node-cpu-count A container-friendly alternative to os.cpus().length. Both cgroups v1 and cgroups v2 are supported. Installation $ npm install node-cpu

Jiahao Lu 2 Jan 17, 2022
A JSDOM alternative with support for server side rendering of web components

About A JSDOM alternative with support for server side rendering of web components. Happy DOM aim to support the most common functionality of a web br

David Ortner 1.6k Dec 30, 2022
Privacy-focused Google Fonts alternative

Privacy-focused Google Fonts CDN alternative I wrote it in an hour, so please report bugs here. Several improvements could be made here and there, so

coolLabs 245 Dec 27, 2022
🔧 Alternative to 'eval' in JavaScript that is customizable and safer!

?? better-eval An alternative to eval() in JavaScript that is customizable and safer! The eval function sucks, and there lacks alternatives that provi

Bharadwaj Duggaraju 32 Sep 14, 2022
An extension to Panic's Nova editor currently providing an alternative file browser.

Explorer.novaextension Welcome to the repository of the Explorer Nova extension. The actual extension and its README can be found only one directory a

null 7 Nov 14, 2022