After a year and change of design, development, blood, sweat, and coffee, Decky has come a long way.

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.

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.

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.

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.

Craving more? Check out my blog to see how I think.