A bit about myself: I’m an ex-engineering manager who quit his job last fall to take a break from the corporate world and work on my own products. I do everything by myself, from design to deployment and I love it. I picked the MERN stack because of my past experience in JS and its popularity.
The questions I have for today are related to an app I have been working on for several month. It started as a personal project, but given how helpful the app has been for myself, I’m eager to share it with the world. My plan was to use it for a while to test it, fix some bugs and continue to iterate on it until I’m happy with the product in terms of stability and functionality. I will reach that milestone very soon, which I will call the Beta version. I’m excited it to welcome users/beta testers; However, I have never launched a personal project using this stack and I could really use your expertise and guidance.
Here are some areas where I’m seeking advice:
How can I effectively transition from the Beta version to v1.0?
What are the best practices for scaling an app to accommodate beta and production users?
Should I consider limiting the number of users during the beta phase?
How can I attract beta testers and promote the app to a wider audience?
What are some viable monetization strategies if the beta launch proves successful?
Are there any other crucial factors I should consider before launching a new product?
Info about the app
Space: note taking, productivity
Stack: MERN
Hosting: Heroku basic dynos + Mongo DB Atlas free plan (for now)
No matter what the result will be, building a commercial app all by yourself already deserves all the thumbs up in the forum!
A few tips for the technical side:
The MERN stack won’t scale well. You can keep the React front-end, but plan to transfer to something that was designed for backend logic like Python or Golang.
Deploy on one of the cloud providers - AWS, Azure, Google Cloud or viable alternatives. Their free tiers might be enough to roll out some beta versions to test the waters.
They will also provide you as a single developer with tools for user authentication, testing, monitoring and security. These are all big pieces of work that normally get handled by teams as microservices.
The one danger with cloud providers: You have to keep an eye on your traffic and costs from day one. Install tools on your dashboard that show your resource usage instantly after you have created your account. That’s the price for the convenience.
For your first roll outs choose cloud options that are saving costs over performance. You won’t need the latest, fastest databases at the start for example.
Regarding when to deploy: Follow the Agile principle of rolling out an MVP (minimum viable product), learn from its performance, iterate, repeat.
That’s my 2 Cents. I can’t give you tips on how to gain your first users or monetization, but maybe we have people on the forum with some marketing expertise.
That was exactly the kind of answer I was looking for, thank you.
Very interesting to hear MEARN won’t scale well. Could you elaborate a bit more on what wouldn’t scale well then.
Node.js
Express
mongoDB??
Regarding cloud providers, I totally agree and I will plan on moving to one of the big provider once I get more users but for now, I think Heroku would work fine for the beta phase.
MERN is JavaScript. JavaScript needs an intepreter before a machine can read it. While languages like go are statically typed, their code gets directly turned into machine code. Also Go is superior with its concurrency models, it can squeeze max performance out of multiple CPU cores and the OS. Something you want to run on your server, especially on days with heavy traffic. JS is getting better, but still suffers from the overhead of needing an intepreter.
Alternatives are Rust and C/C++, but Go is easier to learn. Python is faster than JS, but you still have the issue of an interpreted language.
Depending on the size of your app the current deployment can be enough.
My tips lay out a plan when you are happy with the first test and want the to prepare for scalability → move the backend to Go (Python is fine as well for a start) and deploy on a larger cloud provider. Consider serverless (AWS Lambda, Azure App Service or Google App Engine).