業務・学習中に出てきた単語や用語を
クラウドDBに登録・検索・編集・削除できる個人向け辞書管理ツール。
Streamlit を用いた軽量 UI と
Supabase(PostgreSQL)を用いた永続データ管理を組み合わせ、
公開デモ運用を前提とした設計を行っている。

[ Browser ]
|
[ Streamlit Cloud ]
|
[ SQLAlchemy ]
|
[ PostgreSQL (Supabase) ]
owner:本人利用用demo:公開デモ用words テーブルに user_id 列を保持user_id をセッションに保持user_id を条件に付与SELECT *
FROM words
WHERE user_id = :user_id
ORDER BY updated_at DESC;

公開デモ運用を想定し、
デモユーザーのデータのみを定期削除する仕組みを導入。
DELETE FROM words
WHERE user_id = 'demo'
AND updated_at < now() - interval '7 days';

MyDictionary_App/
├ app.py # エントリポイント
├ init_db.py # DB初期化スクリプト
├ db/
│ ├ session.py # DB接続設定(Single Source of Truth)
│ └ model.py # SQLAlchemyモデル
├ modules/
│ ├ pages.py # 画面ロジック
│ ├ db_manager.py # CRUD処理
│ ├ dataclasses.py # 入力データ定義
│ └ utils.py # 共通処理
├ requirements.txt
└ README.md
.env はローカル専用(Git 管理外)https://mydictionaryapp.streamlit.app/
本ツールは
個人利用 + 公開デモ運用の両立を目的に設計している。
単なる CRUD サンプルではなく、
運用・セキュリティ・拡張性を意識した構成を重視。
お仕事のご相談はお気軽にどうぞ。
GitHub: https://github.com/SakumaTakayuki
X: https://x.com/sakuma_takayuki