shiping
면접·시험 도우미, AI가 실시간으로 풀이 아이디어를 제공
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗日本語 · 한국어
ウェブと iOS で同じ単語帳がつながる、ミニマルな単語帳アプリ。
外国語の勉強が好きで、単語アプリをいくつも使ってきました。机ではウェブ、外ではスマホで使うのですが、 同じ単語帳がウェブとアプリの間でつながらないことがずっと不満でした。 そこで、ウェブと iOS で同じ単語帳をリアルタイムに同期し、街で見かけた単語を OCR でその場で保存できる、 自分専用の単語帳を作ることにしました。
地下鉄のように通信が不安定な場所でも学習が途切れないよう、モバイルはオフラインファーストで設計し、 接続が戻ったら差分だけを送ります。単語の登録から復習まで、自分が毎日使うことを前提に作っている進行中のプロジェクトです。
復習セッション。採点は「わからない / 覚えた」の二択だけ。単語帳の編集・全体統計・単語パックのダウンロードもウェブから。
(id, user_id) 複合主キーによるユーザー分離と、Firebase Auth 連携のトークン検証アプリはローカル DB に書いてから差分を push / pull し、ウェブはサーバーを原本として直接 CRUD する。 Firebase は認証だけを担い、データはすべて自前の Hub に置く。
通信量を抑える増分同期の設計:
毎回すべてを送受信する代わりに、ローカルの変更を SyncOutbox に貯めて 100 件単位で push し、
最後の cursor 以降の差分だけを pull する同期パイプラインを構築しました。
データの性質に応じた競合解決: オフライン端末どうしの同期で、通貨やクエストのような累積値が「更新時刻 (updated_at) が新しい方が勝つ」規則によって 消えてしまう問題を特定しました。通貨の計算とクエストの完了判定はサーバーだけが冪等 (idempotent) に行い、 アプリは結果を受け取るだけ、と役割を分けて解決しました。
マルチプラットフォームでのアルゴリズム (SM-2) の一致:
アプリ (Dart) とサーバー (Python) の両方で復習アルゴリズムを計算する際、言語標準の round() の丸め方の違いで
次回復習日がずれる問題を発見しました。丸め規則を統一し、同一のテストベクタを両者で共有することで差異をなくしました。
可用性を優先した意図的なトレードオフ: 同期トランザクション中に FK 違反が起きると cursor までロールバックされ、同じバッチを永久に再試行する膠着状態に陥ります。 これを避けるため FK を無効にし、アプリ側で整合性を保証する方針とその根拠を文書に残しました。
nyaki/
├── app/ Flutter アプリ
├── web/ Next.js ウェブ
├── api/ Sync Hub (FastAPI + Postgres)
└── docs/ アーキテクチャ · タスク · 企画
# サーバー — 環境変数の詳細は api/README.md
cd api && docker compose up --build # http://localhost:8000/docs
# ウェブ
cd web && npm install && npm run dev # http://localhost:3000
# アプリ
cd app && flutter pub get && flutter run
cd api && pytest # 同期 · SRS · ゲーミフィケーション · コンテンツ
cd app && flutter test # SM-2 の計算 · 進捗リポジトリ
| ドキュメント | 内容 |
|---|---|
| docs/API.md | API 仕様 · 書き込みルール · 同期 · 上限 (韓国語) |
| docs/archive/ | 保管文書 — アーキテクチャ · タスク · テスト · 過去の企画 (韓国語) |
| api/README.md | ローカル実行 · 環境変数 · デプロイ手順 |