Skip to content

GSoC'24 Project List

Aboobacker MK edited this page Apr 1, 2024 · 26 revisions

Welcome to the projects page. We encourage candidates to come up with their own project idea.

Join our Slack Channel and stay tuned for updates.

Use our Template for the proposal. We recommend the use of google docs for the proposal.


Project 1 - Enhancing CircuitVerse User Experience

Technologies: HTML, CSS, JavaScript, Rails, UX design

Duration: 175 hrs

Difficulty: Medium

Brief Idea:

Aimed at enhancing CircuitVerse.org website design, the project seeks to create a more intuitive and engaging interface that caters to both beginners and experienced users in the field of digital circuit design.

The goals for the project are -

  • Integrate UI-Based Language Contribution: To accommodate users unfamiliar with Git and coding, we aim to integrate a solution enabling them to contribute to CircuitVerse's language support. The proposed approach involves implementing a user-friendly interface for adding/modifying language translations, leveraging tools like Crowdin. This integration will enhance language support capabilities for CircuitVerse.
  • UI improvements
    • Remove "Recent Circuits on Landing Page" due to decreased relevance caused by a high volume of new circuits per hour.
    • Introduce a dedicated Testimonials section to showcase valuable end-user feedback and perspectives on the CircuitVerse platform.
    • Add a section for previous tech conference talks, open source participations, and org. achievements.
    • Add a section to show the universities’ using CircuitVerse in landing page
    • Simplify Search Page: Make the user projects search page more user-friendly by simplifying the interface. You can take inspiration from tinkercad gallery page
  • Finish weekly contest (PR reference)
    • Need to make it release with latest master.
    • Extend the scope(open for ideas).
  • Improve LMS integration
  • Improve SSO Integration
    • Support SAML based login via Keycloak, Okta, Azure AD etc
    • Support OIDC based SSO
  • Do Email verification at the time of user registration.
  • Migrate to View Components: CircuitVerse, currently using HTML erb, aims to transition its entire UI to Rails view components. This move facilitates component reuse across the website, promoting code efficiency. We can create smaller components like button, modal, cards etc. Details at https://viewcomponent.org/.
  • Logs maintenance
    • Need a way to maintain a logs for each PR's merge. Possibly saves logs in markdown which can be shown in About us section in platform.

Possible Mentors: Vedant Jain, Arnab Das


Project 2 - CircuitVerse Forum Revamp

Technologies: Rails, HTML, CSS, Javascript

Duration: 175 hrs

Difficulty: Medium

Brief Idea:

This project aims to improve the CircuitVerse forum. Currently, we are using the simple_discussion gem to manage the forum. It lacks various important features and requires updating the UI. On the other hand, it doesn’t have support for moderation, so we need to add support for moderating content on forums.

The goals for the project are -

  • Introduce Topic Search: Facilitate end-users in searching topics by keywords, allowing seamless navigation to relevant discussions. This enhancement aims to simplify the process for end-users to find solutions to problems by locating previous discussions on similar topics.
  • Markdown support: Currently in the forum message content has support for markdown. Some additional support needs to be added with basic markdown support.
    • Ability to embed circuit
    • Ability to embed video
    • Ability to tag users
  • Markdown editor support: Make message drafting easy for non-technical users by integrating a markdown editor with a user-friendly interface. Check out SimpleMDE Markdown Editor for inspiration.
  • Moderation tools
    • Add support to remove topics from UI (moderators only)
    • Spam message Removal: Implement a system to filter and delete spam discussion topics created by users, including instances created solely for testing purposes. This ensures a cleaner and more relevant discussion environment.
    • Add language/profanity filter: Prevent the use of inappropriate language or hate speech by implementing a filter, ensuring a more positive and respectful communication environment (checkout language_filter, profanity-filter gem)
  • Leaderboard Page: Add a separate page which will rank users by posts.
  • Set up Slack Webhook: Configure a Slack webhook to notify a specific Slack channel whenever a new topic is created in the forum. Utilise the noticed gem to streamline the integration and trigger notifications seamlessly.

Possible Mentors: Aboobacker MK, Tanmoy Sarkar


Project 3 - Simulator Real Time Collaboration

Technologies: Javascript, Canvas, Rails

Duration: 175 hrs

Difficulty: Hard

Brief Idea:

Simulator Real Time Collaboration allows multiple users to interact with a simulation environment in real-time. The project aims to provide a seamless experience for users to collaborate on simulation tasks, share resources, and communicate with each other in real-time.The real-time collaboration feature makes it possible for users to work on complex simulations together, resulting in increased efficiency and productivity.

Follow-up features:

  • Create Sessions that people can join. This can just be the collaboration feature that already exists.
  • Display avatar and name of the users currently editing the circuit
  • Collaboration permissions.
  • Use Conflict-Free Replicated DataTypes (there might be existing good CRDTs for graphs that we can use, you can checkout https://github.com/yjs/yjs)

Possible Mentors: Vaibhav Upreti, Arnab Das, Smriti Garg

Note: A proof of concept is required before proceeding with the project. The main focus of the proof of concept should be on how the simulator operates with this feature, giving more attention to its functionality rather than just real-time communication.

Learning path


Project 4 - CircuitVerse Practice Section

Technologies: HTML, CSS, Javascript, Rails

Duration: 175 hrs

Difficulty: Hard

Brief Idea:

Enhance learning by introducing the CircuitVerse Practice section where students can practice a variety of questions grouped for convenience. Users can attempt questions, design circuits, and have their answers automatically verified by the system. This feature aims to make learning faster and more engaging for students.

The goals for the project are -

  • Question Bank Management: Create a Question Bank page where questions will be categorised into several groups. Users can easily browse and practice those. User’s should be able to filter out questions of a specific group as well.
    • Circuit Template : Each question should have a circuit boilerplate. It can contain some input/output probe and a pre-configured testbench.
    • Markdown Content: Add support to add and show questions as markdown text.
    • Question Bank Moderator : Grant a role like question_creator to selected CircuitVerse users, empowering them to add and modify digital logic questions. Only admins can assign this role to some users.
  • Auto-verify submitted answers: CircuitVerse simulator already has a testbench feature to verify circuit against a predefined input/output. In practice mode, we can disable testbench so that users can’t access it and we can use it for verification.
  • Progress Dashboard: Show a personalised dashboard to each user, which will showcase the user’s submission history and progress. It can be part of the user profile and users can choose to make it public/private.

Possible Mentors: Vaibhav Upreti, Tanmoy Sarkar, Vedant Jain

Learning path


Project 5 - Simulator Version Control

Skills: Javascript, Circuitverse simulator

Duration: 175 Hours

Difficulty: Hard

Brief Explanation:

The simulator code keeps changing as we fix bugs or add new features. So far we have been limited with respect to changing the simulator code to keep it backward compatible with circuits that have already been made on the simulator. With this project, we aim to develop a version control system so that the newer versions may not be backward compatible with circuits made on older simulator version.

The core idea is that if a circuit was made on some version of the simulator, then it should keep working on that version of the simulator. The circuit's version number (version of simulator that the circuit was made on) is stored along with circuit data and the simulator automatically sets itself to that version while loading the circuit. Any new circuit should be made on the latest simulator version.

The goals for the project are:

  • Decouple simulator from the backend (Possibly make it so that simulator can run on its own without needing the backend): Efforts to do this have already been made here.
  • Provide an option to switch between simulator versions
  • Include simulator version in circuit data and choose compatible versions when loading the circuit

Possible Mentors: Aboobacker MK, Prerna Sharma, Josh Varga

Implementation guide: https://docs.google.com/document/d/1ZFjod71ShSe4qDrUzkhO8F-2EG9h2H5MXYSg8yfGXFE/view

Learning path


Project 6 - Development of Vue Simulator

Skills Required: Vue.js, JavaScript, TypeScript, CircuitVerse Simulator Architecture

Duration: 175 Hours

Difficulty: Medium

Brief Explanation

This project focuses on completing the development of the Vue.js-based CircuitVerse simulator. The development of the Vue simulator started back two years ago with the objective of decoupling the simulator from the main codebase & simplifying the simulator codebase while moving toward newer technologies. With these goals in mind the project this years aims toward finishing up the development of the simulator for production deployment & replace the current simulator by the end of the project.

Main Goals of the project:

  • Identify and fix all existing bugs & Complete the implementation of any remaining simulator components.
  • Design and implement a better UI/UX for the mobile version, improving upon the existing simulator's mobile interface. Ensure full functionality and responsive design for an optimal mobile experience.
  • Finish-up the transition to TypeScript for improved type safety and developer experience, while Eliminate jQuery dependencies, transferring all DOM manipulations to Vue components utilizing Vue's reactive system.
  • Develop a comprehensive test suite like the existing simulator tests, covering unit, integration, and end-to-end tests for the Vue simulator.
  • Move the CSS styles component-scoped styles from global CSS files & Finish refactoring the codebase.
  • Integrate last year's stability improvements to enhance simulator engine reliability & Address any performance issues and optimize for efficient simulation.
  • Merge updates and bug fixes from the main CircuitVerse repository since the decoupling of the vue simulator.

Additional goals:

  • Explore and propose additional improvements to enhance the simulator's functionality, user experience, and stability.

Note: Throughout the development process, make sure to maintain the simulator's ability to run in a decoupled manner from the main CircuitVerse repository. This ensures flexibility in deployment and integration, facilitating its use as a standalone application or within different environments. Additionally, as there are plans to develop a desktop application, so propose your ideas adhering to the best practices & keeping these points in mind.

Possible Mentors: Arnab Das, Vedant Jain


Your Idea!

Have an innovative feature or improvement in mind and want to implement it? We welcome your ideas for CircuitVerse. Your proposal will need to have the following details

  1. A brief description of the idea.
  2. Wireframes, images, screenshots etc which can illustrate your idea better.
  3. Who will this project primarily benefit?
  4. Implementation details - methodology, algorithm etc

It is recommended that you discuss your idea with one of the mentors before sending in your proposal.

Clone this wiki locally