Getting up in the mornings has never been easy. But in these pandemic times it has become even more challenging. It would certainly help if there was some motivation for getting up..
What it does
Very-Unique-Pet (VUP) is both a virtual and a physical pet. It acts as a father figure in your life. Need to get up from bed? A robot VUP will run around the room whilst blasting out a loud noise. If you don't catch it in time, it will start insulting you. Because who wants to be insulted by a robot?
If a physical device is not enough of a motivation, the virtual VUP companion is her et o save the day. You can bond with it by feeding it or petting it. You can ask it to tell you jokes and even set alarm clocks (that get synced to the physical one). But be careful.. if you feed it too much or if you spend too much time apart from it - VUP will die. And that will just break your heart.
How I built it
Hardware robot with which you can interact via voice-control.
Voice control: https://youtu.be/9sY_ozepxDE
Robot machine: https://youtu.be/0OiOizqmMO4
A frontend project built with React. Internally uses Axios for making HTTP calls, Semantic UI for basic user-interface building blocks, moment.js for handling dates, and Animate.css and Framer for animations.
Makes API calls to our syncing server (which uses MongoDB), Firebase for storing customer analytics events and Google Cloud Function for checking the state of the alarm clock (in alarm / not in alarm).
A more complete description & code available in the frontend repository.
Usage demo video: https://www.youtube.com/watch?v=l5J5BE4K6Ls&feature=youtu.be
What would this project be without a proper OPS set-up? We have gcloud uptime checks, alerts on downtime, dashboard for easy monitoring of our services, and deployments to cloud storage.
Lets investigate those business-as-usual latency spikes together!
Full tech stack
- Google: Cloud Storage
- Google: Firebase
- Google: Cloud Functions
- Google: Uptime checker
- Google: Alert notification
- Google: Monitoring Dashboard
Challenges I ran into
Originally we wanted to make the communication layer via pub/sub. However, since we didn't have enough experience with this, it was scrapped in favor of a classical API server built with Python.
Accomplishments that I'm proud of
Matiss: first time trying to animate user interactions; pretty happy with the results;
Palvisha: setting up DNS records & basics of pub/sub
What's next for very-unique-pet
Click "feed" a couple of times for a nasty surprise.