Wildest Dreams — Decky, pt. 1

Magic: The Gathering is a collectible card game that is played by thousands of people all over the world. One of the most fun and important aspects of the game is building and sharing your own decks with the world. As a result, a staggering array of online deckbuilding tools for Magic have sprung up in recent years. As an avid player and collector of Magic cards, I found each of these applications to have their own limitations and decided to design and build my own take on the idea. After a year and change of design, development, blood, sweat, and coffee, Decky has come a long way.

With that still on the stack…

Because Decky was (and still is) a personal project I wanted to try to expand my knowledge, especially in the realm of web development. I knew I wanted to further develop my knowledge of languages like Python and Javascript and technologies like SQLite. I opted to use Python Flask to build Decky because this was my first time developing for the web with Python. On top of this I used a Python implementation of Libsass to make development easier on me.

I used the built-in SQLite implementation that came with it for my database, which would hold all of the thousands of Magic cards in existence along with all of Decky’s users and their collections and decks. Still, this is a fairly small amount of data in the grand scheme of things so I was fine using something lightweight.

Now I just needed the card data to fill my database with. For this I turned to MTG JSON, a great service that posts public JSON data of every Magic card in every set as it is released. I wrote a series of Python scripts that imported the JSON, formatted it properly for Decky, and inserted it into my new database.

I borrowed various Magic iconography from Keyrune and Mana-cost and simply pointed to the official Magic card search engine (temporarily) for card images.

Path of Exile

Getting my application set up, formatting cards correctly, and then displaying them all in the browser was frankly a significant undertaking for me as someone who doesn’t often dip his toes into the worlds outside front-end development and design. This was, however, only the beginning.

My next few posts will elaborate on the Decky design process from deciding how the deck builder should work to ensuring that the application was accessible for the colorblind and everything in between. Before I sign off, I want to thank Dani Chesebrough, without whom I wouldn’t have even gotten off the ground with this thing over a year ago. Also I’d like to thank the many friends and family members who have offered their valuable feedback on Decky.

The second article in this series is now available here and goes into the ins and outs of animation as it is used in Decky.