Projects

Cross-Platform Mobile Application

TypeScript-based cross-platform mobile application with Vite 7 + Capacitor 8 + Firebase. Native features, ESLint+Prettier standards.

TypeScriptVite 7Capacitor 8FirebaseVitestESLint

Stacko is a TypeScript-based cross-platform mobile application project that brings together Vite 7, Capacitor 8, and Firebase. It was developed to explore how production-quality cross-platform mobile app development with web technologies works in practice, and to create a reusable starter template for similar future projects.

Problem

The ecosystem for cross-platform mobile app development with web technologies was maturing rapidly, but comprehensive, production-ready reference architectures demonstrating that these tools work reliably together were limited. Understanding in advance the configuration and integration issues that could be encountered while bringing Vite’s modern build tooling, Capacitor’s native bridge, and Firebase’s backend services together in the same TypeScript codebase was critical for both time and risk management. It was also unclear how to enforce testability and code quality standards in this architecture.

Solution

Three main components were brought together in a single TypeScript codebase. Vite 7 was placed at the center of the build tooling: the development cycle was accelerated with module hot reloading, and the production build was optimized with tree-shaking and code splitting. Capacitor 8 carried the web application into a native container, providing access to platform features such as haptics, Share API, and native notifications. Firebase Authentication, Firestore, and Cloud Functions were integrated as a single backend ecosystem. The Vitest test layer automated ESLint and Prettier code standards; lint and format checks were made mandatory in the CI pipeline.

Key Features

  • Vite 7 Build Tooling: Instant HMR, optimized production bundle, and Capacitor-compatible configuration; development cycle comparable in speed to native toolchains
  • Capacitor 8 Native Bridge: Haptics (vibration feedback), Share API, Splash Screen, and push notification support; no need to write Swift or Kotlin
  • Firebase Integration: Authentication, Firestore real-time database, and Cloud Functions; type-safe Firestore document schemas
  • TypeScript Throughout: Client, service layer, and Firebase schemas are type-safe; client-server data inconsistencies are caught at compile time
  • Vitest Test Infrastructure: Fast unit and integration tests sharing Vite configuration; faster run times compared to Jest
  • ESLint + Prettier: Automatic code formatting and lint rules; mandatory in CI pipeline; consistent code style across the team

Technical Infrastructure

Vite’s plugin ecosystem provided Capacitor integration without additional configuration complexity; the synergy between these two tools was the primary reason for choosing them together. Capacitor’s approach offers a middle ground between React Native’s full native bridge and Flutter’s own render engine: web code runs, and access to platform features is provided through a plugin catalog. Firebase’s TypeScript SDK made it possible to write Firestore schema definitions in a type-safe manner; this feature moved a large portion of runtime errors to the compile phase. Because Vitest shares the same module resolution mechanism as Vite, the configuration difference between the test environment and the production environment was kept to a minimum.

Results

Stacko confirmed that production-quality cross-platform mobile app development with web technologies is both possible and practical. Vite’s fast build cycle made the development experience comparable to native toolchains, while Capacitor’s native bridge provided the expected reliability in accessing needed platform features. The project serves as a ready-made starter template for building similar applications in this architecture; configuration decisions and integration details were documented to create a reusable framework.