
Nani翻訳の技術的な話
DRANK
先日 Nani というAI翻訳アプリをリリースしました。macOS / Windowsアプリを使うとショートカットで解説つきの翻訳を簡単に呼び出すことができます。 SQLiteでユーザーの設定などを保存Upstash (Redis): キャッシュ、レートリミットDrizzle: SQLiteのORMとして利用Stripe: 決済管理Next.js(App Router): Webアプリ。VercelにデプロイHono: APIを快適に書くため。Next.jsのRoute Handler上で使用Electron: デスクトップアプリTypeScript / React / TailwindCSS: WebとデスクトップでUIを共通化モノレポ構成Web版とデスクトップ版でUIやロジックを共通化するためにpnpmとTurborepoを使ってモノレポとして管理しています。ディレクトリの構成は以下のようにappsと共有ライブラリを配置するpackagesに分けています。apps/web: Next.js(Web版とAPI)apps/desktop: Electron(デスクトップ版)packages/lib: 共有ライブラリ(UIコンポーネント、スキーマ、ドメインロジックなど)packages/svg: アイコンなどのSVGアセット共通化したい部分はpackages/*に配置し、apps/webとapps/desktopからimportしています。pnpmを使うとモノレポ管理が楽でいいですね。共有ライブラリ(packag…