TreeMap
A free, open-source disk-space visualizer. Squarified treemap, duplicate hunting, disk-full forecasting, and cleanup that only ever moves files to the Trash.
遊びの日程を、心地よく合わせる。
Translation pending
ProductivityTypeScript · HTMLGitHub @yuhi-riddleOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Loading the full README. The saved excerpt is shown below.
Madoi は、友人同士の遊びや公演参加の日程を合わせるための Web アプリです。 リポジトリ名と開発プロジェクト名は play-sync-planner のままです。画面上のサービス名は、ユーザーに伝わりやすいように Madoi としています。 まずは日程調整に集中します。候補日時を作り、参加者に回答してもらい、日程を確定する流れを軽くします。 後続 Phase では、外部決済リンクの強化、通知連携などを足していく想定です。 • Next.js App Router • React • TypeScript • Supabase Auth / Supabase Postgres • Server Actions • Tailwind CSS • Zod • Vitest .env.example を参考に .env.local を作成します。 Supabase の SQL Editor で、マイグレーションを順番に実行します。 009_site_notifications.sql で 42P07 relation "notifications" already exists が出た場合は想定内です。 013_repair_notifications_setup.sql が 009 の内容を含む修復版なので、013 まで進めれば揃います。Read the full README ↗
Madoi は、友人同士の遊びや公演参加の日程を合わせるための Web アプリです。
リポジトリ名と開発プロジェクト名は play-sync-planner のままです。画面上のサービス名は、ユーザーに伝わりやすいように Madoi としています。
まずは日程調整に集中します。候補日時を作り、参加者に回答してもらい、日程を確定する流れを軽くします。
後続 Phase では、外部決済リンクの強化、通知連携などを足していく想定です。
npm install
.env.example を参考に .env.local を作成します。
NEXT_PUBLIC_SUPABASE_URL=
NEXT_PUBLIC_SUPABASE_ANON_KEY=
SUPABASE_SERVICE_ROLE_KEY=
NEXT_PUBLIC_SITE_URL=http://localhost:3000
GOOGLE_CALENDAR_CLIENT_ID=
GOOGLE_CALENDAR_CLIENT_SECRET=
GOOGLE_CALENDAR_REDIRECT_URI=http://localhost:3000/api/google-calendar/callback
CALENDAR_TOKEN_ENCRYPTION_KEY=
CRON_SECRET=
Supabase の SQL Editor で、マイグレーションを順番に実行します。
supabase/migrations/ 内の SQL ファイルを、ファイル名の番号順にすべて実行します。
(`001_` から最新番号まで。CI が全ファイルの適用を検証しています。)
009_site_notifications.sql で 42P07 relation "notifications" already exists が出た場合は想定内です。
013_repair_notifications_setup.sql が 009 の内容を含む修復版なので、013 まで進めれば揃います。
Google Calendar 連携を使う場合は、次の手順も実施してください。
docs/phase2-google-calendar-setup.md
npm run dev
npm test
npm run build
lib/japanese-holidays.ts の祝日データは HOLIDAY_DATA_VALID_UNTIL までしか無く、それ以降は無言で平日扱いになる。年1回、翌年分を追加することdocs/design/01_requirements.md: 要件定義書docs/design/02_database_design.md: DB設計docs/design/03_screen_flow.md: 画面フローdocs/design/04_codex_phase1_prompt.md: Phase 1 実装指示docs/phase1-user-setup.md: Phase 1 セットアップ手順docs/phase1-completion-checklist.md: Phase 1 完了チェックdocs/phase2-google-calendar-setup.md: Google Calendar セットアップ手順docs/current-status.md: 現在の実装状況、残件、リリース前チェックリストdocs/release-checklist.md: ローカル・本番公開前の確認手順docs/free-release-setup.md: 無料URLで公開し、PCを閉じていても使えるようにする詳細手順docs/gas-notification-schedule.md: 無料で通知生成を約1時間ごとに実行するGAS設定手順docs/closed-beta-test-setup.md: 独自ドメインとGoogle OAuth審査へ移行するための詳細手順候補日時作成画面で、自分の Google Calendar の予定名・場所・時間を確認できます。日程確定後は、予定詳細の「Calendarに作成して招待」から主催者のGoogle Calendarに予定を作成できます。Google Calendar連携済みの参加者がいれば、カレンダー招待も送ります。
取得するのは予定の開始・終了時刻、予定名、場所だけです。予定の説明、参加者、Meet URL、添付ファイルは取得しません。Google Calendar の予定詳細はデータベースに保存しません。
ホーム画面では、選択した1日のMadoi予定とGoogle Calendar予定だけを表示します。今日、明日、週末、任意の日付で絞り込めます。月単位の俯瞰は /plans のカレンダーで行います。
カレンダーでは、自分が参加している同時進行の候補日時を月単位で見比べます。Google Calendarの予定は画面表示後に取得し、予定名・場所・時間を表示します。
共有リンクの日程回答画面では、ログイン済みかつGoogle Calendar連携済みの場合、自分の予定と候補日時の重なりを確認しながら回答できます。
予定詳細と日程確定画面では、候補日時をランキング表示します。
予定詳細画面では、まだ回答していない参加者を確認できます。未回答者に送るための文面を生成し、共有リンクと回答期限を含めてコピーできます。
外部サービスへの自動送信はまだ行いません。送信はLINE、メール、Discordなど、ユーザーが普段使っている手段で手動で行う前提です。
候補日時作成画面では、候補を終日として追加できます。終日候補は candidate_dates.is_all_day に保存し、予定詳細、回答画面、日程確定画面、ホームの日付表示で終日として表示します。
終日候補を確定した場合、Google Calendarには date 形式の終日予定として作成します。
参加予定ごとに、回答期限の何分前・何時間前・何日前に声をかけるかを複数件保存できます。現時点では自動送信は行わず、参加予定詳細の表示と未回答者向けリマインド文面に反映します。
未回答者に手動で連絡したあと、参加予定詳細から「送信済みに記録」できます。記録した回数と前回の送信時刻を表示します。LINE、メール、Discordなどへの自動送信はまだ行いません。
参加予定ごとに支払い履歴を追加し、均等割りまたは個別金額で負担額を登録できます。登録した支払いから、誰が誰にいくら払うかを自動計算します。
外部決済サービスへの直接連携、自動リマインド送信はまだ行いません。
清算支払いを始める前であれば、立替支払いを編集・削除できます。清算支払いは別履歴として保存し、一部支払いにも対応します。
外部決済APIとの直接連携はまだ行いません。保存した支払いURLや購入ページURLを開く導線だけ用意しています。
清算ごとに支払い方法、支払い先URL、メモを保存できます。未払いの人に送る支払い依頼文面には、残額と支払い先情報を含めます。
PayPayなどの外部決済API連携、支払い依頼の自動送信、入金確認の自動化はまだ行いません。
Madoi内で、未回答、回答期限、清算待ち、支払い待ち、受け取り確認待ちを通知として表示します。
/notifications で通知一覧を確認する本番では CRON_SECRET を設定し、GASから Authorization: Bearer <CRON_SECRET> を付けて通知生成APIを呼び出してください。