Starting Meteor 1.3 from scratch, need some advice to get started

Hi everyone, I am looking for some advice. I apologize for the wall of text, there might be some redundant information. My goal is to get familiar with a web-app stack/framework that I can use to develop teaching tools but I am having a hard time evaluating all the different options. I currently plan to use Meteor but I am having a hard time getting started.

Goal of the web-app:
Develop a front-end that allows students to complete financial accounting exercises.

Features of this front-end are (in no particular order):

ā€¢ Immediate feedback (e.g. hints, answer checking)
ā€¢ Seamless access to information sources (e.g. the ability to open up and filter the transaction-diary, check inventory levels)
ā€¢ The ability to track usage-statistics (e.g. track time per question, track common mistakes etc.)
ā€¢ The ability to facilitate a ā€œsandboxā€ mode where students are given the freedom to practice and experiment.

The back-end consists of:

  1. A computation server that ā€˜fillsā€™ a PostgreSQL database (relation database).
  2. A server that serves the data to the front-end and deals with the business logic.

Personal goal:
It is not my intention to become a web developer or all-round JavaScript expert (Python suffices for most of my needs). My goal is to expand my skillset by being able to create web-apps for educational or research purposes. Learning JavaScript and new frameworks/stacks is not an issue, I treat these side-projects as a professional-hobby. :slight_smile: Time is an inevitable constraint however so I am looking for a way to develop (semi-) professional web-apps that can be developed at a reasonable pace without sacrificing too much on the potential functionality.

Current skills:

  1. Advanced Python user, but little prior experience with web-developing in Python.
  2. Basic knowledge about HTML and CSS.
  3. JavaScript beginner, only know the basics.

Problem:
I have a PostgreSQL database that is filled with data using Python. I am currently at the point where I have to decide on the framework/stack I want to use to develop the back/front-end of the web-app. After reading a lot of tutorials, blogposts, and books on this topic I feel quite lost as to which learning-path I should pursue.

The options that I am considering:

ā€¢ Server back-end:
o Django + Django REST framework (Python)
o Django + Websocket solution (Python)
o Meteor (JavaScript)
ā€¢ Front-end (JavaScript):
o Angular 1
o Angular 2
o React
o Blaze (Meteor)

My current considerations:

- Python & Django
I like the idea of using Python in the back-end because I can easily program the ā€˜business logicā€™ using Python. My biggest problem, however, is that it appears time-consuming and slightly tedious to get Python (i.e. Django) to talk with the JavaScript front-end in a real-time fashion.

- Meteor
Meteor, at first glance, seems to be a solid choice for quick real-time web-apps. It would, in particular, solve my issues with getting any Python framework to talk to the JavaScript front-end. However, when I want to get started with Meteor I am running into some (potential) problems:

ā€“> Meteor only supports MongoDB, which conflicts with my earlier choice to create a relational database. Would it be advisable to switch to MongoDB even though my data is of a relational-nature?

ā€“> I suspect it is an unfortunate time to be introduced to Meteor given the very recent release of Meteor 1.3 and the volatile discussion revolving the future of Blaze.

ā€“> I read some books and tutorials for Meteor 1.2 but actually getting started with Meteor 1.3 is, in my experience, very confusing for a newcomer at the moment (big changes and lack of updated resources).

ā€“>--> Maybe it is an option to learn Meteor 1.2 instead but that does not sound very future-proof.

- JavaScript front-end

Angular 1 vs. Angular 2. vs. React
Reading opinion-articles suggests that it is mainly a matter of preference between Angular 2 and React. The Python (Django) community seems to prefer Angular whereas the JavaScript (Meteor) community appears to prefer React. Are there any compelling reasons for one over the other in my use-case?

Meteor + (Angular or React) vs. Blaze
The development team of Meteor appears to flip-flop between recommending Blaze or React. While Blaze looks a lot easier to learn it appears to me that learning React is a more future-proof investment.

I would appreciate it tremendously if I could get some input from the Meteor community!

1 Like

Try meteor with with blaze first. Get well acquainted with various meteor features,build some apps,do some testing,bottom line know your way around meteor.

1 Like

Hey @TiesdeKok,

sounds like a cool project! :slight_smile:

About finding the ā€œrightā€ stack:
Wow, man I can totally relate to you. With so many options itā€™s so easy to feel overwhelmed.

There are projects somewhat similar to yours out there wich were built with meteor, so this should definitely be possible. Iā€™ll see if I can dig up their names and repos.

About the Database/Backend:
Itā€™s true, meteor is pretty tied to Mongo at this point. However if you take a look around on atmosphere, there are some packages for PostgreSQL support. I havenā€™t tried any of those and Iā€™m not sure if you get the full reactivity with them.

So this would be the first thing I would do. Just create a tiny app (with blaze) and see if you can connect it to your database.

If itā€™s absolutely not working, maybe thatā€™s already the reason for looking elsewhere.

About the Frontend in general:
Since css CAN also get quite messy Iā€™d say just rely on a solid Frontend Framework. Bootstrap is basically compatible with anything by now. And Semantic UI is quite enjoyable to work with in my opinion. Those would be two solid options.

About Blaze, React, Angular:
I think you can build anything you want with any of those view layers. React is getting a lot of attention at the moment and looks quite clever to me, but itā€™s still something that takes time to learn. I like it, but I still love Blaze for its simplicity. Plus there are also a lot of sweet extensions for it on atmosphere.

You will get different opinions on this, but Iā€™d say go with Blaze, since you said there isnā€™t too much time.

About the Tutorials out there:
Yes, thatā€™s definitely a problem. 1.3 is backwards compatible, so they should still work. But I would recommend that you just stick to the official Guide. Itā€™s probably THE best resource out there.

About how to approach this:
Finally Iā€™d say break the app down into smaller parts and implement them one by one. I think itā€™s just more fun that way,since you get something done on a more regular basis.
Oh and if youā€™re stuck, just ask here. Quite a lot of clever and super friendly people running around here :slight_smile:

Hope this could help a bit!

4 Likes

Meteor would be pretty good at all these things. Does it need to have a postgres database?

Hi @nilsdannemann, thank you for the super helpful answer! Good point on the back-end, that is something that I will for sure look into first.

I agree, breaking it up into smaller parts is a good way to keep it fun! Time to get coding coding. :smile:

1 Like

Sure no problem, happy to help!

Happy coding my friend :slight_smile:

If you are already a Python expert and already have a Postgres database, and want to get something working in the near future, I recommend you build upon that foundation. I have helped build a moderately large Django app in Python and the experience was very positive.

Django is a very mature, very capable web application framework. It sounds like your application needs are not particularly exotic, and that a small amount of JQuery will suffice for any client-side interaction. Thereā€™s no need to jump ship from what you already know.

If you stick with Python and Postgres, youā€™ve probably just saved yourself at least a couple of months of development time.

That said, Meteor totally cool, I really like it, and if you want invest a significant chunk of time experiencing the (very volatile) future of web application development, welcome to the club!

2 Likes

Other than Meteor, Django and Python are my favorites as well. I worked on a github project with Daniel Furtado of Sweden https://github.com/dfurtado/generator-djangospa to tie Django and Angular together. Itā€™s a Yeoman generator that gives you the boilerplate you need, including Django REST Framework.

I agree that trying to build a simple app with Meteor and Blaze is the way to go to get started. The simple-todos tutorial will give you a good foundation of Meteor 1.3.

1 Like

I also recommend checking out the Meteor Guide for more advanced tips.

1 Like