InkRows 뒤의 tech stack

발행: (2026년 1월 6일 오후 05:01 GMT+9)
8 min read
원문: Dev.to

Source: Dev.to

번역을 진행하려면 번역이 필요한 전체 텍스트를 제공해 주시겠어요?
텍스트를 주시면 원본 형식과 마크다운을 유지하면서 한국어로 번역해 드리겠습니다.

개요

InkRows는 웹 및 모바일 플랫폼에서 원활하게 작동하도록 설계된 최신 노트‑테이킹 앱입니다. 깔끔하고 직관적인 인터페이스 뒤에는 개발자 경험, 성능 및 사용자 참여를 우선시하는 기술 스택이 있습니다. InkRows를 구동하는 기술 아키텍처를 살펴보겠습니다.

⚛️ Frontend – React 19 + TypeScript

  • React – 앱을 구동하는 UI 라이브러리.
  • TypeScript – 정적 타입을 제공하여 프로젝트가 커지고, 리팩터링하거나 의존성을 업데이트할 때 매우 유용합니다.

🏗️ Build System – Vite 7 + SWC

  • Vite – 즉시 시작하고 핫‑모듈 교체가 가능한 빠른 개발 서버.
  • SWC – Babel 대신 트랜스파일링에 사용되어 빌드 시간을 초고속으로 유지합니다.

📱 Cross‑Platform Mobile – Capacitor 8

Capacitor를 사용하면 React/TypeScript로 앱을 한 번 작성하고 별도의 코드베이스를 유지하지 않고 web, iOS, Android에 배포할 수 있습니다. 플러그인은 웹과 네이티브 API를 연결하여 카메라, 파일 시스템 및 기타 네이티브 기능에 접근할 수 있게 합니다.

🎨 Styling – Tailwind CSS 4 + PostCSS

  • Tailwind CSS – 유틸리티‑퍼스트 스타일링으로 클래스 이름을 지정하거나 방대한 CSS 파일을 관리할 필요가 없습니다.
  • Vite와 통합되어 PostCSS를 통해 처리되어 가벼운 빌드를 제공합니다.

🧠 상태 관리 – Zustand

Zustand는 Redux‑style 보일러플레이트 없이 가벼운 스토어를 제공합니다. 상태는 예측 가능하고 테스트 가능한 변이를 위해 슬라이스(예: userSlice, todosSlice, tagsSlice, settingsSlice)로 분할됩니다.

✍️ 풍부한 텍스트 편집 – Lexical

Lexical (Meta에서 제공) 은 노트 편집기를 구동합니다. 플러그인 시스템을 통해 사용자 정의 서식, 표, 그리고 상상할 수 있는 모든 기능을 쉽게 추가할 수 있습니다.

💾 데이터 지속성 – 다중 레이어

☁️ 백엔드 – Supabase

  • PostgreSQL 데이터베이스
  • 인증 및 Edge Functions
  • S3 파일 스토리지
  • 실시간 구독을 통한 라이브 동기화

🏠 로컬 스토리지 – Dexie

Dexie(IndexedDB 래퍼)는 데이터를 오프라인에 저장하고 네트워크가 가능할 때 Supabase와 동기화하여 낙관적 UI 업데이트를 가능하게 합니다.

🔍 데이터 쿼리 – TanStack Query

서버 상태 캐싱, 백그라운드 재조회, 그리고 낙관적 업데이트를 관리하여 반응형 UI를 제공합니다.

💰 수익화 – Stripe 통합

Stripe가 결제를 처리하고, Supabase Edge Functions가 웹훅을 검증하며 구독을 관리합니다.

🧩 UI 컴포넌트 라이브러리 – HeroUI

HeroUI는 접근성이 뛰어나며, Tailwind CSS와 바로 사용할 수 있는 사전 구축된 컴포넌트를 제공합니다.

✨ Animation & Interaction

  • Framer Motion – 부드러운 애니메이션과 제스처.
  • dnd‑kit – 리스트 정렬 및 기타 상호작용을 위한 접근성 높은 드래그‑앤‑드롭.

📊 분석 및 피드백

  • PostHog – 제품 분석.
  • Supabase function – 맞춤형 피드백 수집.

🌐 프로그레시브 웹 앱 (PWA)

InkRows는 PWA로 오프라인에서도 작동합니다:

  • Service Worker – 오프라인 기능.
  • App Manifest – 설치 가능한 경험.
  • Workbox – 고급 캐싱 전략.

🏛️ 아키텍처 하이라이트

📦 모듈식 조직

src/
├── features/   # Feature‑specific modules
├── shared/     # Reusable components, hooks, utils
├── services/   # API and external service integrations
├── app/        # Application state and handlers
└── config/    # Centralized configuration

🛡️ 타입 안전성

With TypeScript (skipLibCheck: false) we get:

  • 엔드‑투‑엔드 타입 안전성.
  • 자동 생성된 Supabase 타입.
  • Props 검증 및 풍부한 IDE 지원.

🛠️ 개발 경험

  • Vite의 네이티브 ES 모듈을 통한 빠른 HMR.
  • 웹, iOS, Android용 별도 빌드 구성.
  • 모바일 개발을 위한 라이브 리로드 지원.
  • loadEnv 로 관리되는 환경 변수.
npm run dev                 # Web development
npm run ionic:dev:ios      # iOS development with live reload
npm run ionic:dev:android  # Android development with live reload
npm run build              # Production build

🚀 배포

  • Web – 정적 사이트 호스팅 (Netlify).
  • iOS – Xcode를 통한 TestFlight 및 App Store.
  • Android – Gradle 빌드를 통한 Google Play 스토어.

🏁 결론

InkRows 스택은 개발 과정에서 내린 실용적인 선택을 반영합니다:

  • React가 UI를 담당합니다.
  • Capacitor가 크로스‑플랫폼 배포를 관리합니다.
  • Supabase가 백엔드를 제공합니다.

각 라이브러리는 개발자 생산성, 사용자 경험, 코드 품질, 그리고 별도의 코드베이스를 유지하지 않고도 여러 플랫폼에 배포할 수 있는 능력 사이의 균형을 맞추기 위해 선택되었습니다.

크로스‑플랫폼 앱을 구축하고 있거나 최신 웹 아키텍처에 관심이 있다면, 이 스택은 견고하고 실제적인 예시를 제공합니다.

ch to balancing performance, maintainability, and shipping to multiple platforms.

군중 속에서 돋보이는 노트 앱을 원한다면, InkRows를 확인해 보세요!

⭐ 언제나 그렇듯, 이 콘텐츠가 마음에 드셨다면 X와 LinkedIn에서 저를 팔로우하여 더 많은 업데이트, 인사이트, 토론을 받아보세요!

Back to Blog

관련 글

더 보기 »

React 컴포넌트에서 TypeScript Generics

소개 제네릭은 React 컴포넌트에서 매일 사용하는 것은 아니지만, 특정 경우에는 유연하고 타입‑안전한 컴포넌트를 작성할 수 있게 해줍니다.