5
4 Comments

Build the product for clients as an indie hacker

I resigned from my daily job 2 years ago to purchase my dream of building SaaS products, I’ve built 3 paid products as an indie hacker but none of them has become a big surprise. Maybe not time to give up, but I do need to get more income to support my dream and life.

preview

Luckily I met a DJ and his team who wanna build a new platform to serve the professional DJs. He got tired of hiring a digital agency, so he asked me if I can build the product as an indie hacker. TBH I wasn’t sure if I can handle all of this because I even don’t know how to do database backup at that time, but anyway I’d like to give it a try.

After 6 months of work, as a tech nerd among a bunch of DJ, I helped define the product, designed all the UI/UX, developed both frontend and backend, and setup all the devops works.

preview

The product launched on time and got a few paid users, not as much as expected because of the current virus situation, but we both feel excited working with each other. And it gives me more confidence to serve any client as an indie hacker, so here I wanna share some tips about building products for the client:

1. Work on collaborating tools

I can’t image how can I communicate with my client without collaborating tools, now we can just sit in front of the desk and discuss anything with each other from designing to the database structure. And I found these useful tools are usually free for my case.

  • Designing: Figma, there’s no learning curve for me as I used Sketch to design my products before, I never taught my DJ client how to use Figma but he learned how to left comments and export by himself.
  • Database designing: SqlDBM, my client recommended it to me and it becomes my favorite tool for database designing.
  • Docs: Google docs, there are some alternatives like dropbox’s paper so it just depends on the team’s habits. We use google docs to share milestones, feature planning, etc.

2. Create milestone

I never set up a milestone when I building my products, but clients always feel better with milestones to keep aligning on the progress. Now I even start having milestones for my own product to keep my personal developing rhythm.

I create milestones based on features, so its span usually from 1 week to 3 weeks. I like setting the deadline on Wed or Thurs and leave some time for the feedback.

3. Try to automate

One of the best things about building products as an indie hacker is I also write scripts all the time to automate my own workflow which makes me more efficient.
For example, when I want to push a new feature online, I just need to run a script in my local, it will push codes to both code repo and the server. After the server receives the updates, it will rebuild corresponding containers, restart the server, run database migration, etc.

Besides, I also have scripts for setting up the Nginx with SSL, backing up the database, creating templates for both frontend and backend after creating a new model, etc.

I believe most of my issues can be handled by some other frameworks or CI/CD tools, but I’m not working in a team so I don’t have to always spending time learning new frameworks or tools. I can just use everything that I’m familiar with and get the work done efficiently.

4. Iterate rapidly

Usually, I finish designing UI and model relationships before writing real codes, but I don’t always have good ideas on the UIUX. Sometimes I would just complete a new feature with a plain design first for the client’s review, and we polish it step by step, it gives both of us better control of the product’s direction.

For the client’s review, I don’t have another server for the staging environment, so I created preview permission for admin users to review new features before it opens to the public. It’s not always working, particularly when the new feature would change the data structure, but acceptable at the earlier stage of the product.

preview

5. Use Email

No matter instant messaging apps or Slack is kind of disturbing, I still feel Email is the only way of the asynchronous communication.

Except for emergencies, I usually communicate with my client by Email, and we only met once and had online calls twice. In this way, I can handle my working rhythm and put more focus on thinking, planning and doing.

Thanks for the community and open-sources

Finally, I wanna thanks for the tech community, I can't imagine how can I finish the works like parsing music files, or displaying a waveform without open-sources' help. Not mentioned the open-sourced framework and tools I used every day.

It made me think if I should contribute more to the community, so I shared 1 tech article about redis sentinel and 2 PR for the open-sources while making the product.

Happy creating :)

on April 17, 2020
  1. 1

    Hey @wwayne Thanks for sharing your experience. Could you please share a link to the product? A friend has friends who are DJ's so I'll be happy to ask him to share the product across to his friends.

    Out of curiosity, did you use any tool for managing tasks?

    1. 1

      Hi :) it is https://pyro.dj, the main market is in China atm, so the visiting might be slow cuz the servers are in China.

      I only used Google doc for task managing.

      1. 1

        The load time is indeed a little slow as you mentioned. Have you tried Trello for managing tasks? I used to document guy as well until I found out about Trello and haven't stopped using it since.

        The website looks good. Just one feedback, the website from the "What we offer" section onwards seems to be too dark. Maybe some DJ type images and a few colours might help :)

        1. 1

          Thanks for the suggestion :)

          I haven't used Trello, but I used Github and Jira for task managing when I worked in my full-time job, I just feel the document is enough for my case. Anyway, thanks for the sharing