Aaryamann Challani

Engineer and amateur cook writing about privacy, cryptography, and distributed systems

← Back to posts

Introduction

This is going to be a series of posts regarding the development of the project I'm working on, currently unnamed. It will serve as a platform to perform decentralized updates to IoT devices.

There are quite a few pieces I've setup over the week, namely the frontend, backend and contracts as well.

Frontend

Decided to go with vitejs for scaffolding a React-Typescript project. Seems more intuitive than CRA so far, I will reserve my opinions for later.

Backend

Decided to go with fastify, it served me well in the iiot lab miniproject.

  • Scaffolded from the boilerplate repo I had set up before.
  • Integrated Pinata, to pin and unpin device updates on IPFS
  • Setup the database with Prisma. The database won't really be holding device information of any sorts, just a link to the ipfs hash which contains device info and is encrypted by the manager's key.
  • Looking into auth solutions. Will mostly go with Auth0.
  • Tests

Contracts

Decided to go with hardhat as the contract management toolbox. It works great with Typescript.

  • Wrote the contract for performing the updates.
  • Eventually will split the code up into different contracts, all accessing the same storage.
  • This will facilitate upgradeability in the future.
  • Not sure of the coverage, but tests have been written.

Conclusion

The project really needs more team members! Do get in touch with me if you're interested. Primary technologies/languages used will be - Typescript, Solidity, React.

Thanks for reading!