Hey everyone, I have a matrix chart drawn in HTML5/CSS 3 dominantly using CSS grid. I would like to add interactive features and am unsure about the best tool. My programming knowledge is limited to 2 semesters of Java in college, so I'd have to learn the language as I go. I am open to anything, but the selected languages would be useful in future projects.
Here are the features I am attempting to add to the site linked as my blog:
Assign over 120 attributes each to over 400 elements (probably in a DB)
Procedurally position elements in a matrix chart based on user-inputted filters (filtering and searching)
Procedurally position matrix elements based on attributes weighted by user-input
Change style of elements based on user input (highlighting)
Allow saving matrix chart states to be revisited or shared
Provide a user-friendly interface for users to submit the above input
Build several columns or matrices that are separate but related and seamless to the viewer
React is hands-down the tool I recommend to add interactivity to your matrix. Because it is Javascript, it will leverage a lot of the formatting from Java. Python would be very foreign to you. React shines in allowing you to use OOP principles within the JavaScript language and it is really powerful, fast and browser friendly.
PyCharm + Python + Flask + Jinja2 is enough to build web server/ajax and JavaScript + JQuery (maybe React). You can write small easy application but also extreme high scalable application.
I know Java but it need 4x time more code and code is not clear (too much forced use of @decorators) - too complex and takes more memory :)
Remember if you code in Python it is easy to code in Java but if you code in Java you must understand that Python is much more flexible and powerful - also easier to learn.
Thanks! Are you recommending PyCharm + Python + Flask + Jinja2 for the backend and JavaScript + JQuery for the frontend?
I was a little hesitant about Python for a app logic because my initial experience with Django was not great. I see Flask may be a better fit. Python is also a language I can apply to other projects better than Java.
Django is very old framework and little slow - if you want something modern faster try Jinja2. Django is not bad for ORM but Jinja2 is better for cloud or no SQL since more clear and faster - also more extensible with macros (Django is not bad still). If you know Django Jinja2 it is similar.
If you are goot at JAVA language, JHipster tool can generate pretty much all structures. Then, you can focus on backend logic and frontend implementation.
https://www.jhipster.tech/
If you choose Python,
Django is powerful framework but it have longer learning curve as it is big framework than Flask.
As Flask is microframework, very intuitive and easy to start, but you will need to configure manually some packages when your application grows.(e.g. flask-login for user features )
Yes, Pros and Cons
Python + Flask as backend is good option for you as @Cezary Wagner mentioned.
PyCharm is IDE tool, VS code can be alternative.
Jinja2 is popular template engine in python world. (https://en.wikipedia.org/wiki/Template_processor).
Not sure how big your data is for 120*400 matrix chart. According to data per page, this can be bottle neck of between your application and DB. Of course this will depend on how many users will access your app concurrently. Depends on your performance need, you might need to change some stack.
Aren't you comparing apples to "carts of apples"? Jinja is a templating library, while Django is a complete framework with its own ORM, routing, templating, config engine etc. Flask is a "microframework", it started out as an April fools joke, but caught traction pretty fast. Despite the appearance, Flask is not a "true microframework" though (it uses not-so-micro-sized libraries like werkzeug, jinja to do the actual heavy lifting... hence the joke) Flask was an answer to another quite popular microframework named "Bottle". Armin had wanted to add some features to Bottle, the maintainer refused, so he created "Flask".
I like Flask, but mostly for trivial, smallish projects. If you need more features then you're better off with Django and it's massive ecosystem. It's fun to roll your own solution for the first time, but it quickly gets boring. At the end of the day, developer productivity is the key.