The features of IH are a nice superset of some things I'd like to be able to do on my own sites, including:
- A mix of forum pages and other content pages.
- Easy login via either email confirmation or Facebook/Twitter/Google.
- Hierarchical commenting, with up and down-votes for topics and comments.
- User profiles with optional pictures.
- Ability to see your activity history, follow people, and get various types of notifications.
- "Load more on scroll" functionality on many pages.
- All sorts of nice little animations and transitions.
- Search across the site with suggestions as you type.
I saw uses of ember in the page source, and this means the back-end is node.js?
If you know what tools/plugins were actually used, or what tools/plugins you'd use to create these features with the least work while still allowing for a lot of customization, please comment.
I'm not surprised that Indie Hackers is made with Ember. The amount of productivity Ember enables you is incredible - you can now see how this website moves ahead so quickly. With this framework you don't have to deal with things that do not matter, for example: build pipeline, complicated deploys, contemplating what file goes where, deciding which module to use... It's the best framework for indie hackers to focus on what truly matters: shipping to your users.
Ember, Express and Firebase.
https://www.wappalyzer.com/ should answer most stack questions.
Thanks! I did not know about that tool. Very interesting and helpful!
None of the features you list are dependent on tech stack. IH does use Ember, but that in no way requires you to use Node. Earlier when I asked about performance issues (slow page loads), @csallen confirmed my suspicion that Firebase was a big part of it. Once again, it's a tool you could use or not.
You could do all of the functionality that exists here with PHP and Vue... or Rails and UJS,or Elixir and Elm, or Hack and Reason/React, etc... the issue is more about understanding how the web works and the development than the specific language.
It sounds like you're looking for an off the shelf "solution", but those are 5 years behind and cover the lowest common denominator.
Right, thanks. Yes, I'm realizing my question wasn't clear: I'm a developer, although I've mainly worked in C++ on games and other graphical applications. I do have some web development experience, and I know how to build each of the elements in my list above -- but if I started to recreate this site from scratch using web technologies I'm familiar with (basically html/css/js/jquery on the front end, mysql/sqlite/Python/C#/php on the back end), it would take several weeks, and there would be bugs I'd be working out for several more weeks.
The thing that's always hard for me to determine is the extent to which people start with things that are already bundled together to some extent. For instance, this forum: I know how to store user profiles, how to make a hierarchical structure to store the comments, and do voting, and reference each user's comments in their history, and do all the nice little roll-over animations. I know how to do each piece. But I'm not very familiar with what's available in the different web frameworks (and their plugins) -- anything from WordPress to React to Rails to Node to Django to Drupal, etc, etc. Is there a hierarchical chat plugin for each of those frameworks? Presumably so, but maybe one framework or another would turn out to be the better choice because overall it covers more of these bases better than another?
The irony is that this question came across as if I was looking for the magic "off the shelf" framework that would do all of these features off the bat, whereas in fact the reason I don't know much about any of those frameworks listed above is because I tend to prefer to do things "from scratch" because (a) I learn more about the core technologies, and (b) in my experience it's often easier to write something from scratch than to wrestle with a framework or plugin that doesn't quite do what you need it to do, and you end up having to do more work to work around it than it would have taken to do it from scratch.
And yet still, when it comes to the prospect of building the sites I have in mind right now, in the time frame I hope to build them, there is a strong temptation to try not to reinvent too many wheels.
So the reason I used the word "superset" in my question was that I was thinking if (theoretically) I had the full source to both the back end and front end of a site like this with all its features and nice design (which I know is a collection of many frameworks, libraries, third party APIs, etc.), I could just remove/reorganize/modify instead of shopping around for the most promising frameworks/plugins/databases/front-end-libraries etc. and integrating them all together "from scratch". I'm sure I'd learn a lot in that process, but I'd also learn a lot by seeing how this complete site (or another one with a similar feature set and nice design) is put together.
I built a site like this in rails in 2.5 days with only a few gems and I hardly code anymore due to being in management in my day job. Most of it is easier to code from scratch once you've got all the low level stuff rails takes care of sorted. If you want to get up to speed quickly on rails do this tutorial: https://www.railstutorial.org/book
In that case, I think Rails is the clear winner. It has gems for almost everything and due to its "convention over configuration" approach, it's a lot faster to build with than Django or Node+Sails/other_library. Laravel Spark is another reasonable choice if you're into the PHP ecosystem, since it comes with a lot bundled in.
I'm going through a lot of the process you describe on my own sites (all Elixir/Phoenix), but of course newer stacks have fewer plugins, so I've had to do things like write my own event tracking library, build my own CMS, build a wrapper around Stripe's current Billing API, etc, etc, etc, and design has been way down on the list of priorities.
Excellent! This is just the discussion I was looking for.
So are you saying that if you could start your site over you'd use Rails and maybe avoid a lot of the low-level and wrapper stuff you're having to do?
One reason I've never looked closely into Rails is that I don't like the idea of having to learn a new language when I'm already very productive in C++/C#/Java. I know Python, php, and of course JavaScript, but I prefer strongly typed languages, given the choice. So Rails had always seemed like just another weakly typed language with a bunch of new syntax/concepts to learn, and probably (?) not very mature debugging tools, etc.
But maybe the tools are reasonable and the convenience of the gems outweighs the learning curve? I'll also look into Laravel Spark.
I hear a lot about Angular and React, but I hear from what you're saying that those don't inherently come with all of these widgets? (Perhaps they are more focused on providing/enforcing an MVC style or whatever, and less about what you actually do with that style?)
No, I wouldn't. Elixir has immense advantages in performance, concurrency, fault-tolerance and ease of debugging and the library gap is shrinking by the day. I'm all-in on Elixir and my current indiehack is teaching it to others.
That said, I don't want to mislead anyone. I believe Elixir is a massive advantage for a new startup, but it's not the best option for people new to development or even just newer to web development... yet. Rails on the other hand, has a very well-worn path to getting up and productive quickly. Best of luck to you!
No it doesn't mean that. Any backend that can serve up JSON could have been used.
A mix of forum pages and other content pages.
Tech is irrelevant here. Choose any web framework/tools or code from scratch if you are so inclined.
Easy login via either email confirmation or Facebook/Twitter/Google.
Again tech is irrelevant.
Hierarchical commenting, with up and down-votes for topics and comments.
Again tech is irrelevant. For the hierarchical commenting you need to learn about and understand various tree type data structures. Voting is trivial.
User profiles with optional pictures.
Again tech is irrelevant.
Ability to see your activity history, follow people, and get various types of notifications.
Again tech is irrelevant. For real time notifications you will need to look into websockets.
"Load more on scroll" functionality on many pages.
Basic javascript that fetches more data when you scroll.
-All sorts of nice little animations and transitions.
CSS or javascript
Loads of different ways to do this . Very popular tool is elastic search.
If you are asking because you are wondering which tech stack you should learn then you can't go wrong with NodeJS (ExpressJS) and ReactJS or VueJs atm.
For someone asking a question like this, the workflow dependencies and tooling involved with React are probably a really bad idea. Node is also a bit low level, and fraught as well, particularly given how fragmented the community is.
I'd suggest either of these options
And then just follow the standard playbook of whichever community.
Ye also a fan of rails for simplicity. Added to what you said I think a fundamental understanding of relational database design would be in order.
Thanks @rorykoehler and @alchemist. See my reply to @alchemist above.
And see, as I type this reply I see how it does nice @ completion and I think, "I know how to do that, but it sure would be nice if some library/plugin did it for me, and I sure don't know which library/plugin is doing it for this site." :)