ARSFI / winlink-mail-client

Open source email client program for the winlink radio email system
Apache License 2.0
14 stars 1 forks source link

Web framework selection #13

Open tmiw opened 1 year ago

tmiw commented 1 year ago

Now that we're going with Python for the language, we need to figure out the web framework(s) to use. Per the wiki, we currently have the following as possible ideas:

Angular may be a good choice for UI development Backbone.js is another

We should also choose something that will integrate well with the Python backend. For example, Flask + Angular seem to be a common combination, but there could be others that are better for the project's use.

tmiw commented 1 year ago

BTW https://fastapi.tiangolo.com/ may be another option for the Python side.

rupertdev commented 1 year ago

Hey y'all, python full stack dev here, maybe I can help.

A couple initial thoughts:

  1. Angular isn't used much these days, but that doesn't mean that it is a bad choice. If simplicity is what you're after (which I usually am, as I'm no expert in front-end development), I'd suggest something like Svelte and it's UI kit, svelte-kit. I've used React and Vue in the past, and those can work as well, but can get a bit more complicated.

  2. For the web server itself, Flask or Django are the standard choices in Python. Django is nice for added utility, but Flask is the easiest to work with for relatively simple projects, as I would imagine this would be. If the messages are being stored in a database, something like Alembic, SQLAlchemy, and Flask would be my recommendation.

  3. Are there any design documents or plans for the UI? I'd be happy to try hacking a simple prototype with Flask and Svelte.

73, KY4QX

tmiw commented 1 year ago
  1. Angular isn't used much these days, but that doesn't mean that it is a bad choice. If simplicity is what you're after (which I usually am, as I'm no expert in front-end development), I'd suggest something like Svelte and it's UI kit, svelte-kit. I've used React and Vue in the past, and those can work as well, but can get a bit more complicated.

I just took a brief look at Svelte and it might be a reasonable option as well. Thanks for the pointer!

  1. For the web server itself, Flask or Django are the standard choices in Python. Django is nice for added utility, but Flask is the easiest to work with for relatively simple projects, as I would imagine this would be. If the messages are being stored in a database, something like Alembic, SQLAlchemy, and Flask would be my recommendation.

Yeah, I'm leaning towards Flask myself. I've used Django in the past but it might be pretty overkill for what'll effectively be an application installed on a user's machine that uses a browser for the UI.

  1. Are there any design documents or plans for the UI? I'd be happy to try hacking a simple prototype with Flask and Svelte.

Not yet, but we're envisioning something similar to a regular email client. Some of the ideas so far are in the wiki. If you're up for it, we'd definitely like to see a simple prototype to help push forward planning and development :)