I built a community platform from scratch in 7 days w/ Ruby on Rails, Tailwind, JawsDB, Heroku
I am the co-founder of Flexiple and Remote Tools. In this post, I describe how I built a community website from scratch (almost) in 7 days.
TABLE OF CONTENTS
- Product Brief
- Basic setup & Making the website live
- User Onboarding
- User Profiles
- Email Notifications
- Removing unnecessary features
- Consistent UI across all pages
- Iterations on homepage UI
- Transfer early access data & Initial threads
- Going Live
- Custom built on top of lobste.rs, computing-focussed community
- Tech stack: Ruby on Rails, Tailwind, JawsDB, Heroku
- Cost: $17/mo ($7 for Heroku dyno + $10 for JawsDB)
- Time to launch: 7 days
For a quick read, you can check this twitter thread instead:
I built V1 of @RemoteClan, our community platform, in 7 days.— Hrishikesh Pardeshi (@hrishiptweets) September 16, 2020
- Custom built on top of https://t.co/x2Pqmw3sFv by @pushcx
- Tech stack: Ruby on Rails(@rails), Tailwind, JawsDB, Heroku
- Time to launch: 7 days, Cost: $17/mo
Here's how I built it 👇 pic.twitter.com/B6qwBJP4Zd
We spent ~2 yrs to build a niche remote working audience at Remote Tools. We have 4000 newsletter subscribers, 20,000 unique users monthly, 42 stories & 2 seasons of podcast.
We are building an exclusive remote work focussed community on top of this. Given we already have a sizeable audience, the community website can’t be a simple MVP.
The broad pointers are –
- Content posts & user profiles are the prime focus.
- UI & Micro interactions are going to be a major hook for the website.
- Want to stand out from traditional forum websites like Tribe.
- Timeline for launch is 1-2 weeks. Build only that’s most essential.
Basic setup & Making the website live
I didn't want any setup & maintenance hassle and since I am using Rails, Heroku seemed to be the perfect choice.
Lobste.rs codebase is tested with MariaDB while Heroku pairs well with Postgres. I didn't want to spend a lot of time on migration, so, I searched for Maria-based on Heroku and found JawsDB.
I was a little skeptical to use an unknown DB/ plugin. So I dropped an email to their support asking a few basic queries. I received a response in just an hour which instilled confidence in me to go ahead with JawsDB.
We want only truly passionate & interested people to join Remote Clan and engage in genuine discussions. We didn't want to restrict access by charging for membership, so instead, we had every member share information about their work, experience & their thoughts around remote working.
Naturally, the website must have tiered access basis profile completion. I added user profile fields and proper redirects & prompts for incomplete profiles vs. onboard users.
We already have detailed information & reviews on 900+ remote working tools posted by makers over 2 years. So we wanted to leverage and seamlessly connect Remote Tools with Remote Clan.
Added an interactive dropdown as part of the profile to choose from the list of tools on Remote Tools. Data from Remote Tools in stored in Remote Clan DB and is fetched automatically once every week.
We know it isn't realistic to expect people to log onto Remote Clan by themselves. So we needed a way to prompt users to take action.
Email notifications are the best in this regard since everyone checks their mail regularly. Lobste.rs already had an email notification module, which I tweaked a little to send out notifications when -
- Someone comments on a post made by you
- Someone replies to your comment
- Someone tags you explicitly
Removing unnecessary features
We want all conversations among members to be public so that everyone can benefit from the discussion. So personal messaging as a feature didn't make sense, at least at the current stage.
Similarly, we didn't want to overload users with tons of settings & features which aren't essential to core interaction on the community.
So I stripped off most of the extraneous features including hats, moderation log, browser notifications etc.
Consistent UI across all pages
Tailwind is amazing for many reasons, but these stood out for me -
- Creating custom components & UI was super easy & quick
- I was able to easily replicate custom components across all pages
- I also liked the components offered out-of-the-box and used it for standard pages like all login/ signup pages.
Iterations on homepage UI
The landing screen is the most important page on the website. We wanted to put our best effort on this so as to retain all of the traffic we divert to it from Remote Tools & other channels.
We spent a good amount of time discussing & debating possible options for the posts, colors, buttons, hierarchy etc. and came up with 4 choices. We put up the 4 choices through our Twitter account and also sent it in our newsletter to get people's opinion on what clicks.
Transfer early access data & initial threads
For ~2 weeks, we had put up a simple early access page explaining the community and having interested people sign up. This was before I wrote even a single line of code.
We had ~150 people complete our onboarding form on Typeform for early access. All of this data was sitting in AirTable and I wrote a simple script to fetch the data & create these users & their profiles.
Finally, we created our initial set of threads on community guidelines, introductions & coffee chat.
That's it! We were live on Day 8 😎
I sent out welcome email to all early access users via MailMeteor.