I build Metro because I noticed that we had old computers lying around that were doing nothing. Computers have a lot of potential and if we think more creatively with them we can be more sustainable. This idea become more of a reality when I started to experiment with containerization.

What it does

Metro allows Clients to upload code which will be ran by other Metro users. Upon uploading, code is ran by a volunteer that uses their own machine to run the code. Everything is secure and encrypted so that the client's code remains to them.

How I built it

I used Golang, Docker, and Electron.JS to create a restful API and desktop application. The restful API allows for code validation, the uploading and downloading of user data, and the management of MongoDB documents.

The Desktop application on the other hand, allows Metro to talk to the native OS and run docker containers on top of it. Metro is able to manage and record docker containers so that cost stays cheap and scalability stays a priority.

Challenges I ran into

The biggest challenge was allowing for the communication between containers and Metro's server.

Accomplishments that I'm proud of

I really proud of the container management system. It can effectively run a piece of code and send that code to the server. I had to get creative and start using tools such as Electron.Js so that I could talk to the native OS.

What I learned

I learn that Docker is really fun thing to use and has a lot of potential. I will definitely be using it in my upcoming projects for the future.

What's next for Metro

I would like to overhaul and improve the UI. I would also like Metro to incorporated APIs such as Stripe to handle payment. It's a bright future for Metro!

Share this project: