Skip to content

Project Architecture

📖 Overview

MioSub is an AI-powered video subtitle generation, translation, and proofreading tool. Built with React + Vite + Electron, supporting both Web and Desktop deployment.

  • Tech Stack: React 19, Vite 6, Electron 39, TypeScript
  • AI Engine: Google Gemini (Translation/Proofreading), OpenAI Whisper (Speech Recognition)

DeepWiki Project Analysis: https://deepwiki.com/corvo007/Gemini-Subtitle-Pro


🏗️ Tech Stack Architecture

Tech Stack Layers

Dependency Versions

CategoryPackageVersionPurpose
CoreReact19.2UI Framework
Vite6.2Build Tool
TypeScript5.8Type System
Electron39Desktop Container
AI SDK@google/genaiLatestGemini API
openaiLatestWhisper API
onnxruntime-web1.23VAD Inference
Media@ricky0123/vad-web0.0.30Silero VAD Wrapper
fluent-ffmpeg2.1FFmpeg Control
i18ni18next25.7i18n Core
react-i18next16.5React Binding
Renderingassjs0.1.4ASS Subtitle Rendering
StylingTailwindCSS4.1Atomic CSS
Lucide React0.554Icon Library
Utilitiesclsx / tw-mergeLatestStyle Merging

📏 Coding Standards

Path Aliases

This project uses path aliases throughout src and electron directories. Except for same-level file references, relative paths (like ../../) are prohibited for cross-level module imports.

  • @/* -> src/* (Core source code)
  • @components/* -> src/components/*
  • @hooks/* -> src/hooks/*
  • @services/* -> src/services/*
  • @utils/* -> src/utils/*
  • @types/* -> src/types/*
  • @lib/* -> src/lib/*
  • @electron/* -> electron/* (Electron main process code)

Directory Organization Principles

  • Co-location: Utility functions or components used only within a specific module should be placed in that module's utils or shared subdirectory, not lifted to global scope.
    • Example: src/components/endToEnd/wizard/utils/validation.ts serves only the wizard module.
  • Separation of Concerns:
    • src/utils: Global, pure JavaScript/UI helper functions.
    • src/services/utils: Infrastructure, logging, system-level utilities.

Released under the MIT License.