My First Programming Project: The Tarot App

atombabble Code and Eng DK30 Fall 2023 3 2

Description

The Tarot App aims to supply users with readings as well as a deciphering of cards pulled from a physical deck.

I dream of this returning a sort of ‘Tarot verbatim’ assessment of the cards, where users can give certain information and get hyper detailed explanations of the cards back. However, for DK30 I want a decent first version.

As such, the primary objective of this project is simply to program more. The secondary objective is to end up with something I am confident enough in to post publicly on GitHub.

Recent Updates

atombabble a year ago

Final Update!: I am very pleased with the first draft of the Tarot App. This is the first python project I have ever written completely on my own, and I am floored. Everything I wanted out of this project I got. I have a much clearer idea of where I want to take this app and am genuinely enjoying the work. Not only did I get the first version finished, but I also took a wild detour and decided to learn SQL (I realized I could have a bunch of dictionaries, or I could try out a database). Since I am a self-taught programmer I know I am missing a lot of foundational knowledge (folder directory organization, why my .exe doesn’t have images, if I should use a database or not etc.), but I am still quite pleased with this project and my progress!

That being said here is a quick breakdown/review of my project:

Objectives Complete:

  • write my first project
  • program more in general
  • create something reasonably well executed enough to commit to git (ie write something that doesn’t completely embarrass me, though idk is it embarrassing to write a tarot card app in the tech world? XD )
  • find gaps in my knowledge
  • push to gitHub (here https://github.com/bugSlayer88/FoolsJourney if anyone wants to see or hire me for baby programmer jobs)

Bonus Objectives:

  • work on my writing and tarot reading skills for the descriptions
  • learn about UI (boy howdy did I think UI was going to be simple… o.o)
  • learn SQL lol
  • discover I want to take this much further (and that I love programming I had so much fun writing this)
  • chance to reread some favorite tarot literature

Objectives I missed:

  • build a single window to work in
  • write meanings for each card position in the reading (past, present, obstacle etc - this is when instead of several dictionaries I think a database would be better. I also think I might want to look into language models for this.)
  • implement the ‘Get Summary’ button for each reading

Shoutout to Arachezy as my awesome accountabilibuddy, and my new, inspiring friend sd(staydynamic).

Below are a few quick screen-gifs of what it looks like:

atombabble a year ago

Okay so - I just got (Udemy) certified in SQL lol now I can move forward with this project… XD

atombabble a year ago

Quick update!: I am going through and adding error warnings, and tying up all loose ends. I also found a flaw in the foundational method which creates the deck D: So I am also dealing with that! I rewrote my Deck class (I thought I was making it simpler and in turn the program was noticeably faster but then I discovered a slight bug so I now have to revert).

Additionally, I have started taking some SQL classes online because I am realizing I want to have a database of the cards. I may have gotten slightly distracted but overall the project is on track to be completed.

QUick error pop up preview:

atombabble a year ago

I had initially hoped to add all functionality into one big UI window but as I took this on I found out I really do not have the skills to do this in a timely fashion. Instead I have moved on to refining what I do have working. I worked on updating my UI elements focusing on making all windows a little more uniform.

My next steps include - adding more spreads, maybe some more layout design and shifting my focus from ui to deciphering the cards in a more useful way.

atombabble a year ago

Going down the list of what is defined as Week 1 Goals: Capture base functionality - done Collect all pieces needed - done? (This is kind of hard to gage) Add favorite spreads - 85% done Finish base card description dictionary - 85% done

This past week’s work gets a solid A!

Below are a few recordings of where the project currently is.

Get Single Card Reading/ Decipher a Single Card:

Get Three Card Reading/ Decipher Three Cards:

Get a Celtic Cross Reading:

Decipher a Celtic Cross Reading:

There are a few outstanding points I’d like to cover but overall - it’s basically there for a first version.

atombabble a year ago

Also, I must make a point to learn about the Python/Pycharm profiler. There is significant lag after I launch the main window and when UI elements actually show up, you can see this most obviously in the first screen recording posted below.

atombabble a year ago

I promise I know what transparency is and how to export animation from after effects.

Below I decided to mess around with the potential animating of a card flip. I exported a very (very) simple animation of a card flip and attempted to set it up in my app.

Other than the obvious problems - I am currently running into some issues stemming from my lack of understanding of Qt and their documentation. I believe QMovie only plays gifs, for example. Regardless, now that I know I can indeed play a gif I opted to keep things simple for now and use a still image of the back of the card, see second video.

Much better. For now this is a fine substitute to the card flip animation. I think I can call this a mini win as I did indeed learn about QMovie vs QPixmap. Baby programming steps.

atombabble a year ago

Alright - first update; here is a quick screen recording of the very basic functionality of the app I am writing. I feel I have met the simple goal of just writing something that works. That being said, I am definitely getting hung up on the flow of user interactivity. I think I should start to explore other ways to layout this process. I am also kind of bummed that it’s super obvious this is my first programming project lol

Estimated Timeframe

Nov 14th - Dec 20th

Week 1 Goal

Basic First Version:

  • Capture base functionality
  • Collect all the pieces needed
  • Add favorite spreads
  • Finish base card description dictionary

Week 2 Goal

UI Week:

  • Is PyQt the best GUI Framework?
  • Bring in Tkinter?
  • Are all these pop-up windows the way to do this?
  • Sketch up different options for UI
  • What is MVC? Should I do MVC?

Week 3 Goal

Reassessment Week:

  • Course correct as needed

Week 4 Goal

Final To Do List:

  • Define what needs to happen to get project to a decent state

Tags

  • Tarot
  • Python
  • PyQt
  • Tarot Cards