This is part three in a series of articles documenting the process of building our first Shopify app. Click here for part two.
The first step to building a Shopify app should be deciding what the app is going to be. Technically we made this our second step (the first being the development of our authentication system), but regardless, we quickly plotted the requirements we had for our app:
With these requirements in mind, we began brainstorming ideas for what our first app could be.
As this first app would serve as a template for all future apps, and be used to test our entire process from beginning to end, we wanted it to be a very small and simple idea to ensure a smooth process.
At this time, two of our co-founders were running a Shopify store of their own, and needed an app to allow customer’s to choose a specific delivery date for their order when checking out. They tried several, but found different issues with each one, and couldn’t get a perfect fit for their requirements.
This led us to an obvious conclusion: we should just make our own.
We decided to build Delivery Date Picker (our working title for what is now called Bloom), and got to work researching other similar apps in the marketplace to get an idea of what features they generally offered and how they presented those features to their users.
We also found a lot of useful information by scouring through other app’s reviews to see what features users liked, and which they felt were missing.
From this, we compiled a list of goals we would like to be able to achieve with our date picker. Here’s a snippet:
To control the days that are enabled in the calendar:
To control how the calendar is displayed on my store:
To control where the calendar is displayed:
The app ended up growing in scope a little as we began development, and we added a few extra important features, including timeslots, different delivery methods and localisation.
After deciding on our features, we mapped out a list of all of the settings we would need, and their data formats in our database. From there, it was full steam ahead with the development!
We first created a basic React app template and began setting up the initial structure and configuration for an embedded Shopify app, which includes using App Bridge to authenticate and validate sessions within our app.
The app would also need to connect to our database, so it quickly became apparent that we would need to set up an API service for that. Having just set up our authentication service, we discussed the possibility of creating a parallel service for storing and retrieving data, but ultimately decided it would be easiest if we just merged the two, and had a single service that provided both authentication and API functionality.
This would involve a bit of a refactor of our existing authentication service, but would allow us to scale our apps in the future with ease and keep everything together in one place.
In the next post of this series, we’ll go deep into the process of making this change and the technical aspects involved.
Part four of this series is now available, detailing the process of making this change and the technical aspects involved.