3
0 Comments

First launch of the year built in 7 days πŸ™Œ | How I did it, tech stack, and the next steps

My last app took me nearly a year to make, it was slow and frustrating. I just wanted to ship the thing ASAP. It's common knowledge that the ability to swiftly transform an idea into a tangible product is a skill that can set you apart as an indie hacker.

This year I really want to make it as an indie hacker and decided to focus on a couple of important things :

  1. Choose an idea small enough to build fast
  2. Before building do a ton of research to make sure people want it
  3. Focus on Marketing -- split my time 50% coding and 50% marketing + try various things to see what clicks

Here's the breakdown how I built and launch my first product of the year in just seven days; from idea generation to the tech stack.

The Genesis of the Idea:

Like many indie hackers, my inspiration struck in the face of a real-world problem. With job opportunities becoming scarcer, I realized the need for a tool that could help job seekers to efficiently apply for positions without the painstaking process of manual submissions. Enter InstaApply – a job bot that streamlines the job application process on LinkedIn. It essentially it intelligently scours through and 'Easy Applies' to 100s of jobs every day, on your behalf.

The Blueprint:

Market Research
Before diving into development, I conducted thorough market research to understand the pain points of job seekers. I discovered that the LinkedIn Easy Apply feature was widely used but time-consuming, prompting me to focus on automating this process.

Define MVP (Minimum Viable Product)
To meet the seven-day deadline, I outlined the core features necessary for a functional MVP. The app's primary function would be to automate the application process for LinkedIn Easy Apply jobs, making it a time-saving tool for job seekers.

Technology Stack

Choosing the right technology stack was crucial for the rapid development of the app. There are three parts here, the backend, website and the chrome extension.

Styling + Designing Quickly
For both parts I decided to go with tailwind css and shadcn (react.js) library as it's designed really well, easy to use and has a ton of useful components out of the box. The best part is that they have a figma kit so it makes wireframing quick and near production ready.

Website + Backend
After considering many options I decided to go full-stack on Vercel's platform with Next.js w/ Typescript, Postgres for the DB, and Drizzle for the ORM.

Vercel is really awesome because it now has Postgres support which takes 5 mins to set up. The best part is Vercel will auto-deploy all the REST APIs for you on an edge network. So there's no infrastructure headache and it's just incredibly fast to go from zero - launch on this platform with performance built in.

Alongside this, Drizzle is a top-tier ORM, easy to use and quick to work with. The out of box Typescript support is a god sent and helps keep things type safe while the functional style allows for composing queries in a jiffy. I can't suggest it enough!

The Chrome Extension
This is my first chrome extension, but it was way easier to build than I could've ever imagined.

The setup is super easy. A React.js based Vite starter project alongside shadcn components + an awesome ViteJS plugin called crxjs. It is seriously just magical for chrome extensions as it enables HMR for the chrome extension popup 🀯.

Emails
The emails were built with (ReactEmail)[https://react.email/docs/introduction] an awesome library where you can build emails using React + Tailwind CSS. I connected this to AWS SES and the emails were sent from the Next.js APIs.

**⚠️ AWS SES gotcha : **
It usually takes a day or two for AWS to approve more than 100 emails a day so watch out for that if you think you may need it. You also have to of course request that this daily limit be increased through a message on AWS.

Payment
I used Stripe for payments but discovered that payment links can pretty much replaced the previous manual checkout process which usually takes a bit of code + back and forth between client and server.

Here's how it works :

  1. User pays on the payment link
  2. Stripe hits our webhook (just like w/ Stripe checkout)
  3. We save the user's details and send them an activation code through email

Tech Stack Recap
β€’ Next.js for website + Rest APIs
β€’ Drizzle ORM + Postgres
β€’ Shadcn + tailwind for styling
β€’ Vite-React starter project + crxjs plugin
β€’ ReactEmail + AWS SES for emails
β€’ Stripe Payments Links for Payments
β€’ All hosted on Vercel

πŸ“ ✨ Btw, another highly underrated tool from Vercel is their CLI. You don't have to manually do things on the GUI such as connect to a github repo etc. Just use 'vercel link', and 'vercel' to create and publish a project. The 'vercel pull' will pull all your environment variables from vercel to your local environment, e.g, the postgres urls for migrations.

The Development Sprint:

With the groundwork laid, I dedicated the next five days to the development phase:

Day 1-2: Frontend Development
I designed a user-friendly interface that simplified the application process using Shadcn. A clean and intuitive design was essential for a positive user experience.

I usually break down the different parts and start building the react components and pages first with dummy data. And once all the UI is done I add state and API integrations.

Since the REST APIs were not ready yet, I added mocks using json-server, which is quite straightforward to setup. Once the backend was completed I just swapped out the endpoint URLs.

Day 3-4: Backend Development
The backend, powered by Next.js APIs, was responsible for handling user authentication, managing job applications, and tracking daily user progress.

This wasn't too crazy to do, good ol' JWT authentication + REST API architecture similar to building an express.js app.

Day 5-6: Testing, Bug Fixes, Refactoring
Rigorous testing was conducted to identify and resolve any issues. I also implemented user feedback received during the beta testing phase. I sent it out to a couple of friends and ask them to do everything they could to break the app.

Of course there were some not ideal implementations that I then had to refactor / re-think that came up. But that's all part of the process of refinement.

The Launch
On the seventh day, InstaApply was ready for launch. I focused on creating a buzz around the product through social media, forums, and outreach to job seeker communities. On the first day of launch I got 1000s of views across LinkedIn, Reddit, and Tik-Tok.

At this time I submitted my app to the chrome web store and was awaiting review for it to be published which took about 24 hours.

Conclusion
I kept things simple with the tech-stack, sticking to one platform while continuing to work with the tech I'm familiar with. This helped me move fast.

Compared to my previous launch there's a clear direction forward with a target audience to market to. The next step is to continue growing the buzz around the product on social media, catering to the audience, and making improvements.

And Voila! That wraps up my first launch this year!

Thanks for stopping by ! πŸ™Œ


The live project can be found here : instaapply.co
And the extension is published here on the chrome web store

You can keep receive more tech tips from me and follow my 'build in public' journey on Twitter πŸ‘‰ @__moniet

on January 8, 2024
Trending on Indie Hackers
6 weeks solo, 2 rejections, finally live but nobody told me marketing would be this hard User Avatar 80 comments Building ExpenseSpy solo, no funding β€” launching June 17 on iOS & Android User Avatar 38 comments Hi IH β€” quick update. The MVP is live. User Avatar 34 comments Day 7: 51 people answered my question. I wasn't ready for what they said. User Avatar 18 comments I built a $5/1k-listing CRE data API because CoStar is overkill for first-pass scans User Avatar 16 comments I Was Bypassing Every App Blocker, So I Built One That Fights Back User Avatar 11 comments