IgnisDa / ryot

Roll your own tracker!
https://ryot.io
GNU General Public License v3.0
2.01k stars 55 forks source link

[FEATURE REQUEST] - Allow Ryot to track anything #73

Open IgnisDa opened 1 year ago

IgnisDa commented 1 year ago

The idea was from Reddit.

Ryot be extended to track other types of items. For example:

I (and many others) need a whisky tracker xD (desired/tasted/owned/planned bottles etc). Some people would want a cigar tracker. Ideally, there should be a YAML config that one could use to create a tracker for items they need; and a common shared database of such "userconfigs". Even better, one could provide external APIs in YAMLs for auto-fill.


I do not plan to work on this anytime soon since it would be a big undertaking, and I would like to finish the fitness tracking. But I am creating this issue to gather feedback.

spiral6 commented 1 year ago

This would be a great idea. I would find this one very useful for my uses.

filcuk commented 1 year ago

This would be great. Configurable fields (image/gallery, url, description, tags, coordinates) would be good, or just enough generic ones - is that what you meant by user configs?

One of the things I've been wanting to track for a long time is notable places visited. Add a galery, map link, tags (has bench, good for picnic), review (3/5 too overgrown), etc.

Tracking research papers, publications or website articles would be nice too.

IgnisDa commented 1 year ago

I plan to have a google forms like builder that will allow one to create tables, add image/url/text fields and so on.

Batman313v commented 1 year ago

Original post at #4

I would love to see some type of food/ snack/ grocery tracker with a "ratings" system so I could easily look of something up for when I don't remember if my girlfriend and/ or I like that flavor/ meal/ option. Would be nice

Suggestion

Food / Snack / Meal

These could either be combined or placed under something like

  • Food

    • Snack
    • Meal

Options

Some quick ideas of what it could include

  • Ratings

    • Add ratings with Stars and details to easily see what was thought after the last time it was eaten
  • Info

    • Add information for a "food item" like nutrition info, Calories (Maybe be implemented with fitness?)

    • Recipe

    • Steps in a check list

    • Ingredients

    • Upload Photos?

Story

I'm not big into food so there are most definitly things that could be added to this that I havn't thought of but I thought of the idea while standing in the store and after realizing they were out of my favorite flavor of an item I couldn't remeber which of the other options I didn't like as to avoid accidentally getting that one. So when I got home I jumped on reddit in search of a solution and came across ryot. While not a solution for the food problem I loved the Idea of an all in one tracker so here I am adding a suggestion to the list 😁

To add on to this I decided to come up with an example tracker.yaml for this use case. This is by no means what the final will probably look like as this example will more than likely be too specific for general use.

name: Snack Tracker
navigation:
  name: Food
  icon: mdi:food                        # This is for refrencing the 'food' icon in the Material Design Icons library similar to HASS
  - tab:
    name: Snacks
    config: snacks.yaml

snacks.yaml

# I'm assuming itemConfig wouldnt need to have everything defined for example 
# I would assume most if not all tracker items would have things like: 
# Title, Description, Image, Sub heading (Movies have the category - runtime - year) 
itemConfig:
# These would be used to create the tabs inside the item view and In this case I would assume there are 
# both generics like: input, markdown, api, etc. As well as more specific ones like review that would have 
# the logic pre-programed into it so it matches the rest of ryot.
  - overview                                # Markdown?
  - review                                  # Implement the same review system as the other trackers for consistency
  - input                                   # A generic Input thats tab gets named Comment
    name: Comment
# This is a very rough idea in my head. It would be nice to someone configure it so that the 
# JSON data could be displayed maybe using HTML, or Markdown or something.
  - api
    endpoint: https://api.example.com/foodstuff/snack?id=generic_chips

This would obviously need some type of add button to store custom items in a database of some type. Maybe Mongo? Or some other NOSQL DB?

IgnisDa commented 1 year ago

This looks pretty nice.

How would API integration work here?

This would obviously need some type of add button to store custom items in a database of some type. Maybe Mongo? Or some other NOSQL DB?

I think we can leverage JSON fields. No need to introduce an additional component. I want to keep Ryot as lean as possible.

Batman313v commented 1 year ago

How would API integration work here?

This is where things get a little fuzzy in my head. I'm trying to thing of some system that would allow users to basically display text from the respons JSON. For example if the response for the example snack api was

{
  "snack": {
    "name": "Chips"
    "calories": 125
    "sugar": "2mg"
    "flavor": "BBQ"
  }
}

Then the user could setup some type of config like:

- api
  endpoint: https://api.example.com/foodstuff/snack?id=generic_chips
  display:
    - "Flavor: {snack['flavor']}"
    - "Calories: {snack['calories']}"

I am not sure of the best way to use the variables inside the YAML but as an example I used { } inside the string. I don't think it needs to be super complicated. For Example it could look like:


Flavor: BBQ

Calories: 125




This would obviously need some type of add button to store custom items in a database of some type. Maybe Mongo? Or some other NOSQL DB?

I think we can leverage JSON fields. No need to introduce an additional component. I want to keep Ryot as lean as possible.

That would definitely be better. Thats sorta on the same line I was thinking with Mongo as it uses BSON (Basically JSON) for storage.

IgnisDa commented 1 year ago

Huh interesting. I like the idea but I think it would be pretty difficult to implement and get right.

IgnisDa commented 1 year ago

From @mmarquezs

Basically it would be cool if there was a way to like track anything, like a generic tracker. So you define what you track, of course there wouldn't be fancy posters if is media related, or whatever but it would be super flexible. Like if I want to track Idk all the bars I went to or whatever, like a free form of kinds for tracking stuff you have done, watched, visited, etc. main idea is that if the app doesn't support something, well a suggestion can be done as this but meanwhile anybody could track anything without waiting for the suggestion to be implemented, yeah it migh not sync automatically or have the nices look, or require some manual editing but it would work. And if the API allows it maybe can be automated.

fudnet commented 1 year ago

Agreed, would love to see the ability to track almost anything. Make hierarchical methods of tracking items. For example, magazines which have years/volumes, issues, etc. Have user definable fields/tags that allow for things like adding subjects, whether that issue is in the collection or not, has it been read, etc. Also, the ability to attach media to each item such as a photo or cover image.

DrMxrcy commented 1 year ago

Track Steam Games and Playtime

API Info https://steamapi.xpaw.me/ https://partner.steamgames.com/doc/webapi https://developer.valvesoftware.com/wiki/Steam_Web_API

API Endpoints Get Player Owned Games: https://api.steampowered.com/IPlayerService/GetOwnedGames/v1/ Get Game Playtime: https://api.steampowered.com/IPlayerService/GetSingleGamePlaytime/v1/ Get Recently Played Games: https://api.steampowered.com/IPlayerService/GetRecentlyPlayedGames/v1/

Ardakilic commented 1 year ago

How about travels / visits? People could mark cities of a country as visited, or even specific locations, such as district, or pinpoint locations etc. Multiple visits could also be tracked.

IgnisDa commented 1 year ago

Once this is implemented, you will be able to make custom schemas for tracking anything. So yeah travel locations is an excellent idea. I plan to create a separate repo for commonly used schemas.

TWART016 commented 10 months ago

How would API integration work here?

This is where things get a little fuzzy in my head. I'm trying to thing of some system that would allow users to basically display text from the respons JSON. For example if the response for the example snack api was

{
  "snack": {
    "name": "Chips"
    "calories": 125
    "sugar": "2mg"
    "flavor": "BBQ"
  }
}

Then the user could setup some type of config like:

- api
  endpoint: https://api.example.com/foodstuff/snack?id=generic_chips
  display:
    - "Flavor: {snack['flavor']}"
    - "Calories: {snack['calories']}"

I am not sure of the best way to use the variables inside the YAML but as an example I used { } inside the string. I don't think it needs to be super complicated. For Example it could look like:

Flavor: BBQ

Calories: 125

This would obviously need some type of add button to store custom items in a database of some type. Maybe Mongo? Or some other NOSQL DB?

I think we can leverage JSON fields. No need to introduce an additional component. I want to keep Ryot as lean as possible.

That would definitely be better. Thats sorta on the same line I was thinking with Mongo as it uses BSON (Basically JSON) for storage.

Maybe look at Tandoor Recipe. https://github.com/TandoorRecipes/recipes

There is a project about importing foods and there values https://github.com/TandoorRecipes/open-tandoor-data

dpkonofa commented 10 months ago

I would also like to see this but even just for the things that RYOT can already track. For example, I am keeping track of movies through RYOT but want to be able to tag movies with custom tags or info - such as whether I own it digitally or physically on disc. If I own it physically on disc, I want to be able to tag or tell RYOT somewhere whether the disc is a steelbook, a normal disc, a 4k disc, a criterion version, etc. From what I can see in the demo instance, I can create collections for each of these but then there's no way to see what collections a movie is part of in the movie's details. Being able to extend or modify the item templates is really what I'm looking for and that seems like it would also be extensible to being able to track anything.

IgnisDa commented 10 months ago

such as whether I own it digitally or physically on disc

There is a "Mark as owned" button under "More actions" in the actions tab.

Not sure why the collections are not showing up in the media details. I think you should open another issue for that.

dpkonofa commented 10 months ago

such as whether I own it digitally or physically on disc

There is a "Mark as owned" button under "More actions" in the actions tab.

I think you misunderstood me. I want to keep track of the distinction of whether I own it physically or digitally, not just whether I own it. And the collections thing was a workaround that I was using to not being able to add tags based on that ownership. As I mentioned, I would like to be able to specify what edition or variant a movie is as those would be different depending on whether it’s a physical or digital release. Right now, RYOT has no way to do that that I can see.

IgnisDa commented 10 months ago

I agree. Can you open a separate issue for this so that we can discuss this better?

lapius commented 6 months ago

Is this moving somewhere?

IgnisDa commented 6 months ago

It was moved to a discussion.

IgnisDa commented 4 months ago

From a Discord conversation:

i would say if you are planning on tracking everything with Ryot, then tracking my kids time would also be nice to have.. like time spent on youtube, tiktok, playing games, been able to see all that would be nice