Giter Club home page Giter Club logo

quest-log's Introduction

Quest Log Readme

The vision behind this project is a desire to apply what I know about productivity, goal setting, and time management to an app made for gamers, by a gamer by combining all of that with game theory concepts to help make real life achievement just a little more engaging and familiar.

Basically, I wish to help my fellow gamers win at life the way they win at the games they love, and build an IRL legacy.

And yes, help myself in the same way.

The ultimate vision

If the app I have in my head, matched the one deployed, it would be significantly more robust. The short version is that I want the app to be an instrument of immense focus, ease of use in tracking goals and habits, and to have a detailed history for someone to go back through and see all they've accomplished. In rough order, the things I'd like to add are:

  1. a habit/routine tracking system that allows users to keep track of things like savings goals, daily step count, number of sales calls, and the like
  2. timed and recurring tasks that propagate on the dashboard when appropriate
  3. much more detailed profiles that track things like values, motivations, skills, and lots more, which tasks, habits, and routines can be mapped to for exp growth
  4. a daily guided planning session to help pare down concerns and focus on what's highest priority and most reasonable to finish that day/week/month/year
  5. an education platform for both self-mastery/discovery and improving productivity; I've also thought about this as one possible avenue for monetization
  6. a blog system and calendar, so someone can go back through their history and sees thoughts, wins, progress, etc. I want this to offer both: useful insights, and inspiration.
  7. integration with one or several online retail platforms, for users to implement automatic rewards for themselves when they achieve major goals. ie: once a certain weight-loss goal is achieved, the system can order/ship a specific outfit that was pre-chosen and paid for

This is the relatively simple version, and yes, I'm almost certainly in over my exceptionally large head. One must dream.

As of 08-19-2024

In its current state, Quest Log is deployed and useable, but does little more than act as a to-do list with a small exp reward on your profile, for completing tasks.

Most of the work done up to this point has been trying to make the code clean and modular, and make future iterations more natural.

There has also been some considerable work done to the design itself, but I must admit this is my singular weakest ability when it comes to web development and I am seriously considering hiring someone to help with a proper UI design.

It's possible to use on desktop or mobile right now, but due to browser bars, some controls may get cut-off on the mobile display. To accomodate for this, I've added a fullscreen button to the mobile menu.

This is the first time I've put anything of any substance in the README since starting this project. Going forward, I'll maintain a periodic log like this for updates, as they happen, but I'm not sure when I will work on this project next as working in Godot has captured vast majority of my programming attention, of late.

quest-log's People

Contributors

tspr0tege avatar

Watchers

 avatar

quest-log's Issues

Ideas for an advanced profile

  • Profile photo
  • "Mantra" or personal motto
  • Motivation: "What makes me feel alive/ what makes me really care about things?"
  • List of core values (to be pulled from educational software to be implemented later)
  • Roles or Areas of life (ie: Father, community member, church, academic, health, wealth). Major focus
  • D&D style alignment
  • stats or personality traits like strength, confidence, esteem, charism, intelligence, etc. (self-ranked)
    • Perhaps some quests or habits can contribute to leveling this attributes.
  • other personality feedback such as MBTI or the big 5
  • talents and skills (which will have their own tracked levels)
  • job title?
  • and...?

Check contribution against completion

When quests are completed and send their contribution values, it's possible for them to push the parent quest to 100% completion. In that case, there should be an alert, and the option to either complete the parent quest, or set completion of it to a less than 100% value.

Upgrade the UI

Give the current styling a redo in a "light mode" type of UI. Keep it simple, but more pleasant to look at.

Deploy to AWS

Containerize, if possible (create container from Ubuntu OS)

Advanced quest creation

Make the +Create (Advanced create) button create the new quest, then immediately open the editor.

User Profile (basic)

Basic profile should consist of:

  • Name
  • Level
  • Exp
  • Exp needed for next level

Future iterations will incorporate much more intracate info. The profile storage should be built to accomodate future expansion. Some ideas:

  • Profile photo
  • "Mantra" or personal motto
  • List of core values (to be pulled from educational software to be implemented later)
  • D&D style alignment
  • other personality feedback such as MBTI or the big 5
  • talents and skills (which will have their own tracked levels)
  • job title?
  • and...?

Refactor QuestEdit

  • Change the unique hooks into a single hook with a object value, and keys per each setting.
  • Create seperate functions to handle changes for each form input, and remove from inline declarations.

Make child->parent contributions more dynamic

At some point, I'd like to refactor the contribution methods to update every time a child task gains in progress. I think it'd be really cool to see that progress translate over to the larger quest right away. More encouraging that way. So the parent and child quests will have to have good communication between them, and something similar to a state variable on the parent that recognizes the total contribution from all sub-quests

Major quest completion celebration sounds

The ability for users to upload sound files that will play when they complete certain major quest lines.
For instance: completing the chosen major milestone will play the victory fanfare from Final Fantasy (assuming they uploaded the mp3).

Style controls for quest-list-items

Quest displays should differ, depending on where it's being rendered. Create a way to use properties and default props, to make appropriate adjustments.

Possible examples:

  • different border
  • toggle edit, complete, delete controls on/off
  • toggle display of sub-quests?

"Componentize" progress bar

Create a jsx for the progress bar, to replace the current instantiation of them. Should receive styling parameters.

Refactor project

Facing the issue of the design, the need for a refactor has become apparent, following implementation of proper planning steps.

  • #27
  • 2. Create final mobile and desktop designs
  • 3. Break-apart component into proper React-structured component/atoms etc.
  • 4. Use folder and css file structure, to organize
  • 5. Refactor data creation to allow use with less rigging (eliminate use of data-tree). Design with queries in mind

Organizing the creation steps:

Dashboard (priority 1):

  • Create task list

  • Create individual (expandable) task cards

  • Controls for clear, edit, and make priority

  • Create Priority Quest display

  • Title of main quest prominently displayed

  • "Complete" button should be focal point

  • Support information such as description, xp value, and related quest (where applicable).

  • Profile quickvew dropdown (secondary priority)

Lists (Priority 1):

  • 3dot menu in upper right corner of each note
  • can send to another list, delete, or send to quest
  • Lists creation screen (modal?)
  • Selection dropdown for different lists

Quest management: TBD

Profile:

  • Displayed alongside the Quest management screen
  • Full profile info displayed and editable
  • Progress for character, day, and week.

NOTE: Future consideration for a feature. Satisfying audio chime for completing a quest, and epic fanfare for level up.

Contribution progress bar visual

When viewing a quest in the focus tab, it would be cool to see the progress of the parent quest and then show a different color/flashing bad next to it, which represents the contribution of the task.

Example:
progress

Rebuild state on load

questList data will save and load, but pure JSON document loses the datatree prototype methods.

Need to change load procedure to rebuild state questList by recreating each quest, one at a time.

NOTE: nested objects cannot be saved as such in JSON. The objects will have to be saved in a linear array, with references for parent and child pointing to UUID values

  • Step 1: Build a temporary object with each key being the UUID of a quest, and it's value being the quest
  • Step 2: Identify quests with a parent of null and build a top-level array from them
  • Step 3: Iterate through new array, rebuilding child arrays, and assigning appropriate parent references
  • Step 4: setState of questList to new array

Refactor questList save

Saving the questList has to be done in a pure text format.

  • state.questList has to be flattened into a linear array where child and parent references are saved by their IDs
  • Flattened array is what is sent to localStorage

Fix save method

Save has a bug where it is altering the existing objects in state, in order to create the proper format for the JSON object. Refactor to create duplicate objects for saving in localStorage.

Refactor App Modal

Currently shouldCloseOnOverlayClick is hard coded in to true. This makes is possible for profile creation to be circumvented and create only quests, which would result in other side effects later on. Namely: quests will be lost.

Refactor so that chouldCloseOnOverlayClick is set in state, and accept it as an argument, with a default of true. Then change sendToModal for profile create, to send a false as the second parameter.

Collapsible sub-quests

Nested subquests in main-book view and quest-focus view should be collapsible via a +/- button on the quest display. Greyed out or non-existent if no sub quests are present.

Contribution calculators

I want to create several helper "calculators" for users to employ, for easy delegation of contribution values to children. Percentage tracking will likely need to go to a couple decimal places, and the calculators should take parameters such as total amount of contribution to be dispersed, and how to disperse it.

For instance:
All current children will contribute a total of 10% of the total work, or 10% of the total work left in the parent quest. Then, either disperse the contribution value evenly, or focus some specific portion on one particular task, then disperse the rest evenly.

I would like the calculators to also be available to new quests, and to be able to take into account the total pending contribution of all other existing children.

Data persistance

  • #19
  • JSON server for development of pseudo back-end
  • MongoDB implementation

Local storage, first, while app is still in development and data structures may be subject to change. This will prevent some possible issues when implementing a server database, as collections will have their structure already determined.

Local storage methods can be maintained as a way to offer a "guest" usage of the app.

Recalc child contributions

Later on in development (perhaps much later on) I want to create contribution redistribution among a given quests' children. Based on things like divide evenly, total contribution cap (50% of remainder), or whatever formulas may come up. In order to not have older quests be denied access when this rolls out (assuming there is a user base) a prototype function should be created in Quest.js that accepts a callback to perform whatever calculus.

Test Automation

Send through a git commit that will move this issue to the completed column

"Profile" Images for individual quests

Something that users can upload to a specific, important quest, that will act like a profile picture for that quest, giving them a visual of some kind of motivator. Maybe a picture of why they're doing it, a reward they'll give themselves upon completion, or a literal representation of the end goal (like a house they want to buy)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.