I'm a software engineer by trade, but I've always been interested in marketing and growth. I've been working on a various side projects for a while now, and I recently hit a major success: 100,000 unique visitors in one week.
Here's how I did it 👇
https://twitter.com/piotrkulpinski/status/1767108966603980866
The Idea
I was collecting a list of open-source software for a while. Mostly for my own use (to learn and reuse parts of the code), but I thought it would be cool to share it with others. I was also interested in learning more about SEO and growth, so I thought this would be a good project to experiment with.
I didn't want to spend a lot of time on it, so I decided to build it within 48 hours.
With such a short time frame, I had to be very selective about the features I wanted to include. I decided to build a simple listing with no search or filtering.
Curating the list
I started by expanding the list of open-source software. I used a combination of Google, Reddit, and GitHub to find the most popular open-source projects. I also used my own knowledge and experience to find lesser-known projects that I thought were worth including.
I didn't want to include every open-source project I could find. I wanted to keep the list high-quality and focused on the most popular, useful software and actively maintained projects. I collected about 70 projects in total.
Building the site
Astro was always on my list of things to learn. I've been using Remix and NextJS for a while, and I was interested in trying out a new framework. I decided it would be a good opportunity to build the site with it. This decision turned out to be a great one, as it saved me a lot of money on hosting costs later on.
While browsing the Astro documentation, I found out they have a pretty easy way to implement a View Transitions so I tought it would be a nice touch to the site.
For the backend, I opted for Airtable as a database. It's a simple, no-code solution that I've used before. It's not the most powerful database, but it's perfect for a project like this. I could easily add, edit, and delete records, and it has an embeddable form functionality that I used for user submissions.
Unfortunately, Airtable's API isn't the best for querying data, so I used a middleware service to turn the Airtable API into a GraphQL API. This allowed me to query the data in a more flexible way.
With the data and the site structure in place, I started building the site. I used Tailwind CSS for the styling, and I was able to build the site in about 12 hours. The good thing about having multiple projects under my belt is that I can reuse a lot of the code I've written before.
Building an Open Source listing, it was pretty obvious that I should open-source the code as well.
GitHub Data and Programmatic SEO
To make the site more useful, I decided to include some data from GitHub. I've built a scheduled Cloudflare Worker that's pulling the GitHub API data to fetch the number of stars, forks, and issues for each project.
I also pulled some related tags from each repo, like what programming language it's written in, and what it's related to (e.g. CMS, CRM, etc.). I then put this data into Airtable and used it to generate lots of pages for Programmatic SEO.
It's too early to tell if this will have a big impact on SEO, but I think it's a good idea to have a lot of pages for Google to index. It's already ranking for some very competitive keywords like "open source alternatives" so I think it may work pretty well.
Hosting
Since Astro is a static site generator, I could host the site for free on Cloudflare. I've never used Cloudflare before, but they've been pretty popular lately due to their free hosting and CDN. I was impressed with how easy it was to set up, and the performance was great.
I then picked the simplest name I could find and registered openalternative.co for $6.99.
Launch(es)
Like always, I posted about it on Twitter. Given that I only had 900 followers and I usually tweet to the void, I didn't expect much. But to my surprise, the tweet got some attention. Nothing crazy, but it was a good start.
For the next few days I let it sit and see what happens. I was engaging with people on Twitter to get some feedback. One of such conversations was with Steven Tey who seemed to like the idea and decided to share it with his audience.
https://twitter.com/steventey/status/1765841867017437599
This was a huge boost for the site, as it got a lot of traffic from his tweet.
Product Hunt
I knew I had to keep the momentum going, so I decided to post it on Product Hunt the next day.
I still had some nice traffic to the site, so I've added a custom PH banner to the top of the site to let people know about the launch. I also posted about it on Twitter and LinkedIn.
With the help of the community, we were able to get 3rd place on the day of the launch with over 500 upvotes. This was one of the most successful PH launches I've ever had.
Hacker News
Knowing that the site was getting some attention, I decided to post it on Hacker News as well.
I had a feeling that it would do well on HN, as I thought it would be a good fit for the community, but I didn't expect it to get this good.
The post immediately got featured on to the front page and quickly climbed to claim the #1 spot on the site. It got over 150 upvotes and stayed on the front page for a few hours.
Being featured on Product Hunt is great, but #1 on Hacker News is a whole different level. The traffic was insane. I was getting thousands of visitors every hour.
In the same time, I was also posting about it on Reddit. I've posted it on a few subreddits, but the most successful one was on r/SelfHosted. It quicky got over 250 upvotes and a lot of comments.
Unfortunately, I made a mistake by trying to monetize some of the traffic by adding a Stripe Pay link to the site. For $97, a project could be featured on the top of the list. I thought it would be a good way to monetize the site, but it was a mistake. I got a lot of negative feedback and I quickly removed it.
Due to that, reddit users quickly turned on me and the site. I was getting a lot of negative comments and downvotes, and the post was removed from the subreddit.
Still, the traffic was great and I was able to get a lot of feedback from the community.
Summary
The site was a huge success. It got over 100,000 visitors in the first week, and it's still getting a few thousand visitors every day. It was a great experiment in launching a side project and growth, and I learned a lot from it.
Hopefully, you'll be able to take something away from this story and apply it to your own projects. If you have any questions or feedback, feel free to reach out to me on Twitter.
If you want to check out the site, you can find it at openalternative.co.
Top comments (24)
Nice. I like picking a pet project whenever you want to learn a different framework too.
Are you intending on keeping this up-to-date yourself or by submissions/pull requests?
What is the unique selling point compared to other lists of open-source "alternatives"? There are already a lot of sites that seem to cover the same ground, so what do you do that's different, or is it more a personal collection than a general service?
I am! In fact I'm working on a new version as we speak. It should introduce a better way to find/filter the collection.
I'm aware there's already a nice competition in the space, but I think most of them list everything that's open source. I focus at picking a solid, well-maintained, for-profit companies that decided to open their codebase to the public.
As a fan of open source project myself, I love your idea. I wonder if you would like any helpers or contributors?
Of course! I'll be releasing new version of the app this week, so feel free to reach out/contribute. I'd love to be able to feature more awesome open-source projects so let me know if you know any that are not yet listed!
Awesome project, we 💜 Open Source!
Beautiful idea man 🙌 I liked it. I've found Cal.com there. Thank you.
Lots of great software there! Glad you find it valuable 🫶
@piotrkulpinski nice idea and execution. This is so motivating to me. Can you describe more usage of "middleware service"? I like you have used Astro for all of this.
By "middleware" I mean a third-party service that is a wrapper around Airtable API. I find GraphQL to be easier to use than their API. Plus, I can run a codegen on the GraphQL queries to generate TypeScript types automatically.
Astro is great! I'm moving away from it as I want to add more dynamic stuff to the site, but I'll be using it for more sites that are content heavy.
Great article, loved to read it and know more about your experience
Thanks Victor!
Great Idea. Thanks for sharing 🫡
Congrats! I've seen it when it launched on Twitter and love how clean the design is. Also, just submitted vrite.io :)
Thank you! Vrite should be up on the website soon!
Thanks for the write-up and congrats! Keep it up
Thanks 💪
@piotrkulpinski btw informations like "Last commited" and "Stars", "Forks" and "Issues" are pulled out via API?
Yes, I've build a scheduled Cloudflare Worker that is pulling GitHub API every hour using their GraphQL client.
You gave me some ideas for new project thanks!!
Awesome! Let me know what you build! Let's connect 🫶
Some comments may only be visible to logged-in visitors. Sign in to view all comments.