Getting started with several architectural questions

I’m very excited about Meteor. I’ve read a bunch of articles/tutorials and it seems like a great solution for future development. As a long time developer and having looked at dozens of NodeJS based architectures I like Meteor because it’s very complete as opposed to a more home grown architectures even when using something like the MEAN stack (which really requires a lot more work just to get started). With that said I prefer more opinionated architectures like Ruby on Rails but there’s certainly a great advantage of the javascript everywhere and the fact that meteor includes all sorts of goodies (mobile, deployment, websockets) which really leads me to try to create and application in Meteor.

I would like to write an application that has the following aspects (typically for standard business app):

  • storing several tables of information with validations
  • standard list views (e.g., datatables) and forms (with validations) - lots of CRUD, some business logic
  • API calls to external RESTful APIs
  • works both on web and mobile
  • nothing fancy on the UI - i.e., can use bootstrap - mostly data presented
  • autocomplete fields - to search in a table for items
  • real-time is nice (since it’s already part of Meteor) but honestly not necessary in most cases.
  • Login/Account creation - regular password/google/facebook
  • different roles / views of data/screens based on role
  1. So after reading a bunch it seems like I can just figure out that I need things like collections2 and all of the right other packages or use something like Meteor Kitchen or some boilerplate. Meteor Kitchen seems to generate a nice starting point for a CRUD based system (and authorization) but is that the way to go? Does it generate a good (recommended) starting point? It seems to do its data validation on the client and not the server.

  2. I’m used to MVC and regular routing. I noticed that many articles specify iron-router. Recommended?

  3. I’m used to RESTFul services and no session but it seems like there is lots of use of the Session in the articles I’m reading. Is the use of the Session part of a typical (recommended) architecture?

  4. I’m used to SQL databases, but want to give it a shot at MongoDB. If I go down the MongoDB path and it doesn’t work out for my application (e.g., need tons of joins) can I use an RDBMS? Are they supported? Some tutorials say not yet, but I see some libraries out there.

  5. I’ve come across many meteor live links that just don’t work. Did some site hosting Meteor projects get turned off recently?

  6. I’m used to datatables and I see Meteor Kitchen generates some usage of a table/grid. What’s the recommended approach here?

Again, overall I’m looking for a consistent, highly-used set of approaches for my architecture that most people are following and struggling with a little bit of too many choices.

Thank you in advance for the help!

First, make sure you read the Meteor Guide as it makes more opinionated choices on technologies and best practices, like what router to use. It is likely more up to date than many blog posts you might have read and should answer most of your questions above.

Also, checkout this Simple CRM - A line-of-business app example in Meteor 1.3, React and Redux and the associate repo https://github.com/tomRedox/simpleCRM Could be a good starting point if you want to use React/Redux.

Yes, MDG used to have a free hosting service at *.meteor.com, which was shut down recently. Some of the popular sites were moved to MDG’s Galaxy hosting service and most just shut off.

Thank you @skirrunman. I appreciate any help. I have read the Meteor Guide but I didn’t see opinionated choices on technologies - e.g, listview, session vs. RESTful, etc.

Also, I don’t mind Blaze to start, but I understand the benefits or otherwise of using React/AngularJS/etc. I like the fact that most Meteors devs seem to use Blaze (which I find a simple and useful part of the architecture.

Thanks for the info on MDG. It’s frustrating (or really concerning) that what seems like an important package (datatable like feature) - has a dead link on the demo page. And probably 25% of the demos I look at have the same issue.

I’ll touch on stuff that is totally no brainers. Other things its up to you…

Number 2. No Iron Router. Go with FlowRouter.
Number 3. Do not use Session variables. And you can build your app in a REST similar pattern by using Meteor Methods.
Number 4. Mongo is the only supported DB today. In the future the data layer will be decoupled and you can interface with something called Apollo. docs.apollostack.com for more info and on medium.
Number 5. free meteor hosting has ended, so some people didn’t change their tutorials and let those sites die.

Thank you @abhiaiyer. I like your answers. I’m still stuck on some of the details here because when I search around for RESTful implementations with Meteor it’s not obvious what to use. I guess tonight I’ve dug a little deeper into Meteor and also tried generating some code using Meteor Kitchen and realize that for something “quick” I may just want to do the default (client side routing/validation) and just ignore RESTful routes for now unless I need them external to my application. Not sure.