{"id":22105512,"url":"https://github.com/upvalue/meditations","last_synced_at":"2025-04-15T23:01:08.854Z","repository":{"id":47574478,"uuid":"50402184","full_name":"upvalue/meditations","owner":"upvalue","description":"😌 A web-based todo list \u0026 journal based on the principles of habit formation","archived":false,"fork":false,"pushed_at":"2024-07-09T04:35:55.000Z","size":10850,"stargazers_count":66,"open_issues_count":0,"forks_count":5,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-04-10T15:45:29.056Z","etag":null,"topics":["go","graphql","hooks","productivity","react","redux","todo","typescript","web"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/upvalue.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-01-26T04:02:08.000Z","updated_at":"2024-07-09T04:35:58.000Z","dependencies_parsed_at":"2024-12-01T06:47:25.865Z","dependency_job_id":"bd5e4885-b439-4f1b-b827-265a3c19f3c2","html_url":"https://github.com/upvalue/meditations","commit_stats":{"total_commits":601,"total_committers":5,"mean_commits":120.2,"dds":0.4625623960066556,"last_synced_commit":"896fafafbf621c953bd8d1b5c313997ff4e102a0"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/upvalue%2Fmeditations","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/upvalue%2Fmeditations/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/upvalue%2Fmeditations/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/upvalue%2Fmeditations/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/upvalue","download_url":"https://codeload.github.com/upvalue/meditations/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249167445,"owners_count":21223506,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["go","graphql","hooks","productivity","react","redux","todo","typescript","web"],"created_at":"2024-12-01T06:47:18.159Z","updated_at":"2025-04-15T23:01:08.748Z","avatar_url":"https://github.com/upvalue.png","language":"TypeScript","readme":"\u003cp align=\"center\"\u003e\u003cimg src=\"assets/horizontal.png\" alt=\"meditations\" height=\"80px\"\u003e\u003c/p\u003e\n\n![Have a nice day badge](https://img.shields.io/badge/have%20a-nice%20day-0099dd.svg)\n\nmeditations is an application for tracking progress towards goals that builds on habit formation and long term\nthinking.\n\n## Note\n\nMeditation is under active development (12/28/19) but mostly in the `feature/ng` branch. This code is very old but has\nbeen hackily upgraded to modern React in order to fix bugs and add minor improvements.\n\n## Intro\n\nOriginally a Trello board, meditations simply keeps track of how often you complete tasks, and how much time you spend\non them (optionally). It's fairly minimalist compared to more complex time management systems, and leave the structure\nof your day entirely up to you. The goal of meditations is to get an objective, long-term view of how you are doing.\n\nIn addition, it has a note-taking application that supports tagging and organizing entries by named categories.\n\n![sample usage video](http://i.imgur.com/gmFSRK4.gif)\n\n# Manual\n\nFor information on how to use Meditations as well as some documentation of its architecture, see\n[the documentation](https://upvalue.github.io/meditations). Also available in your local install\nunder the `docs` directory.\n\n## Running from command line\n\n    $ go get github.com/upvalue/meditations\n    \nGo to your workspace's source.\n\n    $ go build\n    $ yarn\n\nRun the following command if you'd like to seed the application with some example data.\n\n    $ ./meditations seed 2018-02-22 # put in today's date\n\n    $ ./meditations serve --port 8080 --database sample.sqlite3 --migrate \n\n## Doc rewrite\n\nBelow is an initial rewrite of the docs, still under construction.\n\n## Philosophy and usage\n\nMeditations is based around the concept of using habit formation to accomplish long-term\nresults. Normally people think about things in terms of the goals they would like to achieve,\nsuch as \"I want to run a mile in under 5 minutes,\" and \"I want to write a novel.\"\n\nThe problem is that these goals require quite a bit of work, and it's easy to lose sight of\nthat or get discouraged when one is starting from scratch.\n\nThe idea of meditations is that you can break your day down into daily habits that will eventually\nresult in long-term progress towards these goals, logging relevant statistics and creating a positive\nfeedback loop. Meditations does this in a simple manner by tracking tasks based on their names.\n\nSo for example, if your goal is to become an accomplished runner, you might start a series of tasks\ncalled \"Run.\" You'd add a \"Run\" task for the current year, the current month, and then copy it over\nto the day each day you want to run. You'll note success or failure by clicking on the daily \"Run\"\ntask. When you start logging daily completions, meditations will track your overall completion rate\nas well as your completion streaks.\n\nThis is a very loose and non-prescriptive way of logging things, which is what I've found to work\nbest. It works well for establishing new habits as well as tracking existing progress. For example,\nif you generally stick to a diet, but have occasional \"cheat days,\" it's easy to get a sense of\nwhether you're going too far by glancing at the success percentage. If you stick to your diet 90%\nof the time, then you're probably going to be just fine. If it starts sliding below 85% or 80%,\nmaybe it's time to focus more on it. Want to exercise 3 days a week, and miss a day? No problem,\njust delete the task and add one for the next day. Figuring out your success criteria is entirely\nup to you -- meditations just handles the boring tracking part of it.\n\n## API\n\nMeditations has an API to enable external programs to interact with it. Examples of external\nprograms interacting with meditations might be:\n\n- A program that tracks internet usage and automatically adds a daily 'Internet' task with usage\n    time\n\n- A phone/smartwatch run tracking program that adds or updates a daily 'Exercise' task with a\n    comment reflecting run/location, statistics, and time spent\n\nFor API documentation, see `habits/model.ts` for type definitions and `habits/api.ts` for API\ndetails. Note that any non-GET API method (POST, PUT, PATCH, DELETE) will cause a UI update to be\nsent to all connected clients.\n\n### Consistent things\n\nAll dates have the internal format of YYYY-MM-DD or YYYY-MM-DDZHH:MM:SS.\n\nAll objects returned by meditations have a CreatedAt, UpdatedAt, and DeletedAt field. These are\nmanaged by the ORM. In the case of objects where dates are important, like tasks, the date is\ndetermined by an additional Date field. This is because tasks might be added in advance or logged\nafter the fact.\n\n### Tasks\n\nTasks are the main item of interest in meditations. Each task has the following fields:\n\n| Name   | Type   | Description                                             |\n|--------|--------|---------------------------------------------------------|\n| ID     | int    | Task ID                                                 |\n| Name   | string | Task name                                               |\n| Scope  | int    | Task scope (1 = day, 2 = month, 3 = year, 4+ = project) |\n| Status | int    | 0 = unset, 1 = success, 2 = failure                     |\n| Order  | int    | Order within scope                                      |\n\nTasks also have a one-to-one relationship with comments, which have the following fields\n\n```\nID: number\nTaskID: number\nBody: string (HTML)\n```\n\nNote that `Date` is the field that meditations uses to determine where a task should be.\nCreatedAt, UpdatedAt and DeletedAt are internal fields maintained by the ORM, and only DeletedAt\nwill effect the functionality of meditations (if it's set, the row will be ignored).\n\n### API Methods\n\n#### GET /tasks\n\nAccepts the following query string parameters: `scope`, `name`. You can pass `date` to get tasks\nfrom a specific date, or `from` and `to` to fetch a range of dates, inclusively.\n\n#### POST /tasks\n\nGiven a new task in JSON format, add a new task.\n\n#### PUT /tasks/:taskid:int\n\nUpdate an existing task. If given a comment, this will also add or update a comment as necessary.\n\n```json\n{\n    \"ID\": 4,\n    \"Name\": \"Exercise\",\n    \"Status\": 1,\n    \"Comment\": {\n        \"Body\": \"\u003cp\u003eran 3 miles\u003c/p\u003e\"\n    }\n}\n```\n\n#### DELETE /tasks/:taskid:int\n\nDelete a task by ID.\n\n## Dependencies\n\n- Go libraries: See Godeps/Godeps.json\n- JS libraries: See package.json\n- Programs: Pandoc (only necessary for exporting markdown/plaintext descriptions of progress)\n- Browser: Meditations relies on modern browser features like `fetch,` and does not include\npolyfills. It is developed against the latest version of Chrome, but should work on other\nevergreen browsers.\n\n## Attribution\n\nThe favicon.ico was used under public domain from [Tango](http://tango.freedesktop.org)\nThe logo at the top of the file was created by [@reallinfo](https://github.com/reallinfo). Thank you! :)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fupvalue%2Fmeditations","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fupvalue%2Fmeditations","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fupvalue%2Fmeditations/lists"}