個人辞書(単語・用語管理)Webアプリ

業務・学習中に出てきた単語や用語を
クラウドDBに登録・検索・編集・削除できる個人向け辞書管理ツール

Streamlit を用いた軽量 UI と
Supabase(PostgreSQL)を用いた永続データ管理を組み合わせ、
公開デモ運用を前提とした設計を行っている。


概要

Top


主な機能


想定利用シーン


システム構成

[ Browser ]
|
[ Streamlit Cloud ]
|
[ SQLAlchemy ]
|
[ PostgreSQL (Supabase) ]


ユーザー設計

ユーザー区分

設計方針

SELECT *
FROM words
WHERE user_id = :user_id
ORDER BY updated_at DESC;

データベース設計

words テーブル

wordsテーブル

デモデータ定期削除(運用設計)

公開デモ運用を想定し、
デモユーザーのデータのみを定期削除する仕組みを導入。

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


セキュリティ・設定管理


デプロイ環境


💡 設計ポイント(こだわったところ)


📁 公開URL

https://mydictionaryapp.streamlit.app/


補足

本ツールは
個人利用 + 公開デモ運用の両立を目的に設計している。

単なる CRUD サンプルではなく、
運用・セキュリティ・拡張性を意識した構成を重視。


📫 お問い合わせ

お仕事のご相談はお気軽にどうぞ。

👉 お問い合わせはこちら

GitHub: https://github.com/SakumaTakayuki
X: https://x.com/sakuma_takayuki