How I gained 1k stars on my Github project
Today I'd like to share with you my secrets how I gained 1,000 stars on my Github project, secure-electron-template
.
I wanted to scratch an itch
My first commit was on March 4, 2019. I had the idea that I wanted to start a business, and make some money. My plan was to make a budgeting app with Electron - I would sell this software to others.
I continued to work on this app, and by April I was reaching out to people if they would test my app. I tried to offer cash in order to entice others - notice how much traction my first post got, not very much.
I wasn't deterred, and so I tried again a few days later.
I hit the jackpot. People were signing into my Slack server and I was sending out $15 amazon gift cards after they downloaded and gave me feedback on the app.
The front page of Hacker News
Luck would be on my side - someone shared my project and my project got front page visibility!
I was ecstatic, my idea has market value. By this time, I was working on forming my own legal company in order to sell my app. The rest of 2019 I continued to seek out feedback, respond to Github issues, and work on new features to flesh out all of the bells and whistles someone might want in a budgeting app.
Realizing some flaws
As I continued to polish the app, I began to notice flaws with my design. The Electron framework at the time was moving towards an IPC-based architecture, which was more secure than bundling the Node runtime in the client process. My entire app was using the Node runtime method (as that's what all of the tutorials out there were explaining how to use Electron), and I knew I couldn't in good conscious sell my app knowing it's potentially flawed.
I pestered a few of the Electron maintainers with my questions, and eventually got an answer to my question that solved the design I was looking for in order to make a secure Electron app.
I pivoted my focus
My budgeting app took second seat as I put more and more time building my application the responsible way. I started posting all that I had learned on related issues, as well as cross linking answers I posted in Stack Overflow. My idea was to create a secure template, and then use that template to rebuild my budgeting app.
The next year was certainly not easy, but it was fun! I learned that front-end JS development can be quite a mess to pull all of the tools together. I focused on one piece at a time, building each component that I would want my app to be able to do. The feature set today is quite impressive.
With all of these cross-posts between Stack Overflow and Github, as well as additions of my repository to boilerplate lists, my repository continued to get new visitors in organic traffic.
I stopped advertising, and kept on improving the project
My interest faded from selling a product (so much so that I dissolved my business) to more of supporting this little project that's helped so many people and gives me a outlet to code outside of work.
Just recently, we hit 1,000 stars on Github.
What is the secret to Github success?
If I had to boil it down, the success to my project has been the result of:
- Desire to build something (intrinsic motivation)
- Lack of a suitable alternative
- Word of mouth advertising (paid - less so)
- Creating resources/posts that backlink to the project
- Time - (it took about 2 years to get 1,000 stars)
What is new with the project today?
If Electron or secure cross-platform applications are something you are interested in, there is still ongoing work on this repository. Here are some of my enhancements that are on the docket for the repository, don't be shy if you want to get involved!
secure-electron-store
needs to get upgraded to use GCM as the encryption cipher, to replace "aes-256-cbc."- There is currently an upstream issue preventing the repository from upgrading to a newer version of Electron. I plan to make breaking changes to the secure-electron-store package in order to get around this bug (namely, because I don't think users use this particular method).
- There is a lot of desire for a typescript version of the template. I have thoughts on how this can be implemented.