Python Forum
How to desing an app for tracking workload
Thread Rating:
  • 3 Vote(s) - 2.67 Average
  • 1
  • 2
  • 3
  • 4
  • 5
How to desing an app for tracking workload
#1
Hi all, everyone keeps telling me the best way to learn Python is to start your own projects, so I wanted to create my own desktop app. I need help with designing it and choosing the best solutions/architecture though. Hope you can guide me a little!

Purpose: I need to have a GUI for users to input how much time they spend on different projects for department capacity calculations. Then, I will add additional view showing different charts for management.

Limitations: My users would be non-techies, so the app would have to be a simple GUI accessed via a stand-alone executable. Unfortunately, I won't have access to any good databases so I though I'll just save the data as dictionary and store it in JSON txt file on SharePoint or network drive (that probably sounds really lame :/ ). Here's how I envisioned the data structure would look like.

time_spent = {"Ann": {"October": {"Project X": "50", "Project Y": "20"},
                     "November": {"Project X": "40", "Project Y": "30"}},

              "Laura": {"October": {"Project X": "50", "Project Z": "10"},
	                   "November": {"Project X": "70", "Project Z": "20"}}}
Libraries: Matplotlib, PyQt5, json, PyInstaller - (Python 3.7)

Questions:
1. Do you think the data structure makes sense considering limitations in my workplace? Wouldn't it be inefficient for calculations (e.g. showing overall time for the Project Y in October would mean I have to scan for each nested dictionary)?
2. Any thoughts on what I should think about before I start to code?
3. Please let me know if I ask wrong questions!
Reply
#2
(Jan-08-2019, 08:58 AM)Cuz Wrote: I won't have access to any good databases
Look at sqlite - it's a full feature database and it store the info in a simple file that could reside on network drive/share point - in any case better than JSON in my opinion as will be easier to query and update info (e.g. to update json you will need to read the whole file, update it and dump it back agan). The best part - sqlite support is included in the python standard library.
If you can't explain it to a six year old, you don't understand it yourself, Albert Einstein
How to Ask Questions The Smart Way: link and another link
Create MCV example
Debug small programs

Reply
#3
That's exactly the kind of advice I was looking for! Briefly looked it up and from what I understand it's open-source, doesn't require any kind of installation or configuration from users, it can be moved easily, and can be used offline, is that right? Looks like a perfect solution for me.
Reply
#4
Yes, all that's true
And another bit of advise - think about the design of your application in advance. In any case there may/will be need to refactor code to improve it, but good design will make everything (i.e. development/testing/support/future updates) much more easier. For example - separate GUI and logic, build the system of small blocks that work together, etc. All this is part of the software design.
If you can't explain it to a six year old, you don't understand it yourself, Albert Einstein
How to Ask Questions The Smart Way: link and another link
Create MCV example
Debug small programs

Reply
#5
Once again, I'm in awe looking at how helpful is python community. ◕‿◕
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  motion tracking script ig? k4ne 0 476 Dec-13-2023, 02:00 AM
Last Post: k4ne
  satellite tracking module barryjo 1 1,413 Mar-01-2022, 03:23 AM
Last Post: Larz60+
  Full Body Tracking and Recognition with OpenCV principemestizo 0 1,438 Oct-18-2021, 04:47 PM
Last Post: principemestizo
  Tracking 2 biggest objects in OpenCV Nup 0 1,703 Nov-12-2019, 11:08 AM
Last Post: Nup
  ATM Tracking Issue Zsapp01 1 2,023 Jun-04-2019, 07:20 PM
Last Post: Yoriz
  Socket connection and thread tracking... MuntyScruntfundle 2 2,760 Oct-21-2018, 02:55 AM
Last Post: Skaperen

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020