About

Keycap Archivist is a community driven project from artisan keycap enthusiasts made for other enthusiasts. It is made in collaboration with keycap.info, which is the "single source of truth". The Google Docs from keycap.info are dowloaded as HTML and parsed to extract the data as the format is the same on every catalog. Then those data are exposed through an open source repository. Once data is available, we build upon it; that‘s how Keycap Archivist was born. If you want to contribute just visit the Github.

The project is composed of the following components:

Database

Database generator is a Javascript based project. Each maker got it‘s importer and parser module, because even if the format is mostly the same there can be some slight differences to handle. All keycap ids are made using a CRC32 calculation based on the image url of the keycap.

Once the data is collected, it‘s formated using this json schema and exposed as separated JSON/CSV files per maker and one exposing the whole catalog in each format. You can check the compiled database files here. The database is generated every 6 hours and if there is a change it‘s pushed to the repository.

App

The app is a NodeJs server using TypeScript and Fastify. It is mainly used to make the Wishlist you can generate in here. There is also couple of other features that will be described in the Open Api description (soon LMAO). This is the only "costly" feature of the project because it needs a server to run and thankfully a community member let us squat its Docker runtime.

Website

The website you‘re browsing right now is made using Gatsby and consuming the database generated like explained before. The website repository polls the database revision every 6 hour and check if there is a different revision. If so it‘s regenerated and pushed on Github Pages.

Thanks for taking the time to read this section, if you want to contribute feel free to raise issues on github or come discuss with us on discord!

Build Info

  • dbrevision: 9ea829d19476759b59e6990e410daa8c223a73c6
  • Build date: 2020-10-24T02:11:50