Aug 7, 2020
Let's start with the database. First, in my experience, there are few applications where choosing a document database (NoSQL) over a relational database (SQL) is advantageous. While document databases are conceptually very straight forward, I find the tradeoffs down the road are simply not worth it (I wont get into all the details here, but please do some research on the downsides of NoSQL databases). If your data storage needs were exceedingly simple, I might reach for something from the Google Firebase suite, Realtime Database or Cloud Firestore; but I find even simple storage needs tend to expand and grow over time as your application matures. Postgresql is an excellent choice, and an absolute powerhouse for a ton of applications. With the somewhat recent additions of hstore, json, and jsonb datatypes, the advantages of reaching for a pure document datastore melt away.
For the Chrome extension, I would probably favour going for something a bit more lightweight than React or Angular. I'm a huge fan of React, but it comes with a somewhat hefty download, so if it were me, I might reach for Vue instead on that one. React is better for bigger, more complex single-page applications, whereas Vue is probably a better fit for simpler applications which require a smaller set of components.
For the backend, I would pick something mature with a strong and active community. Flask is a nice choice, but I've felt a bit "on my own" when using it in terms of community/documentation. I've used Rails extensively, but the learning curve is a bit of a headache; the time you'll save using Rails is very much down-the-road rather than immediate. If you're comfortable already with Javascript, then node + express is probably your best bet.
But, let me change my tune a little bit. You mentioned that this is a school project. In light of that fact I suggest you gravitate towards languages and frameworks that will help grow your career. Making smart choices based on the requirements of the task at hand is always prudent, but in this case I think it may be more valuable to gain some experience with some of the current "industry standard" stacks. Ask yourself what you can build a career on, and dabble in some of those areas until you find something that clicks for you. So, here are my revised answers, with options for each category ranked in order of preference
- Database: PostgreSQL, MySQL
- Backend: Node/Express, Rails, Django, Spring
- Frontend: React, Angular, Vue