Skip to main content

Formia - A Simulation of Google Forms. Part 1 - My Experience

This time I would like to share one of the exciting moments in my life, in which I understood what the Client - Server Concept means and by the Grace of God, simulated one of the Internet Giant's product, Google Forms from scratch. I finished the project a couple of months ago. Here is the story. (and the project).

Analysis page, See more screenshots
Screenshots

Install Formia.


What it is?

  • Formia is an incredible web application for Massive Feedback Analysis.
  • Developed on May 2015.
  • More than 4000 lines of codes.
  • Flexible.
  • Well structured.
  • This can be viewed as a simulation of Google Forms, a product hosted by the Internet Giant, Google.
  • Service available in mobile, laptop, tabs.

Languages

Formia is constructed on 7 languages, including PHP, AJAX, JS, SQL etc.
The Analysis part utilizes Google APIs which is one of the coolest (and hottest) feature.

Usability

Formia is optimized for easiness.
User friendly just like Google Forms.
Heavily abstracted.
Screenshots are attached below.

Behind the Scenes

--

--

My Experience


A few months ago our teacher turned us into groups and asked us to build a project (online or offline) that utilises a database structure. We've no previous experience in software development. So we're unaware of the difficulties in implementing the idea and started dreaming.
Previously I had experience with Google Forms, which is an awesome tool in taking online surveys. I had used Google Forms to take market studies and evaluations for my "next thing", which is currently in pipeline. (I'll be writing an article after its official launch). Google Forms awesomely covered my mind, as it was one of my ideas to develop such a software that takes online surveys and evaluates it.
I came to my group with the idea of simulating Google Forms, without knowing the complexities behind the development. We described the idea before our teacher and enquired her about its feasibility. We were only 50% sure.
We decided to rewind from zero. Opened Chrome and head to w3schools for HTML, then CSS. Some tutorials from other web communities also aided us. We slowly created the UI from pure HTML and CSS, neither Bootstrap, nor Foundation or Boilerplate or any other frameworks.
Then thought about user operations. We found PHP could help us there and went for it. As a whole the project is a combination of more than 6 languages. We also used Google APIs and JS libraries to enhance the performance. We also briefly optimized the queries so as to reduce the number of database fetches, which is a slow process. We also reduced the number of variables for better memory efficiency.

We had little time to sit and think. Because of this hurry-bury there can be some bugs. For example, the UI is badly rendered on some browsers and in mobile views.  Anyway we missed a lot of features. But as per the test conditions, no compromise in performance. I gladly invite you to improve this project on Github. (will be available on 12/15/2015)


The Report Starts like this...


This is the first web project in our life. So there were phases we struggled a lot and spent weeks for finding the suitable fix. We extremely thank THE GOD ALMIGHTY for blessing us with knowledge, guidance, unvarying perseverance from the very beginning to the end, and everything else for the successful completion of this venture.   We would like to take this opportunity to express our sincere gratitude towards all of those who have guided in the successful completion of this endeavor.  We thank our principal Dr. HARI V S for providing us all the facilities to complete this project. We are also deeply indebted to Mr. BINU V. P, Head of the department Computer science, project guide Ms. NIMMI. V and Ms. ACHU MARIYAM JOHN for having a keen interest in the development of our project, providing us with detailed information regarding the system and ample guidance throughout this project.     We express our extreme gratitude to our parents and friends for their full-fledged support for the completion of the project.    We are also thankful to Google, StackExchange and to some web communities, who helped us extensively at some troubling phases such that, without them this project would be incomplete.

Read entire document


The Team



Me, Vajahath Ahmed

Ajmal Nazeer

Jiju K Raju
Azhar Ibraheem

Harikrishnan


Comments

Popular posts from this blog

Talky Messenger Documentation & Setup

( Github ) Just created a chat app that runs in Node and Socket. the attempt was worthy. Talky is a messenger app built with Node, Express, Socket, Angular & Bootstrap. It's like a server-client structure. (But obviously not like the one we done at OS lab using shared memory). It has a broadcasting structure. Talky does not keep a log on chat. i.e., It doesn't have a memory or database. When we close the browser window, chat history is lost. There I also added a basic console, protected by a password, to send real-time notifications to active clients. The name 'Talky' was suggested by a friend of mine. (hey, thank you for that. The fact is that I am not really good at naming...😝) What if sometimes your college blocks WhatsApp? Try Talky. ( There is also a website on internet in the name of 'Talky' which has no connection with this one. ) Download Talky Messenger To use Talky, all you need is 3 things: Node server Source code

Repairing my keyboard gone wrong and then right.

Few months ago I tried to repair an old unused keyboard. I opened it cleaned and put everything back in place. But didn't work. Thinking it has met it's end-of-life, I gave it to my sister's daughter, 2 year old Komal. She went hard with it. Once she even thrown it. To my surprise, after a few throws, it's now working properly 🙆.

How to pass variables to res.render() in Node.js

I was trying to figure out how to render a view inside a view, as I was stuck with this issue. Horrible Effects of Misplaced Extensions ;) I was using Node.js platform with ejs template engine. My index.ejs file has an included header.ejs file. Everything works well except that I can't pass values to the variable status in header.ejs. Here is my abstract code... index.ejs header.ejs app.js The most funniest solution ever! The solution is as easy as this. Just remove .ejs extension from the include command. I spent at least an entire night to figure it out.