New Features! 🚀
So uh… this post is months late. Whoops! I’m holding myself accountable to creating more posts about this project starting now. Look forward to reading a post about this roughly every two weeks or so.
Since the last post, we’ve done a lot. Not just on the mobile app, but we’ve also created a desktop app that has tons of features within it. This year has been absolutely insane (not just because of the pandemic), and it’s not slowing down anytime soon.
We’ve added the ability for users to search through the menu with keywords, tap on categories to filter items by category, pay with Apple Pay, and view their historical orders from the home screen, receive orders via delivery to their address, set up pickup locations, and way, way more.
Let’s Talk About Mobile 📱
One of the things I’m focused on most is mobile. This is where the passion is for me. I get to determine how every person who makes an order through VenuEats will experience it (until we hire more React Native developers). I get to fine-tune the application so that it runs smoothly on both Android and iOS devices, ensuring that each animation throughout the app fires exactly as intended.
Recently, I’ve been working on a number of features and bug fixes (detailed below), but have also been working on mapping out some new features for the application that we are working diligently to implement.
For example, we are currently still authenticating with Realm, which is something we are aiming to get away from. We are pushing towards Auth0 due to Realm’s lack of support for Apple Authentication (a requirement for being approved on the App Store).
New Features / Bug Fixes
Release 0.3.0 (early alpha)
🐛 Fixed an issue where the safe area view would not respect boundaries and items would overflow vertically.
🐛 Fixed an issue where the search input would hold onto values and not dismiss the keyboard properly.
🐛 Fixed an issue with the home page welcome section where it would not properly animate when a user updated their venue or when they first selected a location.
✅ Adjusted black color so that it was less harsh and more friendly on the eyes.
✅ Renamed ‘Deals’ to ‘Promotions’
✅ When selecting a venue now, you are prompted to go ahead and enter your order reception preferences, which are based on selections that the venue management makes in the dashboard.
✅ Changed the way that users select their delivery preferences during the checkout process. Users will enter their delivery choice (if they hadn’t already selected it when they selected their venue), then select their time, and have the ability to review their order.
➕ Added the ability for users to see all available venus as well as manually search for their venue.
➕ Added an autocomplete input for addresses when a user chooses to have their order delivered to their house.
➕ Added the ability for users to contact order support from the order detail page. This email will go to the venue’s selected order support team.
Dashboard App 🖥
This is the first look at the dashboard app. It’s not been posted on my personal site yet just because there has been so much to do. The dashboard app is not built for end-users, but instead for venue management. This is where venue staff will see all of their orders from the application. It’s also where venue administrators will manage their venue. At the moment here is a list of things that a venue administrator can perform:
- Add/Edit/Manage users
- Add/Edit/Manage menu items
- Add/Edit/Manage menus
- Add/Edit/Manage venue settings
- Add/Edit/Manage menu item categories
- Add/Edit/Manage promoted and featured items
- Add/Edit/Manage delivery pickup points
- Enable/Disable remote address delivery
- Enable/Disable free delivery settings (min order/min range)
- Edit/Manage/Refund user orders
- Communicate with the user through the dashboard
- Call another member of their venue from the application
In short; a lot. Okay, but really… the app is in stable condition and almost ready to be used in production. We’re nearing the completion of our alpha build stages and nearing the public beta phase of the application. There are two major things that are setbacks that we are hoping to work through before the end of the year. The first of those is our authentication portion. This needs to be rewritten to make use of Auth0 so that our microservice middleware can properly authenticate any requests that are coming into our services. The next most important thing is integration with our delivery partner (I don’t think I can disclose that partner per NDA), but we are working to get their API implemented into our orders microservice which will allow us to get real-time delivery quotes for the user’s delivery, as well as get updated estimates on when the delivery will arrive at the customer’s location while providing updates along the way.
When will it be ready?
Great question. I’m hoping that we can have all our necessary services finished by early January 2021 so that we can start getting orders out of the door for our first customer. After we start getting customers out of the door and work with our customers to find out what improvements need to be made, we will begin making those changes and presenting our application to other already interested parties. From that point forward, it’s just a waiting game to see if your local venues start to pick up the application.
Now wait up just a minute…
You might be thinking, “You keep mentioning delivery quotes and delivery to remote addresses. I thought this application was just for sporting venues. Why would they deliver to remote addresses?” Great question! This also ties into why progress seems to have slowed down (even though it hasn’t). About 2 months ago we found a way to shift our applications focus so that it wasn’t so narrowly focused on entertainment venues, but also your favorite local restaurants, grocery stores, and more.
Now, we have set up the application so that you can order food from your local grocery store or food service provider and get your groceries delivered straight to your door. Want to order some food from your favorite restaurant without going to the other guys and letting them take 30% of the revenue? Order through our app and choose to pick up your order from your favorite place. VenuEats is just getting started, and if we continue to hire more great minds to work on this project it’s hard telling how far this app will go.
Behind the scenes… Microservices ⚙️
When most people drive a car, they don’t think about the gears inside of their engine, transmission, or differential. Similarly, when people use software, they often don’t think about gears that are making that software function as intended.
Of course, these “gears” I speak of are what we call microservices. Initially, when this project was created, we began making use of simple out of the box services such as Realm/Stitch from MongoDB.
As we continued to develop our application, we noticed a need for more custom pieces. We could achieve what we wanted to out of the box, but how long would that solution work? Was it viable for a long-lasting, high-demand product? Most likely not. After looking at the services we were using, we were able to determine that it was time for us to begin creating our own microservices.
As of now, we are still developing some critical microservices such as account services, delivery quoting, menu services, notification triggers, pub/sub, and order processing services.
These services will be critical in ensuring that our application is firing on all cylinders, delivering only the necessary information to the end-user, but while also communicating effectively with one another to ensure the app is working without skipping a beat.
Should something go wrong, we will leverage pub/sub to keep track of what caused the error, who was using the device when the error occurred, and what kind of device the user was on.
This is all part of creating a better product for the future, and I couldn’t be happier with the direction we are heading.