{"id":21195458,"url":"https://github.com/fazziclay/opentoday","last_synced_at":"2025-08-08T02:18:51.130Z","repository":{"id":53832479,"uuid":"505136402","full_name":"FazziCLAY/OpenToday","owner":"FazziCLAY","description":"Android application for the organization of life","archived":false,"fork":false,"pushed_at":"2025-03-06T18:43:49.000Z","size":12565,"stargazers_count":50,"open_issues_count":6,"forks_count":8,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-07-20T21:40:01.826Z","etag":null,"topics":["android","android-reminder","f-droid","gnugpl","izzyondroid","life","lifestyle","mobile","notification","planner","planner-app","reminder","reminder-application","reminders","to-do","todo","todo-android","todo-list","todolist-application"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/FazziCLAY.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"docs/CONTRIBUTING.md","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,"zenodo":null}},"created_at":"2022-06-19T14:43:14.000Z","updated_at":"2025-04-18T03:50:45.000Z","dependencies_parsed_at":"2023-09-21T22:05:18.795Z","dependency_job_id":"c7197f70-03d7-46cb-a0d6-be51056c0e4d","html_url":"https://github.com/FazziCLAY/OpenToday","commit_stats":{"total_commits":1141,"total_committers":1,"mean_commits":1141.0,"dds":0.0,"last_synced_commit":"22c6c6abda13eec0486354894ec7f019b9098087"},"previous_names":["betterbrainmemory/opentoday","fazziclay/opentoday"],"tags_count":40,"template":false,"template_full_name":null,"purl":"pkg:github/FazziCLAY/OpenToday","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FazziCLAY%2FOpenToday","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FazziCLAY%2FOpenToday/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FazziCLAY%2FOpenToday/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FazziCLAY%2FOpenToday/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/FazziCLAY","download_url":"https://codeload.github.com/FazziCLAY/OpenToday/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FazziCLAY%2FOpenToday/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":269352014,"owners_count":24402703,"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","status":"online","status_checked_at":"2025-08-08T02:00:09.200Z","response_time":72,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["android","android-reminder","f-droid","gnugpl","izzyondroid","life","lifestyle","mobile","notification","planner","planner-app","reminder","reminder-application","reminders","to-do","todo","todo-android","todo-list","todolist-application"],"created_at":"2024-11-20T19:28:20.558Z","updated_at":"2025-08-08T02:18:51.110Z","avatar_url":"https://github.com/FazziCLAY.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Public archive\n\u003e **This project is no longer in development.**\n\n.\n\n.\n\n.\n\nUse Obsidian\n\nNo, seriously, it's handy and I use it myself.\n.\n\n.\n\n.                        \n## Stargazers over time\n[![Stargazers over time](https://starchart.cc/FazziCLAY/OpenToday.svg?variant=light)](https://starchart.cc/FazziCLAY/OpenToday)\n\n. \n                   \n.\n\n.\n\n.\n\n\n\n\n# OpenToday\nLanguage: **[English | [Русский](https://github.com/FazziCLAY/OpenToday/blob/main/docs/README_RU.md)]**\n\nAndroid application for the organization of life, pro notes and reminder.\n\n[![license](https://img.shields.io/github/license/fazziclay/opentoday?color=%2300bb00\u0026style=plastic)](https://github.com/FazziCLAY/OpenToday/blob/main/LICENSE)\n\n\n[![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/fazziclay/opentoday?style=plastic)](https://github.com/FazziCLAY/OpenToday/releases)\n[![IzzyOnDroid](https://img.shields.io/endpoint?style=plastic\u0026color=%2300bb00\u0026url=https://apt.izzysoft.de/fdroid/api/v1/shield/com.fazziclay.opentoday)](https://apt.izzysoft.de/fdroid/index/apk/com.fazziclay.opentoday)\n\n# Using\nEach tile in the app is called an Item.\nThere are different types of Items, some inherit others, adding new functionality. So for example, the 'Daily checkmark' is inherited from the 'Checkmark' item.\n* **Text** - use it for simple text notes\n* **CheckBox** - in connection with *Group*, use it as a grocery list to the store or a to-do list for today\n* **Group** - there are no restrictions in depth! Create your own hierarchy of storing items\n* **Filter Group** - use it to indicate current birthdays, tasks for today, various schedules (for example, school) or something more, up to the second (very useful thing)\n\n**and others...**\n\n# Screenshots\n**Even more ideas for use can come to your mind after viewing the screenshots**\n\n| ![1](https://raw.githubusercontent.com/FazziCLAY/OpenToday/main/fastlane/metadata/android/en-US/images/phoneScreenshots/01.jpg) | ![2](https://raw.githubusercontent.com/FazziCLAY/OpenToday/main/fastlane/metadata/android/en-US/images/phoneScreenshots/02.jpg) | ![About app](https://raw.githubusercontent.com/FazziCLAY/OpenToday/main/fastlane/metadata/android/en-US/images/phoneScreenshots/03.jpg) | ![Calendar](https://raw.githubusercontent.com/FazziCLAY/OpenToday/main/fastlane/metadata/android/en-US/images/phoneScreenshots/04.jpg) |\n|:-----------------------------------------------------------------------------------------------------------:|:-----------------------------------------------------------------------------------------------------------:|:-------------------------------------------------------------------------------------------------------------------:|:------------------------------------------------------------------------------------------------------------------:|\n| ![1](https://raw.githubusercontent.com/FazziCLAY/OpenToday/main/fastlane/metadata/android/en-US/images/phoneScreenshots/05.jpg) | ![2](https://raw.githubusercontent.com/FazziCLAY/OpenToday/main/fastlane/metadata/android/en-US/images/phoneScreenshots/06.jpg) |                                                                                                                     |                                                                                                                    |\n\n## Toolbar\nToolbar is an important element of the interface. It is located at the bottom of the screen\n\nAbout important functions in brief:\n\n**Add item** - **Toolbar-\u003eItems** click (+) next to the desired item type.\n\n--\n\n**Move items** Swipe the desired item to the right, click the 'selected' checkbox, then open the desired location, open the 'selection' tab in the toolbar and select the desired action there\n\n--\n\n**Import/Export** Share your items with your friends, to export you have to click on the corresponding button in the 'selection' toolbar menu. All selected items are exported to the clipboard\n\nTo import, use the received text in the File tab in the toolbar\n\n--\n\n\n# Technical information\nCheck more documentation in \"/docs\" directory\n\n## Contribute\nI will be glad if you make a Pull Request with a new feature or bug fix.\n\nSee \"/docs/CONTRIBUTING.md\"\n\n## Kotlin or Java?\nI know Java well, and I'm just learning Kotlin.\n\nWhen developing, I act according to this logic:\n\nIf I write a Backend (working with items, etc.) then Java\n\nIf I write Frontend (GUI), then Kotlin is preferable\n\n## Items tree (pedigree)\n```css\nItem (implements Unique) - (minimal height, background color)\n|\n| Text - (text, text color)\n  |\n  | DebugTickCounter - (debug item...)\n  | LongText - (long text, long text color)\n  | Group (implements ContainerItem, ItemsStorage) - (items)\n  | FilterGroup (implements ContainerItem, ItemsStorage) - (items)\n  | CycleList (implements ContainerItem, ItemsStorage) - (items)\n  | Counter - (current value, step)\n  | MathGame - (primitive operations (+-*/))\n  | Checkbox - (is checked)\n     |\n     | DayRepeatableCheckbox - (start value for 'is checked' in Checkbox, latest regenerate date)\n```\n\n## Todo/Ideas:\n* [ ] Settings: ItemsStorage to add quick notes from the notification exactly there\n* [ ] Toolbar-\u003eSelection -\u003e SelectALL \u0026 ~~DeselectALL~~\n* [ ] Settings -\u003e minimize paddings (left, right, bottom, top)\n* [ ] Replace checkboxItem to text item \u0026 add 'modules' to item and add Module 'checkbox' (what?)\n\nMake a pull request -\u003e you will be added to contributors.json and also I will create the contributors screen in the application\n\n## Save\nData saved in **item_data.json**, and **item_data.gz** (bak file is stored in /data/data/item_data.gz.bak)\n\nSaving in other *Thread* (TabsManager.SaveThread)\n\nData loaded from **.gz**, if the error is from **.json**\n\n## Other files\n* **color_history.json** - color history for ColorPickerDialog's in ItemEditor\n* **instanceId** - UUID of your application instance. Used for sending crash reports anonymously (if telemetry enabled by user)\n* **version** - contains information about the version of the data in this folder in JSON format. The most important value is \"data_version\". It is used by new versions when updating to run DataFixer\n* **settings.json** - Contains the application settings\n\n## Import/Export\nStructure\n```js\n--OPENTODAY-IMPORT-START--\n\u003cversion\u003e\n\u003cdata\u003e\n--OPENTODAY-IMPORT-END--\n```\n\n* Version 0: \u003cdata\u003e is a regular json converted to base64\n* Version 1: \u003cdata\u003e is a json converted to base64 but previously passed through GZip compression\n* Version 2: \u003cdata\u003e is a json converted to base64 but previously passed through GZip compression (added permissions)\n* Version 3: \u003cdata\u003e is a json converted to base64 but previously passed through GZip compression (added \"dataVersion\" for fixes in new versions by DataFixer)\n\n\n## Tree of code (not full) (maybe outdated)\n```css\ncom.fazziclay.opentoday\n|\n| app - app logic\n  | App - main application class (used by AndroidManifest.xml)\n  |\n  | items\n  | |\n  | | item - (items)\n  | | |\n  | | | ItemsRegistry - contain all items (Item.class, \"Item\", EmportExportTool, howToCreateEmpty, howToCopy, R.string.itemDisplayName)\n  | | | Item - the father of all aitems (see items tree in README.md)\n  | | | TextItem\n  | | | CheckboxItem\n  | | | DayRepeatableCheckboxItem\n  | | | CounterItem\n  | | | GroupItem\n  | | | FilterGroupItem\n  | | | CycleList\n  | | | DebugTickCounterItem - item contain (int: counter) and add +1 every tick\n  | | | ItemController - controller on item (set when attach to itemsStorage)\n  | | | ItemsUtils - utils for item managment\n  | |\n  | | callback - (callbacks)\n  | | |\n  | |\n  | | notification - (item notifications)\n  | | |\n  | |\n  | | tab - (tabs)\n  | | | TabsManager - manager of items\n  | |\n  | | selection - ...\n  | | | SelectionManager\n  | | | Selection - selection of item (contain item and item itemsStorage)\n  | | \n  | | \n  | | CurrentItemStorage - item storage for one item (CycleListItem...)\n  | | ItemsStorage - items storage interface\n  | | SimpleItemsStorage - simple implementation of ItemsStorage\n  | | ImportWrapper - for import/export\n  | \n  | datafixer\n  | | DataFixer - it is launched at the very beginning of the app to correct the data of the old version (if the application has been updated)\n  |             used 'version' file in '.../Android/data/\u003c...\u003e/files/'\n  | SettingsManager - manager of application settings (use in ui...SettingsFragment)\n  |             used 'settings.json' file\n  | UpdateChecker - checking for app updates\n                use api in 'https://fazziclay.github.io/api/project_3/...'\n                cached result if update not-available for '...cache/latest_update_check' (file contain unix MILLISeconds)\n| gui - ui logic\n  | activity\n  | |\n  | | MainActivity - (see UI tree in README.md)\n  |\n  | UI - ui utils\n  |\n| util - there are many different utilities...\n| (the rest is for convenience and it doesn't matter)\n```\n\n# UI Tree\n```css\n| MainActivity - mainActivity (current date of top, notifications)\n| |\n| | MainRootFragment - container of fragments, ItemsTabIncludeFragment by default\n| | |\n| | | ItemsTabIncludeFragment - (contain Toolbar, Tabs+ViewPager2: ItemsEditorRootFragment)\n| | | |\n| | | | ItemsEditorRootFragment - Root for ItemsStorage tree\n| | | | |\n| | | | | ItemsEditorFragment - Contain ItemsStorage drawer\n| | | | | | ItemTextEditorFragment - comfortable editor for text \u0026 text formatting\n| | |\n| | | AboutFragment - about this app\n| | | | ChangelogFragment - CHANGELOG file viewer\n| | | SettingsFragment - settings of app (see app.settings.SettingsManager)\n| | | ImportFragment - import from text\n| | | DeleteItemsFragment - delete items (calls delete() for all provided items)\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffazziclay%2Fopentoday","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffazziclay%2Fopentoday","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffazziclay%2Fopentoday/lists"}