MCPcopy Index your code
hub / github.com/FazziCLAY/OpenToday

github.com/FazziCLAY/OpenToday @main

Chat with this repo
repository ↗ · DeepWiki ↗ · + Follow
2,488 symbols 7,637 edges 235 files 77 documented · 3%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Public archive

This project is no longer in development.

.

.

.

Use Obsidian

No, seriously, it's handy and I use it myself. .

.

.

Stargazers over time

Stargazers over time

.

.

.

.

OpenToday

Language: [English | Русский]

Android application for the organization of life, pro notes and reminder.

license

GitHub release (latest SemVer) IzzyOnDroid

Using

Each tile in the app is called an Item. There are different types of Items, some inherit others, adding new functionality. So for example, the 'Daily checkmark' is inherited from the 'Checkmark' item. * Text - use it for simple text notes * CheckBox - in connection with Group, use it as a grocery list to the store or a to-do list for today * Group - there are no restrictions in depth! Create your own hierarchy of storing items * 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)

and others...

Screenshots

Even more ideas for use can come to your mind after viewing the screenshots

1 2 About app Calendar
1 2

Toolbar

Toolbar is an important element of the interface. It is located at the bottom of the screen

About important functions in brief:

Add item - Toolbar->Items click (+) next to the desired item type.

--

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

--

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

To import, use the received text in the File tab in the toolbar

--

Technical information

Check more documentation in "/docs" directory

Contribute

I will be glad if you make a Pull Request with a new feature or bug fix.

See "/docs/CONTRIBUTING.md"

Kotlin or Java?

I know Java well, and I'm just learning Kotlin.

When developing, I act according to this logic:

If I write a Backend (working with items, etc.) then Java

If I write Frontend (GUI), then Kotlin is preferable

Items tree (pedigree)

Item (implements Unique) - (minimal height, background color)
|
| Text - (text, text color)
  |
  | DebugTickCounter - (debug item...)
  | LongText - (long text, long text color)
  | Group (implements ContainerItem, ItemsStorage) - (items)
  | FilterGroup (implements ContainerItem, ItemsStorage) - (items)
  | CycleList (implements ContainerItem, ItemsStorage) - (items)
  | Counter - (current value, step)
  | MathGame - (primitive operations (+-*/))
  | Checkbox - (is checked)
     |
     | DayRepeatableCheckbox - (start value for 'is checked' in Checkbox, latest regenerate date)

Todo/Ideas:

  • [ ] Settings: ItemsStorage to add quick notes from the notification exactly there
  • [ ] Toolbar->Selection -> SelectALL & ~~DeselectALL~~
  • [ ] Settings -> minimize paddings (left, right, bottom, top)
  • [ ] Replace checkboxItem to text item & add 'modules' to item and add Module 'checkbox' (what?)

Make a pull request -> you will be added to contributors.json and also I will create the contributors screen in the application

Save

Data saved in item_data.json, and item_data.gz (bak file is stored in /data/data/item_data.gz.bak)

Saving in other Thread (TabsManager.SaveThread)

Data loaded from .gz, if the error is from .json

Other files

  • color_history.json - color history for ColorPickerDialog's in ItemEditor
  • instanceId - UUID of your application instance. Used for sending crash reports anonymously (if telemetry enabled by user)
  • 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
  • settings.json - Contains the application settings

Import/Export

Structure

--OPENTODAY-IMPORT-START--
<version>
<data>
--OPENTODAY-IMPORT-END--
  • Version 0: is a regular json converted to base64
  • Version 1: is a json converted to base64 but previously passed through GZip compression
  • Version 2: is a json converted to base64 but previously passed through GZip compression (added permissions)
  • Version 3: is a json converted to base64 but previously passed through GZip compression (added "dataVersion" for fixes in new versions by DataFixer)

Tree of code (not full) (maybe outdated)

com.fazziclay.opentoday
|
| app - app logic
  | App - main application class (used by AndroidManifest.xml)
  |
  | items
  | |
  | | item - (items)
  | | |
  | | | ItemsRegistry - contain all items (Item.class, "Item", EmportExportTool, howToCreateEmpty, howToCopy, R.string.itemDisplayName)
  | | | Item - the father of all aitems (see items tree in README.md)
  | | | TextItem
  | | | CheckboxItem
  | | | DayRepeatableCheckboxItem
  | | | CounterItem
  | | | GroupItem
  | | | FilterGroupItem
  | | | CycleList
  | | | DebugTickCounterItem - item contain (int: counter) and add +1 every tick
  | | | ItemController - controller on item (set when attach to itemsStorage)
  | | | ItemsUtils - utils for item managment
  | |
  | | callback - (callbacks)
  | | |
  | |
  | | notification - (item notifications)
  | | |
  | |
  | | tab - (tabs)
  | | | TabsManager - manager of items
  | |
  | | selection - ...
  | | | SelectionManager
  | | | Selection - selection of item (contain item and item itemsStorage)
  | | 
  | | 
  | | CurrentItemStorage - item storage for one item (CycleListItem...)
  | | ItemsStorage - items storage interface
  | | SimpleItemsStorage - simple implementation of ItemsStorage
  | | ImportWrapper - for import/export
  | 
  | datafixer
  | | 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)
  |             used 'version' file in '.../Android/data/<...>/files/'
  | SettingsManager - manager of application settings (use in ui...SettingsFragment)
  |             used 'settings.json' file
  | UpdateChecker - checking for app updates
                use api in 'https://fazziclay.github.io/api/project_3/...'
                cached result if update not-available for '...cache/latest_update_check' (file contain unix MILLISeconds)
| gui - ui logic
  | activity
  | |
  | | MainActivity - (see UI tree in README.md)
  |
  | UI - ui utils
  |
| util - there are many different utilities...
| (the rest is for convenience and it doesn't matter)

UI Tree

| MainActivity - mainActivity (current date of top, notifications)
| |
| | MainRootFragment - container of fragments, ItemsTabIncludeFragment by default
| | |
| | | ItemsTabIncludeFragment - (contain Toolbar, Tabs+ViewPager2: ItemsEditorRootFragment)
| | | |
| | | | ItemsEditorRootFragment - Root for ItemsStorage tree
| | | | |
| | | | | ItemsEditorFragment - Contain ItemsStorage drawer
| | | | | | ItemTextEditorFragment - comfortable editor for text & text formatting
| | |
| | | AboutFragment - about this app
| | | | ChangelogFragment - CHANGELOG file viewer
| | | SettingsFragment - settings of app (see app.settings.SettingsManager)
| | | ImportFragment - import from text
| | | DeleteItemsFragment - delete items (calls delete() for all provided items)

Extension points exported contracts — how you extend this code

ItemsStorage (Interface)
Interface items container @author fazziclay @see ItemsStorage#addItem(Item) @see ItemsStorage#deleteItem(Item) @see Item [7 …
app/src/main/java/com/fazziclay/opentoday/app/items/ItemsStorage.java
Event (Interface)
(no doc) [5 implementers]
api/src/main/java/com/fazziclay/opentoday/api/Event.java
Translation (Interface)
(no doc) [12 implementers]
app/src/main/java/com/fazziclay/opentoday/app/Translation.java
Result (Interface)
(no doc) [16 implementers]
app/src/main/java/com/fazziclay/opentoday/app/UpdateChecker.java
Unique (Interface)
(no doc) [7 implementers]
app/src/main/java/com/fazziclay/opentoday/app/items/Unique.java
ContainerItem (Interface)
(no doc) [10 implementers]
app/src/main/java/com/fazziclay/opentoday/app/items/item/ContainerItem.java

Core symbols most depended-on inside this repo

put
called by 162
app/src/main/java/com/fazziclay/opentoday/app/data/Cherry.java
get
called by 102
app/src/main/java/com/fazziclay/opentoday/app/Translation.java
d
called by 97
app/src/main/java/com/fazziclay/opentoday/util/Logger.java
setText
called by 95
app/src/main/java/com/fazziclay/opentoday/gui/toolbar/AppToolbar.java
toString
called by 85
app/src/main/java/com/fazziclay/opentoday/gui/item/ItemViewHolder.kt
getString
called by 81
app/src/main/java/com/fazziclay/opentoday/gui/item/ItemViewGenerator.java
getText
called by 77
app/src/main/java/com/fazziclay/opentoday/app/items/item/Item.java
viewClick
called by 70
app/src/main/java/com/fazziclay/opentoday/util/InlineUtil.java

Shape

Method 2,120
Class 278
Interface 59
Enum 31

Languages

Java94%
Kotlin6%

Modules by API surface

app/src/main/java/com/fazziclay/opentoday/gui/fragment/ItemEditorFragment.java119 symbols
app/src/main/java/com/fazziclay/opentoday/app/settings/SettingsManager.java59 symbols
app/src/main/java/com/fazziclay/opentoday/app/items/item/Item.java53 symbols
app/src/main/java/com/fazziclay/opentoday/app/App.java51 symbols
app/src/main/java/com/fazziclay/opentoday/gui/toolbar/AppToolbar.java50 symbols
app/src/main/java/com/fazziclay/opentoday/app/items/tab/TabsManager.java48 symbols
app/src/main/java/com/fazziclay/opentoday/app/ImportWrapper.java46 symbols
app/src/main/java/com/fazziclay/opentoday/app/items/item/MathGameItem.java45 symbols
app/src/main/java/com/fazziclay/opentoday/app/items/item/FilterGroupItem.java45 symbols
app/src/main/java/com/fazziclay/opentoday/app/items/item/CycleListItem.java42 symbols
app/src/main/java/com/fazziclay/opentoday/gui/fragment/ItemTextEditorFragment.java41 symbols
app/src/main/java/com/fazziclay/opentoday/app/Telemetry.java40 symbols

For agents

$ claude mcp add OpenToday \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact