Skip to content

A Flask application that displays up to date information with use of MYSQL and create, update, read and delete (CRUD) functionality based upon the Atlas system in the popular video game Path of Exile.

Notifications You must be signed in to change notification settings

Dwalker0357/Atlas-Companion

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

48 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation



https://trello.com/b/nbbi3EbD/path-of-exile-atlas-app

Atlas Companion was a passion project created that uses python3-flask, jinja2's templating and mysql databases. Its goal was to deliver current updated information about the world map of the video game; path of exile, commonly referred to as the atlas of worlds or atlas for short.


The initial goals of the app were the following:

• Create an image-mapped multi hyperlinked home page that linked to each corresponding page.
• Create a dedicated information webpage for each of the 8 regions of the atlas plus one extra for the uncharted realms.
• Add a region skill tree image to each region page that opens a new webpage when prompted for a bigger clearer view of the information
• Display the relevant information on each region webpage including but not limited to maps, atlas base types and divination cards

• The ability to create, display, update and delete (CRUD) map entries using the created relational mysql database
• The ability to CRUD divination card entry’s to the relevant assigned maps
• The ability to CRUD filtered tables of each divination card and what maps it is assigned to
• A search bar located on the home page to quickly navigate to the information you are looking for


My database would consist of five tables seen below in my ERD diagram:





As seen above we have a separate table to allocate our many to many to relationships between divination cards and maps. To query all the divination cards in a single map we use the following:


And for the reverse for what maps contain a single divination card:



My SQL database defined as db. Models and built using create.py:




Risk Assessment




Challenges faced and project evolution


My first challenge was creating my tables and implementing my relationships so I can query all the data I wanted. I initially had four tables but I soon realised the limitations of SQL, I had to create another table Cmap, so I could map as many divination cards to as many maps as I wanted using the corresponding foreign keys and as many to many relationships.

My Second challenge, and definitely my biggest, was trying to implement my pre-existing mysql database into my application, I tried on and off but mostly on for around three days to get it to work but it just refused to.

So I learned a very valuable lesson that it is almost always better to build your SQL tables using the flask db.models classes. In hindsight, it would have saved me a lot of time troubleshooting, time in which I could have used to add features to my application.

As a result of my issues during the development, I was unable to add all the features I planned to due to time restrictions, managing to only add the CRUD functionally of maps. Moving forward I will take more consideration when designing, creating, and integrating databases into my application and will always make sure to create them using flask where ever possible.

Completed Application showcase:


Interactive hyperlinked global region map



The Html code behide the image mapping and home page



My New Vastir Region page with implemented create form and filtered map display table



Expanded skill tree image that opens in a new tab



Video Demonstration of my application and all its features



Application Test Coverage Report using Flask Pytest



Application being deployed with jenkins via gunicorn




Conclusion


In conclusion, I think the knowledge I possessed during my first project in comparison to what I know now is night and day, If I were to face the same challenges that stunted my development I feel that would be able to overcome them in a fraction of the time.


It has been an excellent learning experience in project management, python/html programming and database management, I very much look forward in the future for continued development of flask based applications and continued support/redesign of this project as it was a passion project.

About

A Flask application that displays up to date information with use of MYSQL and create, update, read and delete (CRUD) functionality based upon the Atlas system in the popular video game Path of Exile.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published