Giter Site home page Giter Site logo

evanyang1 / kitspace Goto Github PK

View Code? Open in Web Editor NEW

This project forked from kitspace/kitspace

0.0 1.0 0.0 76.99 MB

A registry for ready to build open hardware electronics projects

Home Page: https://kitspace.org

License: Other

HTML 12.78% Shell 0.83% CSS 55.86% JavaScript 30.36% TypeScript 0.17%

kitspace's Introduction

build status Backers on Open Collective Sponsors on Open Collective

Watch a 5 minute lightning talk about Kitspace from the 35c3 congress.

video

Kitspace (formerly Kitnic) is a registry of open source hardware electronics projects that are ready to order and build. It could be described as a "Thingiverse for electronics". The most important elements of a Kit Space project page are:

  • A prominent link to download the Gerber files and a preview rendering of the board
  • The ability to quickly add the required components to a retailer shopping cart (using our browser extension)

Help us build an open hardware repository of useful electronics projects!

pcb-stackup

The renderings of the PCB files are made using pcb-stackup. You can get similar renderings and also inspect invdividual layers, using the tracespace gerber viewer.

Get in touch

Submitting your project

Check out kitspace.org/submit which will guide you through the process.

kitspace.yaml format

Currently the kitspace.yaml makes use of the following fields:

summary: A description for your project
site: A site you would like to link to (include http:// or https://)
color: The solder resist color of the preview rendering. Can be one of:
       - green
       - red
       - blue
       - black
       - white
       - orange
       - purple
       - yellow
bom: A path to your 1-click-bom in case it isn't `1-click-bom.tsv`.
gerbers: A path to your folder of gerbers in case it isn't `gerbers/`.

Paths should be in UNIX style (i.e. use / not \) and relative to the root of your repository. The YAML format is pretty straight forward but if you need to know more check the example below and the YAML website. Use this YAML validator to be extra sure that your kitspace.yaml is valid.

Some examples

Check out the repo links of the projects listed on kitspace.org already. The minimum required file tree is something like :

.
├── 1-click-bom.tsv
└── gerbers
    ├── example.cmp
    ├── example.drd
    ├── example.dri
    ├── example.gko
    ├── example.gpi
    ├── example.gto
    ├── example.plc
    ├── example.sol
    ├── example.stc
    └── example.sts

A more advanced example could be something like:

.
├── kitspace.yaml
└── manufacture
    ├── advanced-example-BOM.tsv
    └── gerbers-and-drills
        ├── advanced-example-B_Adhes.gba
        ├── advanced-example-B_CrtYd.gbr
        ├── advanced-example-B_Cu.gbl
        ├── advanced-example-B_Fab.gbr
        ├── advanced-example-B_Mask.gbs
        ├── advanced-example-B_Paste.gbp
        ├── advanced-example-B_SilkS.gbo
        ├── advanced-example.drl
        ├── advanced-example-Edge_Cuts.gbr
        ├── advanced-example-F_Adhes.gta
        ├── advanced-example-F_CrtYd.gbr
        ├── advanced-example-F_Cu.gtl
        ├── advanced-example-F_Fab.gbr
        ├── advanced-example-F_Mask.gts
        ├── advanced-example-F_Paste.gtp
        └── advanced-example-F_SilkS.gto

with kitspace.yaml containing:

summary: A more advanced example
site: https://example.com
color: red
bom: manufacture/advanced-example-BOM.tsv
gerbers: manufacture/gerbers-and-drills

Development

Architecture

Current

This repository is the Kitspace front-end. The contents including all project data are currently pre-compiled into a static site. The main part of the site that requires server side components is the submission preview (/submit). Pages also use freegeoip lookup to decide what sites to link to for people that do not have the 1-click BOM browser extension. This roughly illustrates the main data flow when someone is browsing the site.

We have two services running for the submission preview.

And one for the geo ip lookup on pages.

Planned

We are using GitLab as an authentication and Git hosting service. We modify and proxy it to get the functionality we need. The graphs get too complicated if we try to add all the possible data-flows but here is the rough data-flow for submission of a project.

Services used are:

  • nginx-config to configure Nginx to serve the frontend and all services.
  • partinfo for getting part information for BOMs.
  • gitlab-config configuring GitLab to be used for authentication and Git hosting.
  • gitlab-proxy for requests that need to access GitLab API but need any kind of added functionality like unauthenticated access or modifying projects (which needs additional hooks to trigger processing).

Roadmap

  • GitLab and Accounts
    • Modify GitLab and integrate with login in Kitspace frontend
    • Build frontend for basic account settings
    • Make GitLab source of user projects
  • Upload submissions and editing
    • Allow for file upload to GitLab
    • Gerber plotter processing for KiCAD and Eagle
    • BOM extraction processing
    • BOM Builder

Requirements

  • Nodejs >= 6
  • fswatch on OSX/Windows or inotify-tools on Linux
  • Ninja Build >= 1.5.1
  • The rest of the dependencies can be retrieved via npm install

Running a local dev server

  • Get requirements above and make sure executables are on your path
  • npm install (or yarn install)
  • npm start (or yarn start)
  • Point your browser at http://127.0.0.1:8080. The script should watch for file-saves and re-build when you change a source file.

Contributors

This project exists thanks to all the people who contribute.

Backers

Thank you to all our backers! 🙏 [Become a backer]

Sponsors

Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [Become a sponsor]

kitspace's People

Contributors

kasbah avatar slifin avatar dusjagr avatar okjake avatar kevinb456 avatar mattvenn avatar amchagas avatar jasiek avatar squaresolid avatar borgel avatar kennethlimcp avatar alpharesearch avatar defproc avatar rwb27 avatar longhairedhacker avatar morgulbrut avatar kimitobo avatar emard avatar robotsrulz avatar jpralves avatar monkeywithacupcake avatar jarrettr avatar yaqwsx avatar jana-marie avatar udxs avatar dvdfreitag avatar descampsa avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.