bannzai / bannzai/Alarmify

公開前チェックリスト (製品名・Support URL・App Privacy・ストア素材・実機 QA)

Open
#14 12 comments 0 reactions 0 assignees View on GitHub
Dominant language
Swift
Stars
0
Forks
0
Avg merge
8h 13m
Merged PRs (30d)
53

Description

## 概要
申請・公開の前に揃える項目。実装 issue の完了条件に入れない実機・マニュアル確認もここに集約する。

## 申請作業より前に用意しておく項目 (公開 API だけでは設定できない・着手が遅れると提出が止まる)
- [x] **製品名の決定** (Signalarm。2026-09-04 決定、#40 で反映済み): 「Alarmify」は App Store の既存アプリ「Alarmify™」(Spotify 連携の目覚まし。US 評価 5,318 件、公式サイト alarmify.com) と衝突するため、ストア表示名・LP・法務ドキュメント (`docs/`)・`fastlane/metadata/*/name.txt` の名称を決めて置き換える。bundle id とコードはコードネームのまま
- [x] **App Store の Support URL** (2026-09-12 に https://bannzai.github.io/Alarmify/ が 200 を確認。独自ドメインへの移行は #56): `docs/index.html` を GitHub Pages (main の `/docs`) で公開し、`bash ~/.agents/skills/landing-page-builder/scripts/verify-lp.sh --app-store-support --has-account docs/index.html` が exit 0、公開 URL https://bannzai.github.io/Alarmify/ が 200 を返す。App Store 公開後は `id="store-cta"` のボタンをストアリンクに差し替える
- [x] **アカウント削除の手順ページ** (2026-09-12 に AccountDeletion-en / ja が 200 を確認。アプリ内の削除は #9 で実装済み): https://bannzai.github.io/Alarmify/AccountDeletion-en と `AccountDeletion-ja` が 200 を返し、アプリ内の削除機能 (#9) の手順と一致している
- [x] **App Privacy** (2026-09-12 に #64 / PR #70 で適用・検証済み): `fastlane/app_privacy_details.json` (根拠: `documents/app-privacy.md`) を実装に合わせて見直し (`Purchases.logIn` の有無、App Check、Analytics の有無)、`/appstore-app-privacy` skill で App Store Connect へ適用する
- [x] **価格の確定と RevenueCat / App Store Connect の商品** (2026-09-12 に #61 で登録。月 ¥450 / 年 ¥2,300、無料トライアルなし。App Store Connect のサブスクリプション 2 商品 (6811364307 / 6811364226) は `READY_TO_SUBMIT`、RevenueCat の entitlement `pro` / offering `default` は適用済み、`docs/SpecifiedCommercialTransactionAct-ja.md` と矛盾なし。定義は PR #87 の `fastlane/in_app_purchases/`。審査提出は初回サブスクリプションのためアプリ本体 1.0 と同時に下の「申請」で行う): Pro の年額・月額を確定し (`documents/PROJECT.md` の課金設計)、`/appstore-in-app-purchase` skill で IAP を登録する。`docs/SpecifiedCommercialTransactionAct-ja.md` の記載と矛盾がないこと

## 申請前に対応する issue (2026-09-12 に整理。上から順に進める)
- [x] #58 本番 Functions を main の最新でデプロイする (App Check 検証・RevenueCat webhook・反映結果の報告 API が本番に未反映)
- [x] #59 ホームから検証用の項目を外し、開発者向けの操作を設定にまとめる
- [ ] #63 公開前のセキュリティ点検と結果の記録
- [ ] #62 運用費用の試算と予算アラート・費用上限の確認
- [x] #60 デザイン (オンボーディング・ペイウォールの設計 + /design のカンバス) → #6 反映
- [ ] #61 課金商品の登録 (価格は月 ¥450 / 年 ¥2,300 で確定。2026-09-12。ASC / RevenueCat の登録は完了、PR #87 のマージ待ち。マージ後に #61 を close する)
- [x] #64 App Privacy の適用
- [ ] #65 メタデータ・スクリーンショット・審査ノートの同期 (fastlane metadata_upload)
- [ ] #56 LP を signalarm.app で配信し API を api.signalarm.app に揃える (ドメイン購入は #25)
- [ ] #13 配送経路の結論を PROJECT.md に記載し、採用しなかった経路のコードを削除する

## ストア素材
- [x] アプリアイコン (#10)
- [x] App Store スクリーンショット (ja / en-US 以上) (#10。ワードマークの Signalarm 化は #40)
- [x] ヘッダークリエイティブ (#10)
- [x] `fastlane/metadata/` の全 locale が `scripts/metadata_check/check_all_metadata.sh` で制限内 (#11)
- [x] `fastlane metadata_upload` で App Store Connect に同期 (2026-09-12 に #65 で同期。審査連絡先の入力は #25)

## アプリからの導線
- [ ] 設定画面から利用規約 (`Terms-ja` / `Terms-en`)・プライバシーポリシー・特定商取引法に基づく表示・サポートメール (bannzai.app@gmail.com) へ到達できる
- [ ] 設定画面からアカウント削除に到達できる

## 実機 QA (TestFlight ビルドで実施)
- [ ] 外部からの `POST /v1/alarms` でアラームが登録され、指定時刻に鳴る (2026-09-12 に App foreground で 2 回成功。#13 のコメント参照。残りの条件は未確認) (App Background / App terminated / Device locked / サイレントモード / 集中モード / Low Power Mode / 長時間未起動)
- [ ] `DELETE /v1/alarms/{id}` で取り消される。同じ id の再送で二重登録されない
- [ ] 無料枠の上限に達した時の挙動と、Pro 購入後の解除
- [ ] 通知・アラームの権限を拒否した時の案内
- [ ] 英語・日本語の表示 (`/detect-mistranslation`)

## インフラ・運用
- [x] simtunnel を使う場合: Secrets `TS_OIDC_CLIENT_ID` / `TS_OIDC_AUDIENCE` を bannzai/Alarmify に登録する (値は mementomorning と同じ。agent は値を読めないためユーザーが `gh secret set` で登録する)
- [ ] `alarmify-prod` の予算アラート (月 ¥10,000。50 / 90 / 100 % で bannzai.app@gmail.com) とエラーログ急増アラート (Slack #alarmify-notification) が届くことをテストログで確認する
- [ ] Functions のデプロイ経路 (#12) と App Check の強制適用 (#4) が本番で有効
- [x] `/pre-public-check` skill で秘匿情報の混入がないことを確認する (2026-09-12 に #63 で実施。実運用の秘密の混入なし) (public リポジトリ)

## 申請
- [ ] `/release-app` skill で申請する。審査ノートに「外部サービスからのアラーム登録」の試し方 (テスト用 API トークンと curl) を書く。初回のサブスクリプション 2 商品 (#61) は単独で提出できないため、同じ reviewSubmission に `subscriptionVersion` を添付してアプリ本体 1.0 と同時に提出する (手順は appstore-in-app-purchase skill の `references/troubleshooting.md`「初回商品の単独提出が拒否される」)

## セッション再開

```sh
cd /Users/bannzai/ghq/github.com/bannzai/Alarmify
claude --resume a8775485-4be7-4ce0-8456-d1739a29aab6
```

Contributor guide

No contributing guide indexed for this repository

Research direction

Use issue #14 as the release checklist and review each unchecked entry together with its referenced issues, especially #63, #62, #65, #56, and #13. Read the linked project documents, metadata files, and verification commands mentioned in the checklist. Done means the remaining checks are completed, documented, and the app is ready for submission.

Written by the indexing model from the issue text.

Assessment

Tech stack
github, swift
Domain
documentation, infrastructure, release, testing-qa
Issue type
Documentation
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.