Skip to content

Instantly share code, notes, and snippets.

What would you like to do?
Google_Summer_of_Code_2019 Circuitverse Aman-Singla

Aman Singla - Gsoc'19 Final Report

Organisation: CircuitVerse

Project: Interactive-book


Project developed during google summer of code with the objective of creating an online interactive guide for digital logic design.

Outcome of Gsoc19 project

The primary goal which was to develop an open source book with quality content which teaches digital logic design is achieved. It enable's students to learn digital design by interacting with circuits,truth table and other interactive elements as they proceed through the book.The professors and students all over the world can read and contribute to the same.

Code Contribution

A total of 130+ commits were made by me

Overview of Interactive book

The Interactive book have two components in it.

  1. Content
  2. Interactions



It include's quality content which would be gathered from various books (primarily from ‘​Digital Design​’ by ​Morris Mano as its copyright has expired and is in public domain) and online material. Basic notes have already been prepared to reference the aforementioned book and are attached in the table below.


There would be two types of Interactions.

  1. Circuit Interactions- This include designing optimal circuits which would help to clearly understand the logic. The student would be able to clearly detect the variation of output with the change in input via these circuits. With each Interaction module, there would be a set of instructions that would guide the user to see the desired changes.

I have designed more than 20 Circuit Interactions which could be seen in the book.

  1. Module Specific Interactions- This include interaction which are designed for individual module like kmap simulator , truth table generatoretc.

Here are the module Specific Interactions I designed.


It teaches how a binary number is converted to decimal and vice versa. ezgif com-video-to-gif

Bitwise Operators

It teaches how the Bitwise operator works. ezgif com-video-to-gif

Interactive Logic Gates

Designed two interactive usage of logic gates with a interactive design for user interaction. adsfafa

I designed two basic application of digital logic design mentioned below.

Binary Flags

It shows how the binary flags could bbe used in a practical way. adfadfa

Representing a Character

It clearly shows how a digital screen could be generated and transmitted in binary no. adfadsfadf

Boolean Algebra


Truth Table Genrator Interaction

It shows the application of boolean function. asdhgf

Kmap interaction

This is the most interesting Interaction of all and took me the longest time. With 2k+ js lines, It clearly shows how the k-maps are used in the digital logic. K-maps for variables upto 8 could be drawn from this interaction. kmap

Flip flop Interaction

It shows how flip-flop could be used to generate a state table. flipflop

FSM Interaction

A coin vending machine with it various corresponding states have been designed in this interaction. fsm

Contribution(before getting selected)


#319 Pgsearch(search on projects) Previously we were using google custom search which doesn't do a very good job. This search would search over project names and descriptions.

#297 Sidekiq I have dockerized sidekiq. Also added the Sinatra gem which is needed for the Sidekiq web UI (the dashboard is shown below)

#290 Fix_Scroll Added a scroll to combinational analysis (Tools->combinational analysis) when the number of inputs is high as earlier, the truth table was no longer viewable

#265 Empty_Project Saving an empty project produced an error. When the circuit is empty, then data_url is data:,, it otherwise is data:image/jpeg;base64,<actual_data>

#232 Implement Subscriptions Added the functionality of subscriptions to comments. This was done through gem Commontator. More to add I even changed the inbuilt functioning of the gem​.

#247 Implement Voting and Mentions Have implemented voting (likes and dislikes) on comments along with mentions in the comment.

#239 Drop Mysql support Supporting two databases causes unnecessary hurdles in development. We decided to drop Mysql support and just use PostgreSQL in all environments

#187 Adding watermark to iframes A watermark "Made with CircuitVerse" is displayed on iframes on clicking to which directs to a new page in the simulator.

#298 Watermark_clickable_fix The clickable area was hidden under the simulation area. Setting the z-index solved the problem

#303 Watermark and tooltip overlap issue Changed the position of tooltip from the bottom right to bottom left.

#178 Fixing Dropdown Position Added a bootstrap class that fixes the positioning

#164 Css correction of alert in case of invalid login Css issues related to positioning were corrected.

#351 Issue raised to Implement Elastic Search Provided a step by step guide + Resources to implement elastic search.

#356 Enable edit and delete for all the comments. A quick fix in commontator.rb enabling the user to delete and edit their previous comments.


#113 Added documentation for saving projects Added documentation for saving the project both offline and online. It also includes the importance and usage of tags in online saving.

#114Added documentation for forking projects Added documentation for forking the project. Tried to explain what is a fork and when do we use it w.r.t CircuitVerse.

#115Added documentation Collaborations Explained what do we mean by collaborations in CircuitVerse Also, Explained how we can implement collaborations.

#116Typo+Grammar+Spaces in the entire repo Went through the entire repo and found a ton of mistakes. Was able to detect 35+ mistakes.

Additional links

Mentor's post

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment