-
Notifications
You must be signed in to change notification settings - Fork 0
Project Structure
Sandeep Vattapparambil edited this page Aug 19, 2026
·
1 revision
src/
βββ test-setup.ts # Vitest global setup: jest-dom matchers + i18n/electronAPI mocks
βββ main/ # Electron main process
β βββ index.ts # Entry: CLI detection, splash + main window, console bridging
β βββ cli/ # Commander-based CLI entry (subcommands)
β β βββ cli.ts # Entry: legacy shim, subcommand dispatch, exit codes
β β βββ cli-options.ts # Shared global options + CliExitError
β β βββ cli-ui.ts # Colors, spinners, progress bars, tables
β β βββ cli-util.ts # Glob expansion, output derivation, formatting
β β βββ cli-convert.ts # convert subcommand
β β βββ cli-info.ts # info + capabilities subcommands
β β βββ cli-compress.ts # compress + extract-audio subcommands
β β βββ cli-batch.ts # batch subcommand (JobQueue + MultiBar)
β βββ capabilities.ts # Encoder probing (ffmpeg -encoders / -hwaccels)
β βββ process-utils.ts # Child-process helpers (spawn, suspend, resume, kill)
β βββ image-info.ts # EXIF extraction + RGB/luma histogram via ffmpeg
β βββ image-preview.ts # Downscaled base64 image previews
β βββ image-file-info.ts # Image dimensions/size probing
β βββ video-preview.ts # Single-frame video thumbnails
β βββ updater.ts # GitHub Releases update checker, download, install
β βββ ffprobe-static.d.ts # Module declaration for ffprobe-static
β βββ ipc/ # IPC handler modules (error-wrapped)
β β βββ handlers.ts # Central registration + error wrapper
β β βββ dialogs.ts # select-file / select-files / select-output
β β βββ conversion.ts # convert / cancel / pause / resume
β β βββ queue.ts # queue CRUD + cancel-all
β β βββ player.ts # player open / seek / close / get-frame
β β βββ timeline.ts # extract-waveform / extract-thumbnails
β β βββ image.ts # image info / preview / file info
β β βββ capabilities.ts # get-capabilities
β β βββ window.ts # minimize / maximize / close / always-on-top
β β βββ updater.ts # check / download / install updates
β β βββ system.ts # reveal-file / set-launch-at-login
β β βββ send.ts # Event broadcast helpers
β β βββ types.ts # Type-safe main->renderer sender signature
β βββ player/
β β βββ frame-decoder.ts # Rawvideo frame + PCM audio pipe decoder
β β βββ types.ts # Decoded frame/audio structures + config types
β βββ queue/
β β βββ job-queue.ts # Async serial batch queue with EventEmitter
β βββ timeline/
β β βββ timeline-media.ts # Waveform + thumbnail-montage extraction
β βββ transcoders/
β βββ types.ts # ITranscoder contract + raw ffprobe JSON shapes
β βββ factory.ts # Transcoder factory (FFMPEG | FFTOOL | BMF)
β βββ ffmpeg-core.ts # fluent-ffmpeg API core
β βββ fftool-core.ts # Direct CLI invocation via child_process
β βββ bmf-core.ts # BMF framework CLI wrapper
β βββ ffmpeg-utils.ts # Shared command/flag builders
β βββ ffprobe-mapper.ts # ffprobe JSON -> MediaInfo normalization
β βββ hwaccel.ts # Hardware-acceleration filter/flag resolution
βββ preload/
β βββ index.ts # contextBridge exposes electronAPI to renderer
βββ renderer/ # React UI (served by Vite, root: src/renderer)
β βββ main.tsx # React entry: HashRouter + DirectionProvider + I18nextProvider
β βββ App.tsx # Root layout: TitleBar, Drawer, routes, snackbar, toasts
β βββ ColorModeContext.tsx # Dark/light theme context
β βββ useLanguageDirection.ts # RTL/LTR detection hook
β βββ theme.ts # MUI light/dark theme definitions
β βββ colors.ts # Shared color palette
β βββ electron-api.d.ts # Global Window.electronAPI type declaration
β βββ components/ # Shared UI components (37 modules)
β βββ hooks/ # useConversion, useErrorHandler, useFormErrors, ...
β βββ i18n/ # i18next config, RTL provider, 56 locales
β βββ pages/ # 10 code-split page components
β βββ stores/ # Zustand stores (12 modules)
β βββ styles/ # Extracted MUI style constants per component (42 modules)
β βββ utils/
β βββ formatters.ts # Duration/bitrate/stream formatting helpers
βββ shared/ # Code shared between processes
βββ errors.ts # ErrorCode enum, AppError, formatError()
βββ ipc-channels.ts # All IPC channel name constants
βββ types.ts # Domain interfaces (ConversionOptions, MediaInfo, ...)
βββ constants.ts # Numeric/string constants
βββ log-constants.ts # Shared log message constants (406 exported)
βββ logger.ts # Timestamped logger (main/renderer)
βββ validation.ts # Time/scale/bitrate/range validation helpers
e2e/ # Playwright-based end-to-end tests
βββ vitest.e2e.config.ts # Vitest config for e2e (node env, 60s timeout)
βββ vitest.e2e.real.config.ts # Vitest config for real conversion tests
βββ helpers.ts # E2E helper utilities
βββ cli.spec.ts # CLI binary e2e tests
βββ fixtures/
β βββ app.ts # Electron app launch/teardown helpers
βββ mocks/
β βββ control.ts # Typed helpers for driving mock electronAPI
β βββ main-store.js # In-memory state backing the mock preload
β βββ preload.js # Mock preload (replaces real preload in test mode)
βββ specs/ # 11 E2E spec files
βββ shell.spec.ts
βββ convert.spec.ts
βββ batch.spec.ts
βββ audio-extract.spec.ts
βββ image-compress.spec.ts
βββ media-info.spec.ts
βββ settings.spec.ts
βββ logs.spec.ts
βββ video-cut.spec.ts
βββ real-convert.spec.ts
Getting Started
Internals
Quality
Community