Inspiration
The inspiration for this project came from two places: [1] Almost every large software company has a team of developers focused on onboarding new engineers and managing a good developer experience. Each company has their own tool/way of provisioning "cloud desktops" for their engineers to use. This model of self-management and provisioning is highly wasteful and often results in difficulties when it comes to setting up the cloud desktop. Moreover, startups generally do not have dedicated internal developer tools teams, resulting in a lot of wasted time and effort when onboarding (not to mention the asymmetries between developer environments for the engineers). Autobox hopes to eliminate these headaches by automating a large portion of setting up a cloud desktop, allowing engineers to focus on building solid products.
[2] There has been an increase in popularity for specialized compute machines. For example, in machine learning, we have seen a rapid increase in demand for computers that are powerful enough to handle the machine learning workload and lifecycle. This is especially true on the Rice campus, as students find themselves spending hours setting up a cloud instance equipped with a GPU. Autobox makes it easy for these students to spin up an instance with a few quick commands, instead of navigating the convoluted and confusing documentation of their favorite cloud provider.
What it does
Autobox launches a cloud instance installed with a suite of selected applications and configurations. These applications currently include products like Docker, PostgreSQL, etc. and we plan to support more in the future.
How we built it
Autobox was built with React on the frontend and Flask on the backend. The Flask API interfaces with AWS and Azure to provision the server and set it up. Additionally, a PostgreSQL database stores the state of different instances as well as metadata.
Challenges we ran into
We ran into a number of different challenges. Architecturally, we initially wanted to provision hosts in customers’ accounts but that wasn’t very straightforward. Running into this challenge ended up being very helpful though since it gave us the idea of managing instances for customers on our end. This further simplifies the amount of work customers need to do in order to launch a server.
Accomplishments that we're proud of
We are proud to have integrations with multiple clouds (AWS and Azure). This allows us to be a 1-stop shop for all your cloud needs. We proudly support 4 applications in our marketplace (PostgreSQL, Docker, CockroachDB, Pytorch).
Lastly, we were surprised by how well our UI/Frontend came out. We didn’t use any large templates and self-managed React state.
What we learned
We learned how to iterate fast and build core features of our product iteratively. By splitting up tasks amongst different members of our team, we were able to test small parts of Autobox while also sharing knowledge across the team. Technically, we got the opportunity to dive deep into concepts such as networking, databases, state management for frontends, and more!
What's next for autobox
We believe that our solution can solve a common pain point for many developers. There are a number of different features we would like to build out. We would like to support the other big cloud provider, GCP. We would like to add a feature where you can share custom configurations with other people (something on the likes of Github, but for configuring a cloud instance). It would be cool to have an autoscaling feature where if your instance has a failure, or reaches compute capacity, Autobox would automatically spin up a larger instance. Iif a customer chooses to launch instances in their own accounts, Autobox would have to satisfy this request. Once we make further progress, we would like to test our product with developers at startups and university students!
Log in or sign up for Devpost to join the conversation.