
TLDR: the 1st part of this post will be about my experience as a fullstack dev, and the 2nd about general mistakes I made. Lastly, I am still looking for beta users, dm me if interested (offering premium user slots , normally $70, for free, no strings attached) Any feedback is very much appreciated!
For a demo of my product: https://youtu.be/0kpqHlYEf08
After spending about 6 months (way too long) I now have my MVP ready, and I'd like to share my technical experiences and what learned while launching my webapp.
Part 1: technical experiences
1.1) Vercel + Next in general
I bootstrapped my app with NextJS and Vercel and my gosh what a joy it is to work with.
Both are so extremely powerful. The only thing I find highly annoying about Vercel is how strict it is when deploying. It will block deploys even if some minor linter issues occur in your commit. I overcame part of this by running next linter using husky, which happens everytime I commit locally. Still there are some Vercel errors that may occur and be blocking. I'm still looking for a type of Vercel linter to prevent this.
That being said Next has all the bells and whistles I can ask for:
1.2) GraphQL
I use GraphQL and I absolutely discourage anyone from using it for bootstrapping your app. I used it to simply gain some experience and add marketvalue to my CV. GQL makes things that are extremely simple extremely difficult. As an example: when I want to add a property to my User datatype I have to make adjustments in at least 4 different places across my app.
I would highly advise to simply use firebase's sdk which is extremely flexible and easy to use.
1.3) Tailwind
I've been using tailwind for a while and I'm loving it still. It makes your React components modular, it's easy to write, easy to maintain, and reduces your lines of code extremely.
Part 2: general learnings
2.1 Defining defining defining
I didn't define my product well enough when I started. Who am I serving? What are their issues? Will my features actually deliver value? Who have I spoken to to validate if my features would be worth paying for? These were definitions that I didn’t care enough about.
As I went along I discovered that my target audience was way too large, and I should narrow down to find my niche.
2.2 Scoping scoping scoping.
I started building “just an app for job seekers”. I then started working and building. What I would do differently, firstly, is spend at least two full days scoping and defining my work and product. I would spend this time chopping up work into tasks into epics, in a proper project management tool (jira is my fav and its free) and also defining my product. I notice that I was just randomly building away and not critically looking at the work. I discovered later that it would have been way easier to use existing api’s and services for what I was building.
Another example: I found myself in a rabbithole by some weirdly formatted CV that someone uploaded. This caused a bug that was very hard to solve. I spent 3 hours on it. Mind you: we still don't know if anybody even wants to use my product!!! This again comes back to:
Scope out your work and define the maximum time that it’s worth solving.
In hindsight I would simply show an error message: try uploading a different CV or convert it to JPEG before uploading it (JPEG always works)