This ain’t no ‘bye bye Meteor’ post, but I’m looking for ideas regarding a non-Meteor stack.
TL;DR How would you build a super SEO friendly, mega scalable blazing fast site combining lots of both static and dynamic content, with the necessary hooks into the Meteor apps, such as login state?
I’m overwhelmed by different possibilities right now.
I have a fairly complex app, split into three different parts. Two of them are Meteor apps, which basically have their own user “types” with entirely different features, available for registered users only.
The Meteor apps are quite loosely connected, mostly by sharing the database and the same Messaging-component, so the users can send in-app messages back and forth to each other. Nothing interesting in these apps, developing in Meteor-land is nice and easy
The third part (which I’m asking help with) is more like a traditional website, if you will, where I’ll mostly have lots of static content, such as a front page, blog posts, articles, intros, tutorials etc… but it will also have a way of listing and viewing different types of content created in the Meteor apps.
Meteor was the perfect solution for the other two apps, but this part of the site is public (everybody can browse&use) and very important to be indexed by bots properly, so I’m going to skip Meteor on this one (also because of Meteor’s initial loadtime and heavy bundle size).
Basically this is the first time in over a year that I’m seriously studying my alternatives besides Meteor, Blaze and ViewModel, so suddenly I’m drowning in different possibilities.
My current master plan revolves around this type of thinking
- Use a static site generator, since lot of the content will be blog posts, articles etc, maybe Hexo?
- Make some pages dynamic, since I need to list items, search items, show detailed views of items, show login status for users who are logged in to the Meteor apps. Vue seems nice!
- …but since it’s SEO critical, I need SSR!
- Vue has that. Nice!
- …what if I exchange Hexo to Metalsmith and connect my database to the build process, so all the listings and item views could be pre-rendered to static HTML pages, maybe nightly? It doesn’t necessarily have to be “instant”.
- …I still would need Vue though
- This is getting complicated
- Vue does have caching of SSR components. Maybe that could work easy.
- I really like the idea of Svelte. I wonder… Ok I’m getting lured by the new fancy thing, beware!
- Control yourself! but…Apollo???
- …endless monolog…
- So, if I started now, I would build my static site with articles, blogs and whatnot with Metalsmith or Hexo, then I would have my (mostly) server-side rendered Vue app that relies heavily on caching, and they would be combined to a seamless experience in a not-yet-decided fashion.
So the stack would be: Vue+Express+SSR (cached) and Metalsmith for pure static pages.
This is where my flow of thought stops, trying to figure out the best way to attach these two together in the most sensible possible way. I’m also troubled that I can’t figure out any alternative solutions.
How would you build this? What would your stack of choice look like?
Thanks for reading this far I chose not to post this under the Vue-topic, since I’m interested in hearing other ideas too.