How kichipoe/okadot works
Purpose and Entry Points
OkaDot is a React Native mobile organizer for todos and notes, with editable notes and user-selectable themes. JavaScript starts at index.js, renders the root component in App.jsx, and targets native Android/iOS shells.
Application Composition
App.jsx is the composition boundary for app-wide providers and navigation. src/navigation/RootNavigator.jsx defines the screen-level navigation graph, separating home, note editing, and preferences flows. Screen exports are centralized in src/screens/index.js.
Home Workspace
src/screens/Home/HomeScreen.jsx is the primary workspace and coordinates segmented content. src/screens/Home/TodoContent.jsx presents and updates task data; src/screens/Home/NotesContent.jsx presents note data. Reusable segmentation UI is provided by src/components/molecules/BottomSegmentBar.jsx.
Note and Todo Interaction Layer
Notes are edited in src/screens/Notes/NoteEditorScreen.jsx, using note-oriented controls such as src/components/atoms/notes/NoteItem.jsx and src/components/atoms/notes/TagsEditor.jsx. Todo creation and item interaction are encapsulated in src/components/atoms/todo/TodoInput.jsx and src/components/atoms/todo/TodoItem.jsx. This keeps screen orchestration separate from presentational/editing widgets.
Persistence Boundary
Local persistence is isolated by domain: src/storage/todoStorage.js, src/storage/notesStorage.js, and src/storage/themeStorage.js. UI screens consume these modules rather than coupling storage concerns into components. No backend, API client, authentication layer, or cloud service is evident in the repository tree.
Theme and Preferences Flow
Theme state is owned at the application boundary by src/theme/ThemeProvider.jsx, with theme definitions in src/theme/themes.js and palette data in src/theme/palette.json. src/hooks/useTheme.js is the consumer-facing access boundary. Preferences are organized through src/screens/PreferenceScreen.jsx, with dedicated theme and about screens at src/screens/Preference/ThemeScreen.jsx and src/screens/Preference/AboutScreen.jsx.
Runtime and Native Infrastructure
The app runs in the React Native JavaScript runtime, bundled by Metro (metro.config.js) and built with npm dependencies (package.json). Android integration is configured through android/app/build.gradle, launched from Kotlin bootstrap code in android/app/src/main/java/com/kishanpujari/okadot/MainActivity.kt, and uses android/app/src/main/AndroidManifest.xml. iOS integration uses the Xcode project ios/OkaDot.xcodeproj/project.pbxproj, native delegate ios/OkaDot/AppDelegate.swift, and CocoaPods via ios/Podfile.
Main entry points: RootNavigator.jsx Root navigator · ThemeProvider.jsx Theme provider · App.jsx App composition · TodoContent.jsx Todo content
Components 21
React Native app
- JavaScript entry
index.js - App composition · Composes app-wide providers and navigation.
App.jsx - Theme provider · Owns application theme state.
src/theme/ThemeProvider.jsx - Theme definitions
src/theme/themes.js - Theme hook
src/hooks/useTheme.js - Root navigator · Routes home, editor, and preferences flows.
src/navigation/RootNavigator.jsx - Screen exports
src/screens/index.js - Home workspace · Primary segmented todo and notes workspace.
- Todo content
src/screens/Home/TodoContent.jsx - Notes content
src/screens/Home/NotesContent.jsx - Bottom segment bar
src/components/molecules/BottomSegmentBar.jsx - Note editor
src/screens/Notes/NoteEditorScreen.jsx - Note controls · Note item and tag editing controls.
src/components/atoms/notes/NoteItem.jsx - Todo controls · Todo input and item interaction controls.
src/components/atoms/todo/TodoInput.jsx - Preferences · Hosts theme and about preferences.
src/screens/PreferenceScreen.jsx - Theme preferences
src/screens/Preference/ThemeScreen.jsx
Local persistence
- Todo storage
src/storage/todoStorage.js - Notes storage
src/storage/notesStorage.js - Theme storage
src/storage/themeStorage.js
Android shell
- Android bootstrap
android/app/src/main/java/com/kishanpujari/okadot/MainActivity.kt
iOS shell
- iOS bootstrap
ios/OkaDot/AppDelegate.swift
Connections 22
- JavaScript entry → App composition: renders
- App composition → Theme provider: wraps with
- App composition → Root navigator: hosts
- Theme provider → Theme definitions: uses
- Theme provider → Theme storage: persists
- Theme hook → Theme provider: consumes
- Root navigator → Screen exports: resolves screens
- Root navigator → Home workspace: routes to
- Root navigator → Note editor: routes to
- Root navigator → Preferences: routes to
- Home workspace → Todo content: coordinates
- Home workspace → Notes content: coordinates
- Home workspace → Bottom segment bar: uses
- Todo content → Todo controls: uses
- Todo content → Todo storage: reads and updates
- Notes content → Notes storage: reads
- Note editor → Note controls: uses
- Note editor → Notes storage: edits and saves
- Preferences → Theme preferences: opens
- Theme preferences → Theme hook: changes theme via
- Android bootstrap → JavaScript entry: launches JS app
- iOS bootstrap → JavaScript entry: launches JS app