This was the final 4 person group project for SOFT-161 (Software Engineering) during Spring 2025. The goal was to make a crypto tracker app using Python, Kivy, MySQL for backend and CoinGecko API for fetching data, as well as meeting a number of requirements.
Group members are as follows:
bchebefuh2: Bradley Chebefuhaalfieri4: Alijah Alfieritkingery2: Tristan KingeryNoah Croghan: Noah Croghan (me)
File Structure
main_app/main.pyPrimary GUI Applicationinstaller/database_installer.pyCreates tables and records in the databasehistorical_prices_app/main.pyCode for the Historical Price Viewer Appportfolio_tracker_app/main.pyCode for the Portfolio Tracker Apptest_crypto_app.pyUnit tests for the Crypto Database
- Main App: Includes the Login Screen, Switch User Screen, Help Screen, and Main Screen
- Portfolio Tracker App: Includes the New Cryptocurrency Screen, New Portfolio Screen, and Check Portfolio Screen
- Historical Prices App: Includes the Select Coin Screen and View History Screen
- There is a known issue with fetching OHLC data from CoinGecko that causes the View History Screen to stall or crash. This is due to the way
- No other known bugs at this time.
- App fully meets requirements.
-
Install Git.
- Set up your personal access token if you haven't already.
-
Clone the repository with:
git clone git@github.com:noahcroghan/soft161_milestone_2.gitorgit clone https://github.com/noahcroghan/soft161_milestone_2.git- Provide the personal access token when asked for a username/password
-
Change into the cloned directory with
cd soft161_milestone_2or import the directory into your IDE -
Install and use Python 3.12, do so in a virtual environment if necessary.
- Newer or older versions of Python are not guaranteed to work
-
Install package dependencies with
pip install pycoingecko mplfinance matplotlib sqlalchemy kivy- You can alternatively install these in your IDE
-
Install MySQL Server Community Edition.
-
Make a file in the project root directory called
config.pywith the following contents:
username = 'root' # Change username if applicable
port = 3306 # Change port if applicable
password = "" # Enter MySQL server password between quotes or leave blank- Enter a MySQL shell, typically by running
mysqlfrom a terminal.- If the command isn't found, ensure MySQL is added to your system PATH variable or use the terminal included with your MySQL installation
- In the MySQL shell, run the following commands (only need to run these on the first installation).
DROP DATABASE IF EXISTS crypto;CREATE DATABASE crypto;
- Run the installer with
python -m installer.database_installer.- (replace
pythonwithpython3if necessary) - This will populate the database. You can verify it worked with the following commands:
USE crypto;(Will select the database)SELECT * FROM cryptocurrencies;(Will get all cryptocurrency coins in the database)
- (replace
- Run the main application from the root directory with
python -m main_app.mainin a terminal or from your IDE.