Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Feature Request] Add GUI (desktop program, web app, ...) #24

Open
scientes opened this issue Mar 6, 2021 · 8 comments
Open

[Feature Request] Add GUI (desktop program, web app, ...) #24

scientes opened this issue Mar 6, 2021 · 8 comments
Labels
gui help wanted Extra attention is needed

Comments

@scientes
Copy link
Contributor

scientes commented Mar 6, 2021

To make this programm accessible to a wider audience it should be considered making it usable for people who do not know how to use python/ a terminal. Maybe a simple gui/ local webpage or something like that. And or even compilation into an executable for windows.

Note that this is not a that important feature Request, but more an idea for people who want to contribute.

@scientes scientes changed the title [Feature Request] Better usability: [Feature Request] Better usability Mar 6, 2021
@provinzio provinzio added the gui label Mar 7, 2021
@wearymanateevedaknotstabooresisting
Copy link
Contributor

I created myself a web-based GUI for another tax calculation algorithm below, before I joined this project development.

So there are different options, while we should aim to support as much operating systems as possible (Linux, MacOS, Windows). In my opinion, the easiest way to achieve this is a web-based GUI. Django and its templates to trigger the basic features of CoinTaxman could be a good way to start. I am open for different suggestions!

@provinzio
Copy link
Owner

provinzio commented Mar 7, 2021

In my professional environment, I mainly work with native GUIs (mostly PySide2, python port of Qt). This makes me a little biased towards this kind of GUIs. Using Qt might be a slight overkill. Therefore I would suggest something like PySimpleGUI in combination with PyInstaller (might be unsupported in the future, we could checkout cx_Freeze if that worries us).

But to be honest, I don't mind providing CoinTaxman with a web gui if we you think that's smarter. (We might be able to refactor a lot of code from your project @wearymanateevedaknotstabooresisting.)

@wearymanateevedaknotstabooresisting
Copy link
Contributor

wearymanateevedaknotstabooresisting commented Mar 7, 2021

Honestly, we don't do it for us, the tech savvy people who can start the program from command line. If we want to support the average user, and I think this may be a wise idea, we should aim for anything that works on as much machines with lowest effort as possible. So, if a standalone GUI is easy to install and works, that's fine - also the web GUI is fine if the web server opens with a click, I don't know if this is actually harder to ship, though.

In summary, the first valid concept which fulfills the easy-to-install, easy-to-use, easy-to-develop requirements should be the go-to solution.

@scientes
Copy link
Contributor Author

scientes commented Mar 7, 2021

Web gui would be nice because that would be increadibly easy to make interactive plots using stuff like bokeh. And making a Desktop GUI from that using electron should be possible if needed.

But personally I do not have enough experience with normal guis vs electron to tell how complicated that is.

Also with web projects I like using Fastapi because 1.) its quite a lot faster than django (and faster than flask the other popular microframework), but that should not be a concern in this project because we only provide for a single user and 2) it a more streamlined microframework ,but it still supports templating via jinja. And i personally do not like the large frameworks because they often come with much bloat and overhead when coding and take a lot of time to learn. I know that there are use cases where Django is a fantastic solution but I do not see the reason to use a big framework for simpler stuff.

@wearymanateevedaknotstabooresisting
Copy link
Contributor

wearymanateevedaknotstabooresisting commented Mar 7, 2021

I actually tried Django with Electron and it was PITA. Can't recommend those two together. However, I know that Electron is a great way to publish nice cross-OS GUIs through easy web development.

FastAPI sounds like a great backbone to easily interface the current modules without much re-writing, I guess. Django might really be an overkill, since it also comes with native database models.

@shredEngineer
Copy link
Contributor

shredEngineer commented Mar 15, 2021

Having a GUI is a great idea. I find PyQt5 quite easy to use, mature, and it works without problems in Linux and Windows (& Mac I guess). Here's a very simple example (< 100 LOC) I recently created for a friend, so you can see what it looks like:

https://gist.github.com/shredEngineer/693f6f992626fc0706f19344e257c5fb

I already created a large project using PyQt5 and arranged all widgets by hand, but theres also QtDesigner to make things really simple.

FastAPI is nice and all that, but I think a plain and simple GUI would be best. Don't know about the other suggestions. But if the user can't start a Python program, wouldn't he most likely also be unable to start some web service? ^^

@provinzio provinzio added the help wanted Extra attention is needed label Mar 18, 2021
@scientes
Copy link
Contributor Author

scientes commented Apr 20, 2021

why not both^^ (semi serious)

it could maybe be switched on and off via a config file or be different projects wich just use Cointaxman as a module which they import. The only necessity in this project is that we restructure it so that: it is possible to use this as a module and not just as a script. I myself would just like to chug this thing onto a webserver so that i can use this from multiple Computers.

Bit offtopic but could be helpful for that (maybe worth a new issue each):

  • also it would be nice if we switch to something like sqlalchemy or encode/orm (sqlalchemy but asynchronus), just to open possibilites (i'd rather not do parrallelization on sqlite, possible via WAL but not the nicest thing on the earth)
  • A single database would be nice not one per exchange, could be handled via prefixes (would be needed for sqlalchemy)
  • and things like evaluate_taxation() could be made into an endpoint so that i could call it for every coin individually (this would be one of the CPU bottlenecks if we are dealing with a large amount of transactions so it would be nice to be able to parallelize on a per coin basis) i mean i could just call __evaluate_taxation() but that would be not the cleanest thing in my mind
  • A Way to cache tax calculation. It would be nice for a responsive ui that i do not have to calculate this for all data again, if nothing has changed and i only want to append new data. This would be especially nice if you have a few years of transactions and only want to add data for a month or two or so

@jhoogstraat
Copy link
Contributor

Maybe Flutter can provide a reasonable web and desktop app (or even mobile for that matter). It could call python via a ffi.

@provinzio provinzio changed the title [Feature Request] Better usability [Feature Request] Add GUI (desktop program, web app, ...) Apr 8, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
gui help wanted Extra attention is needed
Projects
None yet
Development

No branches or pull requests

5 participants