Summer of Code/2018/Sugar Labs Social

< Summer of Code‎ | 2018
Revision as of 05:37, 16 October 2018 by PFidelis (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Google Summer of Code 2018 Project Proposal

Project Title: Sugar Labs Socil


Mentors

  • Jaskirat Singh
  • Samson Goddy
  • Hrishi Patel
  • Shivang Shekhar
  • Peace Ojemeh
  • Abdulazeez Abdulazeez

About Me

Name:Hardik Modi
Institute:Dhirubhai Ambani Institute of Information and Communication Technology
Course:B.Tech in Information and Communication Technology
Year:2nd Year (4th semester)
Email:hmodi2457@gmail.com
Mobile No.:9687523781
IRC Nickname:Hardik97122
Sugarlabs wiki Username:Hardik97122
GitHub:hardiked
Linkedin:Hardik modi
Twitter:HarduModi
Languages:English.Hindi
Timezone:Gandhinagar,India UTC+5:30

Open Source Contribution

Have you participated in an open-source project before? If so, please send us URLs to your profile pages for those projects or some other demonstration of the work that you have done in open-source. If not, why do you want to work on an open-source project this summer? Yes, I have contributed in two open source projects. First one is android application for playing the game of "Teenpatti" It is the part of effort put forwarded by our college community by organising DA(Dhirubhai Ambani) Winter Of Code. and second open source project is about page down editor that we have seen on stack overflow sites. It creates the directive for using it easily in angular projects. I have written blog on medium for its documentation and also have made some changes as "insert image" button is not working as expected.It is really great experience when developers around the globe are working together to make our life easy and to make internet a better place. and this is what inspires me a lot to work in open source project.

The Project

Abstract
I am working on SugarLabs Social. It is website project that would help people understand and discuss the project(s) around sugar labs.This project can attract a wide range of community from developers to teachers and parents.It helps to connect all communicate together on one platform.
Developers:

  • Saves the time of developers as they don’t have to wander here and there for a solution it is handy.
  • One to one discussion with those who might solve their problem through chat application.
  • Helps developers to connect with the community and thus they are aware of what is going on in various projects.
  • New developers can directly find the project they are interested in without wasting time and can utilise that time in understanding the codebase.


Teachers

  • Can discuss the problem they are facing in teaching their students and might get help from someone out there.
  • Can discuss their idea for assignment for their students online with other teachers and thus can come up with a more productive assignment for students as well as better teaching techniques.



Features

  • Secure Login/signup:It is necessary features to prevent fake accounts. A user receives email verification after signing up and after clicking on that link user can enter in our website if he wants to write new blogs.
  • Dashboard:This is the place where a user can see his profile, blogs published by him, most popular blogs on our site and list of the people he is following so that he can select anyone to chat with. He can update his profile picture if he wants to do so.
  • Pagedown editor:I have used the page down that StackOverflow uses on its website and thus can give a user much better experience.
  • Follow":A user can follow another user that might write about the topics he is interested in and will get notifications whenever he published new blog so that he might immediately have a look at it.
  • Chat Platform:A user can chat with people he is following to get an instant help regarding their doubts in an understanding the code base or any other problem like this. and thus in this way they are getting help from someone who might have a similar problem earlier and that too via one to one chat.
  • Like: A user can like the post to show their appreciation for the creator and this is very helpful to other people in the way that we can order blogs in particular category in order of likes, so we can find out the thing which is more helpful first in the list.
  • Comments:User can comment on other's blog to suggest some improvements or a better way of doing the same thing or even can ask if he does not understand anything.
  • History tab:It is like most of the website have today. SO that they can synchronize their task on any device. Whatever they read on a laptop is available on all devices. So they don't have to remember what they are doing on any other device.
  • Bookmarks:User can bookmark the article that they liked very much or want to read it again after some time. It is also synchronized on all the devices so that they can access their bookmarks from anywhere.
  • Social share:User can share the blog on Facebook or Twitter. It is like free advertising of our website by our users. People will recognize it once tweets and Facebook like start to increase. We may also add share buttons for Google+ and LinkedIn as these are also widely used social networking site.
  • Read time:It helps a user to estimate the read time of the blog and thus plan accordingly to add it to bookmark or read it right now.

In short, it is not only blog website but all in one website connecting all its users to one another in a much better way.

  • UI design:I have planned to use materialize CSS based on Google’s material design as it really gives a much better look to the website. I have implemented some pages like signup and log in with this type of UI.



Technologies I am using:

I am going to develop this project completely from scratch without using any third-party plugins like WordPress, etc. I am developing this project using AngularJS, Mongo as our database, GridFS to store our file so that we don’t have to store it on our local file system, multer for handling multipart/form-data, which is primarily used for uploading files It has very high efficiency in doing this stuff. Materialize CSS for UI design. Nodejs for developing API for our project. Node mailer for sending email verification link to the user. Algolia for providing a better search box for the user to search blog or username.

TImeline

  • GSoC is 12 weeks long, with an additional 25 days of community bonding period.
  • I have divided my work according to weekly basis. I have assigned 10 days to implement some difficult part of implementing and testing the proper working of the search box and stuff like that.
Days Tasks
14 May to 20 May Develop an outline of the project and more discussion with mentors of the project Jaskirat Singh, Samson Goddy, Hrishi Patel, Shivang Shekhar, Perriefidelis and other community members regarding the features and design of the project I need to implement.
20 May to 26 May –Login, Sign up and Forgot password page with all the authentication required for email verification, sending mail to reset the password in case user forget it.

−Upload profile picture after email verification.
−I planned complete all this work in this time of course later I just need to change where it appears.

26 May to 2 June −Implementing the create a blog page with text editor that has all the functionality to make the blog look nicer.
2 June to 7 June −Like and comment functionality on blogs and make it visible on home page according to its publish time or like count whichever is suitable
7 June to 13 June −Implementing Profile page as blogs are now visible on the home page it is now easy to implement and see something real on profile page as it is shown in the screenshot on ideas page of sugar labs.
13 June to 22 June Implementing the chat activity for a user to chat with the people they are following.
25 June to 26 June Prepare for midterm evaluation.

−Send the completed feature for review. The main idea of the project is implemented during this period.

27 June to 28 June Midterm Evaluation
29 June to 5 July Buffer week
6 July to 9 July Analyse the feedback and clean up the code accordingly.
10 July to 16 July Displaying the name of the people user following on his profile page and link it to that user’s profile
17 July to 28 July Make the text editor capable of storing multiple images as well as videos or GIF that user want to upload to explain the things more clearly.
22 July to 26 July −Improving UI

−Send patches for reviews

27 July to 31 July −Implementing the social share buttons on the blog page.

−History tab and bookmark blog functionality

1 August to 10 August −Search icon implementation using algolia js framework of javascript

−Search blog by title.
−Search users by username.

11 August to 18 August −UI improvement

−Improve the coding efficiency i.e. to remove the duplication of code or some API.

18 August to 22 August −Fix bugs.

−Documentation and update README.MD file in GitHub repository.
− Add a comment that will help further development.

23 August Final Evaluation
After GSoC Keep contributing to sugarizer and will also let others contribute to this wonderful platform as it will help some children around the glob in their study.



Projects

Convince us, in 5-15 sentences, that you will be able to successfully complete your project in the timeline you have described, this is usually where people describe their past experiences, credentials, prior projects, schoolwork, and that sort of thing, but be creative. Link to prior work or other resources as relevant.
I have no other commitments during the summer period so I can fully concentrate and can fully devote my time to this project.I have developed prototypes for my project

  • Implemented login and signup page
  • Implemented email verification system using node mailer
  • Implemented basic text editor but I may decide to switch to page down like what StackOverflow uses on its website.

Link for the same is:https://github.com/hardiked/MEAN_Blogpost
Some other projects:-

  • Notepad: I have designed my own version of notepad using a PyQt5 library. It also supports the syntax highlighting for Python, C, C++ and also some other functionality like text coloring, background color, opening multiple files at same time. The link for the project is here: https://github.com/hardiked/notepad
  • Plant-diseases prediction: This project includes the machine learning with python to help farmers by predicting the disease which plant is suffering from using the image provided by the farmer. I have implemented in hackathon organized by “Hack-Infinity” with one of my friends. The link for the project is here:https://github.com/hardiked/plant-diseases-website
  • Chat Application: I have designed chat application that uses JavaScript and firebase database. I am still working on this project to improve its UI. The link for the project is here:https://github.com/hardiked/snappy-chat-page. The link to the working project is: https://hardiked.github.io/snappy-chat-page/index.html
  • MSTC website: I have designed a website for Microsoft Student Technical Club of my Institute using Laravel PHP. The link for the project is here:https://github.com/hardiked/mstc_website.
  • Shopping Cart: This project implements the shopping website for buying books online. It includes implementation of the shopping cart and checkout using stripe API for payments. It was designed using laravel PHP using many of the MVC concepts.Project link is here:https://github.com/hardiked/shopping_cart



Project and the Community

If your project is successfully completed, what will its impact be on the Sugar Labs community?

  • Sugar Labs is really doing great work with its project “one laptop per child”. It has Sugar, chrome extension Sugraizer, etc. Now only thing need is to connect this giant community in a single thread where developers can discuss their projects, new ideas, problems they are facing in implementing and can get suggestions in a comment or through chat can receive appreciations on their project ideas or some improvements if needed.
  • Teachers can discuss teaching ideas to get best out of the child, teaching them good things through the best use of the technology available and can make them understand faster and in fact much better way.
  • it gives our users a voice and this can help to evolve our product to their expectation. This will put entire Sugar labs community in one place to help them to do things more quickly.

There are two ways two learn something:
1.Take a lesson from our own mistakes.
2.Take a lesson from others mistake.
This project helps us to achieve second way. Rather than having to learn from our own mistakes or successes we can reach out to the community here and ask anyone has had an experience that could be valuable to your situation and thus saving precious time which can be utilized in the much better way then just finding the silly mistakes in code.
What will you do if you get stuck on your project and your mentor isn't around?

  • I will try to search it on the internet and refer to some resources like StackOverflow or GitHub pages
  • I will try to read out the documentation of the tool which I am using. Nowadays documentation is a good way of learning anything.
  • I will go to IRC to get some help from other developers or will post the problem on the mailing list.


How do you propose you will be keeping the community informed of your progress and any problems or questions you might have over the course of the project?

  • I will convey my work to mentors on daily basis.
  • I will give daily updates on IRC channel and thus keep informing the community.
  • I will keep posting my work on the developer mailing list.
  • I will be planning to write the blog on WordPress or Blogger about everything I implement, Difficulties I have faced in doing that and how to overcome it if someone has a similar problem.
  • I will update my weekly work on GitHub.
  • I will keep my work well documented in README.MD file on GitHub and will include comments wherever it is necessary.



Other Commitments

  • Have you applied to other organization?
    No
  • Do you have plans to have any other job or internship during this period?
    No
  • Do you have any short-term commitment during this period?
    No, the Only commitment I have is to complete my GSoC.
  • Do you have classes that overlap during this period?
    No, in fact, our institute has three-month long vacation during this period and thus I can devote my full time to this project to create some valuable that matters to the community.
  • Since when you have been part of the community?
    I have been part of Sugarlabs community since December 2017.

Following is the list of contributions I have made to the chrome extension version of sugar.