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:
- A computation server that āfillsā a PostgreSQL database (relation database).
- 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. 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:
- Advanced Python user, but little prior experience with web-developing in Python.
- Basic knowledge about HTML and CSS.
- 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!