Skip to content

nkdev-tech/memetec

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

346 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

memetec.

技術書の読書記録を管理するWebアプリ。


1. コンセプト

  • 読んだ技術書を登録して記録を残す
  • 本ごとにメモを追加・管理
  • タグで本を分類・整理
  • 自分だけの読書ログとして積み上げる

最終ゴール: 技術書から得た学びをストックし、いつでも振り返れる場所を作る


2. ターゲット

  • 技術書をよく読むエンジニア
  • 読んだ内容を忘れがちな人
  • 学びをアウトプットしたい個人開発者

3. 機能

  • 本の登録・管理(書名検索で書誌情報を自動入力、書影表示)
  • 本ごとのメモ管理(Markdown 対応・ページ番号付き)
  • タグによる分類
  • メモのキーワード検索
  • ログイン(自分だけの記録)

4. 技術スタック

レイヤー 技術
フロントエンド Next.js 16 / React 19 / Tailwind CSS v4 / shadcn/ui
API Hono + @hono/zod-openapi
DB Cloudflare D1(SQLite)/ Drizzle ORM
インフラ Cloudflare Workers(API は Hono、Web は Next.js を OpenNext でデプロイ)
認証 better-auth
メール送信 Resend(認証メール)
状態管理・フォーム TanStack Query / TanStack Form
APIクライアント生成 orval(OpenAPIスペックから自動生成)
テスト Vitest(API)/ Jest + Testing Library(Web)

5. アーキテクチャ

モノレポ構成。api/web/ の2パッケージ。

memetec/
├── api/   # Hono on Cloudflare Workers
└── web/   # Next.js(OpenNext)on Cloudflare Workers

API レイヤー構成

ビジネスロジックは api/src/modules/<domain>/ 配下の3レイヤー、ルート定義は別のトップレベル api/src/routes/<domain>/ に分かれている。

api/src/
├── modules/<domain>/
│   ├── entity/      # DB スキーマから派生した型と変換関数
│   ├── repository/  # Drizzle を使った DB 操作
│   └── usecase/     # ビジネスロジック
└── routes/<domain>/ # Hono ルート定義 + Zod スキーマ(OpenAPI 兼用)

API の /doc エンドポイントから OpenAPI スペックを取得できる。 Web 側はそのスペックから npm run generate で API クライアントを自動生成する。


6. セットアップ

# API
cd api
npm install
cp .env.example .env          # drizzle-kit 用(CLOUDFLARE_ACCOUNT_ID / DATABASE_ID / D1_TOKEN)
cp .dev.vars.example .dev.vars # Worker ランタイムのシークレット(BETTER_AUTH_SECRET / RESEND_API_KEY 等)
npm run migrate:apply         # ローカル D1 にマイグレーション適用
npm run dev

# Web(別ターミナル)
cd web
npm install
cp .env.example .env          # NEXT_PUBLIC_API_URL を設定
npm run dev

環境変数の置き場所は用途で分かれている:

ファイル 用途
api/.env drizzle-kit(マイグレーション)が dotenv で読む CLOUDFLARE_ACCOUNT_ID CLOUDFLARE_DATABASE_ID CLOUDFLARE_D1_TOKEN
api/.dev.vars Worker ランタイムのシークレット(本番は Cloudflare Secrets) BETTER_AUTH_SECRET RESEND_API_KEY GOOGLE_CLIENT_SECRET
api/wrangler.jsoncvars 公開してよい設定値 BETTER_AUTH_URL ORIGIN_URL ENV

7. 主要コマンド

API (api/)

コマンド 説明
npm run dev 開発サーバー起動
npm test テスト実行
npm run migrate:generate マイグレーションファイル生成
npm run migrate:apply ローカル D1 にマイグレーション適用
npm run deploy Cloudflare Workers にデプロイ

Web (web/)

コマンド 説明
npm run dev 開発サーバー起動
npm test テスト実行
npm run generate orval で API クライアント再生成(API サーバー起動が必要)
npm run preview Cloudflare Workers のローカルプレビュー
npm run deploy Cloudflare Workers にデプロイ

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors