Hey everyone! Around the beginning of May, I created a post, FarmCraft - An Agriculture SaaS PoC, to introduce a SaaS product I started working on. Well, May has come and gone, and we're nearing the end of June, so I thought it would be a good time to give an update as to where things stand and what I've accomplished so far.
For those who know me, it may not come as a surprise, but I ended up changing a few aspects of the project over the past month and a half.
SaaS to Local
My initial plan was to use a micro-service architecture, isolating all of the components into individual services with dedicated databases. For a solo developer who's boot straping the project, hosting costs were going to be a lot more than I wanted to spend.
In addition to that, I thought it might make more sense to build a version that farmers could run without having to be connected to the cloud. Because of this, I decided to pivot to a "community" version that runs locally on docker.
...and back to SaaS
After working on the community version for a week or so, I started to realize that it may not make sense to build everything using microservices right now. While it's true that microservices would make scaling much easier and keep different parts of the software isolated, the reality is that I'm no where near a user base that requires or justifies that.
Then, I saw a post on LinkedIn about considering a "modular monolith" rather than microservices, which reaffirmed what I was thinking in the back of my mind. Maybe starting out, I build a single application, but in such a way that it's easy to break into pieces once the product has gained some traction.
Going this route also eliminates most of the cost I was worried about originally - instead of multiple databases, app services, and VMs, I could run everything off of a single App Service and database. Then, as it grows, it wouldn't take much to add additional infrastructure.
Back to SaaS it is, and I'll be the first customer, as I utilize it to build my own indoor farm (more coming on this later!).
I was planning on building the device management and remote control features into the app first, but I decided to push that back a while. As I try to make something that people would get value out of, and something I could use myself, I realized that it makes more sense to focus on business features first.
Authentication & Payments
Obviously, if this is going to be a SaaS product, I need a way to authenticate users and manage subscriptions, so that was my first priority. I have the basics of this working, which you'll be able to see in the demo below.
Next, I want to be able to view and manage my suppliers. It might seem a bit weird to start with this piece, but I'm looking at things from a traceability perspective. I want to be able to track everything produced and sold from the original supplier, through the PO, where it's planted, when it's harvested, the date it's packed, and finally who orders it.
Vendors and suppliers are at the beginning of that chain, so that's where I decided to start.
There are way more features planned than what I can go into right now, but I figure I can at least give a small preview of some of the things that will be comming in future releases:
- Purchase / Sale orders
- Location management
- Inventory management
- Packaging and labeling
- Traceability feature and graph
- Device management
- User invitations
- Accounting integrations
- Equipment tracking & repairs
Finally, I'll leave you with another demo. Let me know what you think in the comments!