Task (German)
This project was developed in Pycharm with the following external libraries:
ChronoTrain runs locally on the student's computers and uses a centralized SQLite3 database named training.db
,
which shall be provided on a network drive within the house of the customer PKN.
The project was created in a poetry
environment, and the linter I used is called Ruff.
Comprehensive logging functionality in multiple levels via the library logging
.
This code uses strong hashing, salting, Base64 encoding, and the bcrypt algorithm to securely store and check user passwords.
The project provided a great opportunity to learn about Graphical User Interfaces, PDF generation, and SQLite. The user interface is intuitive and restrictive, preventing users from making incorrect inputs.
Login & Add Users
The program generates a login screen that allows trainees to log in, provided they have an account.
An account can only be created using an identification number (ID) provided by the training company.
This code uses strong hashing, salting, Base64 encoding,
and the bcrypt algorithm to securely store and check user passwords.
Daily Reports & time recording
Once logged in, the trainee can submit daily reports, but only after a minimum of 50 characters have been entered.
However, the report submission window is only unlocked after the trainee has started the daily time recording using a
button. Time recording can be stopped by clicking another button, which only becomes clickable after a minimum of
50 characters have been entered into the report submission window.
Outputs of reports via PDF
In another tab, the user can select a period, after which a PDF is generated containing several data points,
including the daily report, the date the report was saved, the trainee's ID, and the start and end times of the
corresponding day. Now, the PDF is saved in the project's root folder, but a prompt for a save location
will be added.
The project was developed iteratively, beginning with the GUI design of the login screen, followed by the creation of the SQLite database, and concluding with the development of the report storage feature. Finally, fpdf was used to create a clear and concise output that presents the reports in a tabular format, with information about the trainee and the associated times.
- Pycharm
- ttkbootstrap
- tkinter
- fpdf
- SQLite
- Clone the repository
- Set up a virtual environment using poetry or any other package manager
- Install the required packages using the package manager
- Run the program using the following command: python main.py
- Enter the identification number (ID) provided by the training company to create an account.
- Once logged in, start the daily time recording using the appropriate button.
- Enter a report of at least 50 characters.
- Stop the daily time recording using the appropriate button.
- Select a period to generate a PDF containing the daily report, the date the report was saved, the trainee's ID, and the start and end times of the corresponding day.
- There is no time calculation implemented yet. The butttons check the beginning and end of users time, but do not calculate the difference.
- No date frame implemented by now. Therefore, you cannot choose a specific time frame for the PDF output. Users get all their corresponding reports.
PKN company trains employees frequently, so there is a need for a time tracking tool that allows users to create training certificates based on their already recorded times.
JIKU IT-Solutions GmbH in Stuttgart is an IT systems house
HUDDEIJ Softworks © 2023