It’s been two short weeks since the last post went live. I received some good traction and have made it a personal goal to continue to write about this project as the development continues. So in this post, I will detail what we’ve done over the past two weeks in three different areas: the dashboard app, mobile app, and microservices. But before I get to the unique applications, I want to talk about our biggest change over the past two weeks.
What’s New 🤓
It’s been two short weeks since the last post went live. I received some good traction and have made it a personal goal to continue to write about this project as the development continues. So in this post, I will detail what we’ve done over the past two weeks in three different areas: the dashboard app, mobile app, and microservices. But before I get to the unique applications, I want to talk about our biggest change over the past two weeks.
Authentication 🔒
For the longest time, we’ve been missing one crucial authentication system in our mobile application – Sign in with Apple. And with Apple’s change in authentication requirements, it meant we needed to have it to have other third-party authentication methods. For the longest time, we remained hopeful that Realm Authentication would soon implement the ability to authenticate with Apple given that it was a requirement for approval on the App Store.
Well – our patience grew thin. Especially considering that we are very close to turning this application live for our customers to use with a specific customer, Piazza Produce. Since we knew we would be shipping this product soon, it meant we needed to make a quick decision on what to do – stick it out and only have traditional authentication in our mobile app, or switch providers and implement Apple, Facebook, and Google authentication alongside traditional email and password authentication.
We jumped ship. After about 7 days of development, we are now fully on Auth0 in both our development and production environments. The mobile app now has all forms of authentication that we wanted in the app from the start. It’s now faster to sign in, more secure, and a much more well-known and trusted authentication system. I’m incredibly proud of our team and their hard work in getting this authentication method implemented on the dashboard while I worked alongside them to bring the feature into the mobile application.
Dashboard Changes 🧑💻
There have been quite a few changes to the dashboard from the team. There have been huge improvements on the home screen orders as well as what is available at a glance. We’ve also tweaked the UI and UX of the dashboard home screen a bit to provide smoother animation, better use of space, and made sure that elements resize when they should.
We’ve also added a feature that allows you to see orders for a specific time period, adjusting all of the orders on the dashboard home page. At the moment, this is actually historical and currently affects the orders displayed on the orders page as well, but that’s because of a limitation that we have with MongoDB’s implementation of Graphql and the lack of pagination/offset abilities.
Additionally, we made changes to some labels, making them easier to read and understand, and adjusted the update behavior on input fields. We even adjusted the animations of the navigation bar to make those smoother. We really put a focus on the user experience in this recent sprint to make sure that we were pushing ourselves towards really pleasing our customers with a responsive, feature-rich platform.
Mobile Changes 📱
There were quite a few bug fixes in this most recent sprint for the mobile application. To detail a few:
- When updating your account information, the notification informing the user about whether changes were made successfully or not would stick to the top of the view rather than the top of the screen. We adjusted this to bring the notification to the top of the device’s screen so it would always be visible.
- Clicking on a promoted item on the home screen would previously navigate the user to the promotions page, but would not focus the item. This has been corrected.
- Auth0 implementation (detailed above)
- The date of birth entry on the account screen was really buggy, and would sometimes break the application. With the release of iOS14, it brought date and datetimepicker changes that also broke the previous DOB field entry. This has been updated and is now OS correct.
- Searching for an item in the menu was previously case sensitive. This has been adjusted to help users find items more easily.
- We’ve added a swipe to dismiss property on views where a keyboard was present.
Aside from these changes, there is another one that we are working on that is currently on hold. I’ve got a Github issue out for it now and am waiting for a response from package maintainers as it seems to be a flaw with react-navigation. We’ve got some other awesome things planned for our next sprint as well.
Microservices ⚙️
Over the past 5 days we’ve started working on a new microservice for managing all of our users, creating users, and retrieving users.
We decide to build this one together using Microsoft’s Live Share extension for VS Code. If you’ve not seen or used this plugin you should give it a shot. It makes collaborating during the pandemic a million times easier and is comparable to using Google Docs but for code.
This user service we decided to build with Node.js, Express, and TypeScript. It has been a fun learning curve to tackle since I’m quite familiar with Node and Express, but somewhat unfamiliar with TypeScript. It has been a lot of fun for others on the team because TypeScript brings some similarities and familiarization from PHP into the JavaScript world.
As we continue to develop this service, we learn more and more about the structure of all of our microservices and just how many we are going to need (so far we’re looking at probably 20+).
These are going to continue to help the application run faster and be more secure/stable. Since each service is independent of one another and has no reliance on the other, one can fail without breaking other pieces of the application – a huge win for us and the customers.
Our databases will sit on Google’s Servers, next to the services for each respective database. With our app also being on Google servers it makes the app seem almost as if it is running on a localhost environment with all of the data – making the entire app feel lightning fast.