Web Development: Geppetto

Tools: HTML + CSS (LESS), JavaScript (ES6, React, TypeScript, JQuery, Backbone.js), PHP (Symfony)

Responsibilities: Design and develop features to serve the user experience and improve funnel metrics; write unit tests; QA and fix bugs

Geppetto is Gumstix's web app for creating circuit boards. It aims to hide the technical details of electronic design by presenting a user-friendly interface with drag-and-drop components. The final product that users receive is a physical circuit board based on their in-app design.

A Few Notable Features

The following features were re/designed and coded end-to-end by me (with blessings from the higher-ups).

Board Builder

Programmatically generates a Geppetto board based on the user's functional requirements. The Board Builder automates the application workflow, offering a fast path to a finalized design. So far, over 4,000 designs have been generated, and the Builder has improved sign-up rates by approximately 20%. Its main draw is in introducing new users to Geppetto and showing, quickly, what Geppetto can produce.

Board builder

Users select their desired components from a list of suggestions. The Board Builder will check data requirements and compatibility. For example, in the above image, the Builder detected that Audio Codec was a requirement of Speaker.

On submission, Geppetto places components onto the board and establishes available connections.

Power detected dialog

This board is still incomplete (red) because it is missing power sources. Geppetto will detect this and offer an option to find power components.

Power finder dialog
The Power Finder suggests valid sets of power sources for the chosen components.
Finished board
Final generated board, including its 3D view

Components Library

I reworked the components library with two goals in mind:

The previous implementation used JQuery UI Accordion, which took up a lot of vertical space. When users wanted to open another shelf (such as COM Connectors), they had to scroll through the list of components and find it, every time. The new implementation is a custom React component (with a Backbone.View wrapper for interfacing with legacy code).

Design Helper

A tutorial tool that examines the user's design state, and informs them of errors. This feature is aimed at improving the Geppetto user funnel, where:

Design Helper
The Design Helper shows which components have an issue, and what that issue is. Hovering the component name will cause the corresponding component on the board to blink.