# prem736raj/clipp architecture

> Architecture diagram of the GitHub repository prem736raj/clipp, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-27). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/prem736raj/clipp
- Repository: https://github.com/prem736raj/clipp

## Overview

Clipp is a private, local Android video editor. Its principal workflow is selecting media, editing a project with timeline content and effects, then rendering and exporting an MP4; project management and templates provide adjacent workflows. The README confirms these capabilities, while the available source excerpts contain no runtime implementation, so links between individual modules are limited to the documented workflow and are not presented as verified calls.

Main entry points: [`app/src/main/java/com/example/EditorScreen.kt`](https://github.com/prem736raj/clipp/blob/main/app/src/main/java/com/example/EditorScreen.kt) (Editor screen), [`app/src/main/java/com/example/MediaPickerScreen.kt`](https://github.com/prem736raj/clipp/blob/main/app/src/main/java/com/example/MediaPickerScreen.kt) (Media picker), [`app/src/main/java/com/example/ProjectSetupScreen.kt`](https://github.com/prem736raj/clipp/blob/main/app/src/main/java/com/example/ProjectSetupScreen.kt) (Project setup), [`app/src/main/java/com/example/ExportSettingsScreen.kt`](https://github.com/prem736raj/clipp/blob/main/app/src/main/java/com/example/ExportSettingsScreen.kt) (Export settings)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["App and projects"]
  node_media["Media picker"]
  node_projects["Projects<br/>[ProjectsScreen.kt]"]
  node_setup["Project setup"]
end

subgraph group_editing["Editing"]
  node_editor["Editor screen<br/>[EditorScreen.kt]"]
  node_timeline["Timeline project<br/>[TimelineProject.kt]"]
  node_rendergraph["Timeline render graph"]
  node_effects["Video effects<br/>[VideoEffects.kt]"]
  node_filters["Video filters<br/>[VideoFilters.kt]"]
  node_captions["Auto captions<br/>[AutoCaptions.kt]"]
end

subgraph group_export["Export"]
  node_exportsettings["Export settings"]
  node_rendering["Export rendering<br/>[ExportRendering.kt]"]
  node_exporter["Video exporter<br/>[VideoExporter.kt]"]
  node_success["Export success"]
end

subgraph group_persistence["Project storage"]
  node_viewmodel["Project view model"]
  node_repository["Project repository"]
  node_database[("App database<br/>[AppDatabase.kt]")]
end

subgraph group_extras["Additional workflows"]
  node_templates["Templates<br/>[TemplatesScreen.kt]"]
  node_slideshow["Slideshow creator"]
  node_batch["Batch export"]
end

node_user(("Editor"))

node_user -->|"selects media"| node_media
node_user -->|"manages projects"| node_projects
node_media -->|"starts project"| node_setup
node_setup -->|"continues editing"| node_editor
node_editor -->|"edits timeline"| node_timeline
node_editor -->|"applies effects"| node_effects
node_editor -->|"applies filters"| node_filters
node_editor -->|"adds captions"| node_captions
node_editor -->|"starts export"| node_exportsettings
node_exportsettings -->|"configures render"| node_rendering
node_rendering -->|"renders video"| node_exporter
node_exporter -->|"completes export"| node_success
node_viewmodel -->|"accesses projects"| node_repository
node_repository -->|"persists projects"| node_database
node_user -->|"browses templates"| node_templates
node_user -->|"creates slideshow"| node_slideshow
node_user -->|"runs batch export"| node_batch

click node_media "https://github.com/prem736raj/clipp/blob/main/app/src/main/java/com/example/MediaPickerScreen.kt"
click node_projects "https://github.com/prem736raj/clipp/blob/main/app/src/main/java/com/example/ProjectsScreen.kt"
click node_setup "https://github.com/prem736raj/clipp/blob/main/app/src/main/java/com/example/ProjectSetupScreen.kt"
click node_editor "https://github.com/prem736raj/clipp/blob/main/app/src/main/java/com/example/EditorScreen.kt"
click node_timeline "https://github.com/prem736raj/clipp/blob/main/app/src/main/java/com/example/TimelineProject.kt"
click node_rendergraph "https://github.com/prem736raj/clipp/blob/main/app/src/main/java/com/example/TimelineRenderGraph.kt"
click node_effects "https://github.com/prem736raj/clipp/blob/main/app/src/main/java/com/example/VideoEffects.kt"
click node_filters "https://github.com/prem736raj/clipp/blob/main/app/src/main/java/com/example/VideoFilters.kt"
click node_captions "https://github.com/prem736raj/clipp/blob/main/app/src/main/java/com/example/AutoCaptions.kt"
click node_exportsettings "https://github.com/prem736raj/clipp/blob/main/app/src/main/java/com/example/ExportSettingsScreen.kt"
click node_rendering "https://github.com/prem736raj/clipp/blob/main/app/src/main/java/com/example/ExportRendering.kt"
click node_exporter "https://github.com/prem736raj/clipp/blob/main/app/src/main/java/com/example/VideoExporter.kt"
click node_success "https://github.com/prem736raj/clipp/blob/main/app/src/main/java/com/example/ExportSuccessScreen.kt"
click node_viewmodel "https://github.com/prem736raj/clipp/blob/main/app/src/main/java/com/example/viewmodel/ProjectViewModel.kt"
click node_repository "https://github.com/prem736raj/clipp/blob/main/app/src/main/java/com/example/data/ProjectRepository.kt"
click node_database "https://github.com/prem736raj/clipp/blob/main/app/src/main/java/com/example/data/AppDatabase.kt"
click node_templates "https://github.com/prem736raj/clipp/blob/main/app/src/main/java/com/example/TemplatesScreen.kt"
click node_slideshow "https://github.com/prem736raj/clipp/blob/main/app/src/main/java/com/example/SlideshowCreatorScreen.kt"
click node_batch "https://github.com/prem736raj/clipp/blob/main/app/src/main/java/com/example/BatchExportRunner.kt"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_media,node_projects,node_setup toneBlue
class node_editor,node_timeline,node_rendergraph,node_effects,node_filters,node_captions toneAmber
class node_exportsettings,node_rendering,node_exporter,node_success toneMint
class node_viewmodel,node_repository,node_database toneRose
class node_templates,node_slideshow,node_batch,node_user toneIndigo
```

## Components

### App and projects

- [Media picker](https://github.com/prem736raj/clipp/blob/main/app/src/main/java/com/example/MediaPickerScreen.kt): `app/src/main/java/com/example/MediaPickerScreen.kt`
- [Projects](https://github.com/prem736raj/clipp/blob/main/app/src/main/java/com/example/ProjectsScreen.kt): `app/src/main/java/com/example/ProjectsScreen.kt`
- [Project setup](https://github.com/prem736raj/clipp/blob/main/app/src/main/java/com/example/ProjectSetupScreen.kt): `app/src/main/java/com/example/ProjectSetupScreen.kt`

### Editing

- [Editor screen](https://github.com/prem736raj/clipp/blob/main/app/src/main/java/com/example/EditorScreen.kt): `app/src/main/java/com/example/EditorScreen.kt`
- [Timeline project](https://github.com/prem736raj/clipp/blob/main/app/src/main/java/com/example/TimelineProject.kt): `app/src/main/java/com/example/TimelineProject.kt`
- [Timeline render graph](https://github.com/prem736raj/clipp/blob/main/app/src/main/java/com/example/TimelineRenderGraph.kt): `app/src/main/java/com/example/TimelineRenderGraph.kt`
- [Video effects](https://github.com/prem736raj/clipp/blob/main/app/src/main/java/com/example/VideoEffects.kt): `app/src/main/java/com/example/VideoEffects.kt`
- [Video filters](https://github.com/prem736raj/clipp/blob/main/app/src/main/java/com/example/VideoFilters.kt): `app/src/main/java/com/example/VideoFilters.kt`
- [Auto captions](https://github.com/prem736raj/clipp/blob/main/app/src/main/java/com/example/AutoCaptions.kt): `app/src/main/java/com/example/AutoCaptions.kt`

### Export

- [Export settings](https://github.com/prem736raj/clipp/blob/main/app/src/main/java/com/example/ExportSettingsScreen.kt): `app/src/main/java/com/example/ExportSettingsScreen.kt`
- [Export rendering](https://github.com/prem736raj/clipp/blob/main/app/src/main/java/com/example/ExportRendering.kt): `app/src/main/java/com/example/ExportRendering.kt`
- [Video exporter](https://github.com/prem736raj/clipp/blob/main/app/src/main/java/com/example/VideoExporter.kt): `app/src/main/java/com/example/VideoExporter.kt`
- [Export success](https://github.com/prem736raj/clipp/blob/main/app/src/main/java/com/example/ExportSuccessScreen.kt): `app/src/main/java/com/example/ExportSuccessScreen.kt`

### Project storage

- [Project view model](https://github.com/prem736raj/clipp/blob/main/app/src/main/java/com/example/viewmodel/ProjectViewModel.kt): `app/src/main/java/com/example/viewmodel/ProjectViewModel.kt`
- [Project repository](https://github.com/prem736raj/clipp/blob/main/app/src/main/java/com/example/data/ProjectRepository.kt): `app/src/main/java/com/example/data/ProjectRepository.kt`
- [App database](https://github.com/prem736raj/clipp/blob/main/app/src/main/java/com/example/data/AppDatabase.kt): `app/src/main/java/com/example/data/AppDatabase.kt`

### Additional workflows

- [Templates](https://github.com/prem736raj/clipp/blob/main/app/src/main/java/com/example/TemplatesScreen.kt): `app/src/main/java/com/example/TemplatesScreen.kt`
- [Slideshow creator](https://github.com/prem736raj/clipp/blob/main/app/src/main/java/com/example/SlideshowCreatorScreen.kt): `app/src/main/java/com/example/SlideshowCreatorScreen.kt`
- [Batch export](https://github.com/prem736raj/clipp/blob/main/app/src/main/java/com/example/BatchExportRunner.kt): `app/src/main/java/com/example/BatchExportRunner.kt`

### Other components

- **Editor**

## Connections

- Editor → Media picker: selects media
- Editor → Projects: manages projects
- Media picker → Project setup: starts project
- Project setup → Editor screen: continues editing
- Editor screen → Timeline project: edits timeline
- Editor screen → Video effects: applies effects
- Editor screen → Video filters: applies filters
- Editor screen → Auto captions: adds captions
- Editor screen → Export settings: starts export
- Export settings → Export rendering: configures render
- Export rendering → Video exporter: renders video
- Video exporter → Export success: completes export
- Project view model → Project repository: accesses projects
- Project repository → App database: persists projects
- Editor → Templates: browses templates
- Editor → Slideshow creator: creates slideshow
- Editor → Batch export: runs batch export
