Create Community Challenges on Opus
by jj
Software Development Journey Overview
Follow this step-by-step software development journey to see real progress updates, challenges overcome, and practical experience.
Progress Updates (4 total)
Update #1: Create Community Challenges on Opus
Community Challenges will bring the user base together and we'll get to see some unique Challenge/Goal types and solutions. Multiple solutions from different users will produce some creative results!
Challenges Overcome: Set up basic Goal Template structure, can fetch the newest challenge from API and display it.
Update #2: New Goals can be turned into templates
50% completeGot Goal Templates working. Basically this means each unique Metric, Milestone, Goal Name, and combination of each will have a unique id to identify it. This is a pretty big update, as it allows Challenges, Copying Goals, and seeing how many people are doing the exact same Goals across the site.
Check the image. We have different Goal Ids but same template ids. Meaning multiple Goals are started that are the exact same, and we can track it!
Challenges Overcome: Goal templates implemented and tested. Each milestone and metric individually gets a unique ID and then the combination of Goal Name, category, and unique metric/milestone combos create the template.
Obstacles Faced: It will be tough to retroactively add Goals into templates that already exist
Looking Back: Nulls are kind of weird to handle in Postgres. I was having a hard time getting a combination of Metric Name and Null Targets to be unique (they were creating new Metric Template IDs). I ended up having to use a placeholder value for NULLs.
Update #3: Template to Goal done!
70% completeI thought it would be difficult to add pre-populated values to New Goals. However, it proved to be straightforward. Now users just fill in their image, description, hashtags and the Goal is started!
Obstacles Faced: I'm going to have to add some additional logic that I hadn't thought of like populating a page with all Goals belonging to a Challenge that are being worked on, checking if a user has a Challenge in place, and logic to stop progress updates once the Challenge deadline runs out.
Looking Back: Just do it
Update #4: Challenge Round 1 Launch
100% completeEnd to end working challenge round. Need to do some clean up with notifications still.
Looking Back: It ended up being more straightforward than expected and ended up adding some important and well-structured architecture to the site