- Published on
Building a SaaS Application Solo
- Authors
- Name
- Samad Ahmed
This year (exactly 3 months ago) I started building Chamoy
, an AI interviewing platform. There's a B2C component for job seekers and a B2B component for recruiters to use in order to streamline their vetting process across thousands of applicants.
I started building this platform as a one-stop-shop for job seekers and had functionality built-in for other necessities when job hunting such as cover letter generation, LinkedIn optimization, and much more.
However, when asking for feedback from users, I got the gist that most people actually have those problems solved. What people have the most trouble with is the actual art of interviewing. There is a way to frame your questions, answer appropriately, maintain great behavioral skills, and negotiate.
So that being said, I had shifted completely towards the interview and its functionality. As a result, every single person in beta has absolutely loved the platform.
I have a cofounder, but she focuses on marketing and operations. My sole purpose in this project is tech and product. The stack I have chosen to work with is what I'm most familiar with, along with some new things I've learned along the way.
The tools I've chosen make my development extremely easy.
Side note - this post's format is heavily inspired by Anthony Simon
Languages
I know a ton of languages (Python, Java, Go, JavaScript) but I went full-on with a single language. I chose this for a multiple reasons.
TypeScript
- I wanted a single language capable of both backend and frontend
- I wanted a great development experience
- I wanted type-safety
- I wanted no enterprisey feel
- I wanted the flexibility to interchange with JavaScript at any time
- I wanted a nice UI with minimal effort (using prebuilt components)
- I wanted to be able to hire developers anywhere when I scale
Frameworks and Libraries
I don't believe in building from scratch. This is partly why I kinda don't use Go that much these days but that's a different story.
React
- I wanted to use a framework I'm already familiar with
- I wanted to use something that I can easily hire for
- I wanted to use
Mantine
components - I wanted to use
Next.js
Next.js
- I wanted a 'monolithic' feel with my backend APIs and frontend in one repo
- I wanted to rely on a large community of developers
- I wanted built-in optimizations
- I wanted easy client and server rendering
- I wanted a robust middleware solution
- I wanted something that can easily let me build nested layouts
Mantine
- I wanted TypeScript-based components
- I wanted a ton of prebuilt components
- I wanted easy integration with
Tailwind
- I wanted something I can 'whitelabel' for specific customers
- I wanted a better API (sorry other libraries)
- I wanted sane defaults
ffmpeg.wasm
- I wanted to handle audio and video in the browser
- I wanted to use WASM to stay future-focused
Databases
Well, here it was really a no-brainer for me. I don't have a team (at the moment). So I opted for a solution that doesn't require me to have one.
Supabase
- I wanted Postgres
- I wanted auth out of the box
- I wanted edge functions
- I wanted bucket storage
- I wanted flexible pricing
- I wanted to support a product that placed developers first
- I wanted something with extensibility (HIPPA)
Deployment
No-brainer here as well. Speed is the most important thing for a startup. I care about building fast. There is nothing to optimize if the product is not at scale yet so I ignore price at the cost of development experience.
Vercel
- I wanted
Next.js
support (they built it) - I wanted to not focus on deployment
- I wanted zero infrastructure complexity
- I wanted lightweight analytics
- I wanted a peace of mind
And that's about it! I am using a ton of more libraries and other small tools but there's just too many to list. By keeping the stack lean, I have developed a fully functional MSP (minimal sellable product) in just three months with a second product already on the way.