Skip to content

Latest commit

 

History

History
52 lines (41 loc) · 2.64 KB

File metadata and controls

52 lines (41 loc) · 2.64 KB

Project structure

A concise map of the codebase so you can find things fast and know where new code belongs.

app/src/main/AndroidManifest.xml

  • Component declarations.

com.ethran.notable/

  • data/ — Data and persistence

    • db/ — Room database (Db.kt), entities (Notebook, Page, Stroke, Image, Folder), and migrations.
    • datastore/ — App settings and editor cache (AppSettings.kt).
    • model/ — Common data types (BackgroundType, SimplePointF).
    • AppRepository.kt — Main entry point for data operations, coordinating multiple repositories.
    • PageDataManager.kt — Handles page-specific data, caching, and background loading.
  • editor/ — The core note-taking engine

    • canvas/ — Hardware-specific drawing and refresh logic (DrawCanvas, OnyxInputHandler, RefreshManager).
    • drawing/ — Low-level rendering logic (OpenGLRenderer, Stroke/Line rendering, Page drawing).
    • state/ — Editor-specific state management:
      • history.kt — Undo/Redo logic.
      • Clipboard.kt — Copy/Paste support for strokes and images.
      • SelectionState.kt — Tracking selected elements.
      • EditorTypes.kt — Basic editor enums (Mode, PlacementMode).
    • ui/ — Editor-specific UI components (Topbar, PageMenu, Selector).
      • toolbar/ — Complex toolbar implementation and various tool buttons.
    • utils/ — Internal editor utilities (Pen/Eraser logic, Operations, Input handling).
    • EditorViewModel.kt — Orchestrates editor state and UI interactions.
    • EditorControlTower.kt — High-level coordination of editor components.
    • PageView.kt — The main composable representing a single page.
  • io/ — File and bitmap I/O

    • ImportEngine.kt / ExportEngine.kt — Handling .xopp and PDF files.
    • PageContentRenderer.kt / ThumbnailGenerator.kt — Generating visuals from page data.
    • FileUtils.kt, share.kt — Generic file and sharing helpers.
  • navigation/ — App-wide routing and navigation (NotableNavHost, NotableNavigator).

  • ui/ — General application UI (Compose-based)

    • views/ — Main screen destinations (Home, Pages, Settings, Welcome).
    • viewmodels/ — Logic for the main screens.
    • components/ — Reusable UI widgets (QuickNav, NotebookCard, Settings elements).
    • dialogs/ — Modals for configuration and confirmation.
    • theme/ — App styling (Colors, Type, Theme).
  • gestures/ — Custom gesture detection (QuickNav gestures, Editor receiver).

  • di/ — Dependency injection (Hilt modules).

  • utils/ — Generic helpers (Permissions, Debugging, Flow extensions).

app/schemas/com.ethran.notable.data.db.AppDatabase/

  • Room schema snapshots (versioned JSON files).