FabDoc - Version Control Tool for makers

Simplify the way of documenting projects in software and hardware, based on Raspberry Pi Zero and camera module

Similar projects worth following
We are all facing a lot of works of documentation beyond making, especially when we would like to share and collaboratively develop "hardware" projects.

There are too many version control system (VCS) tools for "software" projects so that we could fortunately join any large-scale software projects, such as Linux, if they are open source. But what happen to "hardware" projects? Can we enlarge the scale of these projects with VCS tools?

There are too many physical details (materials, machines, parameters...) which should be well-documented before cooperating, but unfortunately cannot be easily digitized into documentation or VCS.

We are trying to hack the way of documenting for all of makers' projects, simply with Raspberry Pi + camera module, and an experimental platform.

We want to build a hand-free and easy-to-use documentation tool and platform.

Though currently the way we make our documentation is step-by-step, the real building and design process will suffer many dead ends. On the other hand, it seems more like a tree with branches if we want to record every detail while making. However, the trade-off is that making means our hands are busy. We would be distracted if the work has to be suspended to take pictures.

What if the system can remain the branches and each dead end you've tried? This is not only for sharing (documented) projects, but also helping you document for your team or yourself.

So, here is how we hack it, the main concept is:

"To capture time-lapse pictures as pre-commits"

Before making

  • Create a new project with project name and description

  • Generate QR code token

  • Login by scanning QR code token with Raspberry Pi Zero

  • Start to stream time-lapse pictures to your computer through WebSocket

While making

  • Leave your computer alone
  • Happy making

After making

  • Select key frames of time-lapse pictures as "commit" in the browser
  • Tag physical materials in the frames and add more details
  • Upload to the platform


There are two main features we are working on:

  1. Device - RPi-client
  2. Server - console

Future Features

  1. Add IMU as input on Raspberry Pi, in order to capture more than time-lapse pictures, such as customized time video, by head motion.

  • 1 × Raspberry Pi Zero
  • 1 × 8MP Raspberry Pi Camera Module(v2)
  • 1 × Goggle
  • 1 × Small Power Bank
  • 1 × USB cable Electronic Components / Misc. Electronic Components

  • Updated console, and the workshop in FAB13

    Kevin Cheng08/16/2017 at 08:31 0 comments

    Updated console

    We just built an experimental web app (FabDoc-console) along the wireframes showing in Details. The console server is based on Vuejs and Firebase. We also deployed a remote server for demo on AWS (IP address will update in FabDoc-console/

    Current web app can generate QR code waiting for your connection from FabDoc-RPi-client. After console and device successfully communicate with each other, the capture pictures will display in preview column. At the time, enjoy your making and leave your computer dealing with record task alone.

    The workshop in FAB13

    To share with maker communities around the world, we are happy to join Fab Lab annual conference FAB13 (7/31 - 8/6) in Chile this year.

    Kevin hosted a workshop to present the idea about FabDoc in the conference. During the week in Chile, we were so excited to show the project and giving live demos to everyone from worldwide fablabs.

    Sadly, the network environment was extremely unstable in the event such that the devices and web app platform cannot fluently communicate with each other at all times. People who joined the workshop tried to setup the FabDoc-RPi-client and FabDoc-console as local server but cannot make it. That's not only caused by network issue, but also dependency installation problem happening within devices and server.

    Many thanks to Pedro Garretón from Fablab U de Chile, who helped a lot of preparing materials in the workshop!

    Random Demo Result

    Though the workshop faced serious problem with network, Kevin tried to share his limited data plan and make his phone as hotspot after workshop. The more stable and faster network fed Raspberry Pi and make it possible to talk to our remote  console server. Hola!

    the screen in the lower left corner shows streaming pre-commits

    Kevin finally demonstrated our project in the demo session and luckily captured people's reaction by headlight-hacked FabDoc-RPi-client, and all of them are stored in our current remote server and temporary Firebase. (more pictures:

    Impressive week with Fablab friends! Really nice to meet you!

  • Hacking and turning headlight into portable FabDoc device

    Kevin Cheng08/16/2017 at 04:07 0 comments

    Preparing for the workshop hosting in FAB13 (Fab Lab conference), one of our friend came up with a idea of that why not we just modify hiking headlight instead of goggle.

    The cheapest headlight costs only $10, including 2 batteries (18650), LED and wearable set, so that we can simply remove LED and mount Raspberry Pi Zero + camera module.

    Thanks to friends at the Taipei Hackerspace (Mr. Friday and Pandaman), we removed LED light and installed regulator module supporting RPi with 5v instantly. Also, we redesigned and integrated RPi Zero case into head mount. The batteries could theoretically provide 3-4 hours power support to RPi + camera module. The most wonderful thing is head mount can adjust angle of the view due to original LED mount design.

    [During FAB13 conference]


  • Modified the preview style for pre-commit pictures

    Kevin Cheng06/21/2017 at 16:02 0 comments

    The goal of layout while passing images from Raspberry Pi into browser is like the wireframe below.

    We used one-directional scrolling feature for image preview from the project darsain/sly (GitHub), and the result is pretty nice!

    The Next Step

    Setup our database for FabDoc-console, and categories of db are going to be like following structure:

      • tables: Project, Commit, Machines
      • Project: id, name, description, License
      • Commit: id, project_id, user_id, message, components, repos, note, image_file (components: [ { name: "hook", quantity: 2, point:[left-top, right-bottom] }, …])
      • Machines: id, name, description, commit_id

  • Successfully streaming time-lapse pictures from RPi to browser

    Kevin Cheng05/17/2017 at 18:02 0 comments

    We've updated RPi-client (GitHub) scripts on Raspberry Pi Zero which can communicate and upload through WebSocket based on console (GitHub) into your own browser.

View all 4 project logs

Enjoy this project?



RandyKC wrote 04/25/2017 at 21:14 point

Another option. You've got plenty of inputs on the RaspiZero. Why not just hook up a switch to trigger. By generating the QR code you have something to lose. Use different switches to indicate which project you're working on. Save the video/audio to a seperate folder for each switc

  Are you sure? yes | no

Kevin Cheng wrote 04/26/2017 at 10:45 point

Thanks Randy! Managing with folder sounds great.

The reason why we chose QR code token is that the token could store different login info which means the device can be used by different users, because the most likely scenario we imagined is working at makerspaces. The switches input cannot carry too much information. Maybe keyboard could, but it is too heavy for goggle. 

The another pros of manipulating with your browser is that the screen can also output the feedback of event, such as successful login, after scanning QR code.

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates