Skip to content

Latest commit

 

History

History
251 lines (179 loc) · 5.62 KB

File metadata and controls

251 lines (179 loc) · 5.62 KB

CallGuard - Whoscallクローンアプリ

迷惑電話から守るスマートフォンアプリ。電話番号の識別、スパム報告、自動ブロック機能を提供します。

🚀 機能

主要機能

  • 電話番号検索・識別: 着信時に発信者情報を表示
  • 迷惑電話ブロック: スパム電話の自動ブロック
  • ユーザー報告システム: コミュニティベースの情報収集
  • 通話履歴管理: 詳細な通話履歴の表示・管理
  • カスタマイズ可能な設定: ブロックカテゴリやホワイトリストの管理

技術スタック

  • フロントエンド: React Native (Expo)
  • バックエンド: Node.js + Express + TypeScript
  • データベース: MongoDB + Mongoose
  • 認証: JWT
  • セキュリティ: Helmet, CORS, Rate Limiting

📱 スクリーンショット

メイン画面

  • ダッシュボード(統計情報表示)
  • 最近の通話履歴
  • クイックアクション

検索画面

  • 電話番号検索
  • スパム報告機能
  • カテゴリ分類

ブロックリスト

  • ブロック済み番号一覧
  • ブロック解除機能
  • 検索・フィルター

通話履歴

  • 詳細な通話履歴
  • タイプ別フィルター
  • 統計情報

設定画面

  • 自動ブロック設定
  • 通知設定
  • ホワイトリスト管理

🛠️ セットアップ

前提条件

  • Node.js (v18以上)
  • npm または yarn
  • MongoDB (ローカルまたはクラウド)
  • Expo CLI

インストール

  1. リポジトリをクローン ```bash git clone cd trae_test ```

  2. フロントエンド(React Native)のセットアップ ```bash npm install npx expo install react-dom react-native-web ```

  3. バックエンドのセットアップ ```bash cd backend npm install ```

  4. 環境変数の設定 ```bash cd backend cp .env.example .env

    .envファイルを編集してデータベース接続情報などを設定

    ```

起動方法

  1. バックエンドサーバーを起動 ```bash cd backend npm run dev ``` サーバーは http://localhost:3000 で起動します

  2. フロントエンドアプリを起動 ```bash

    プロジェクトルートで

    npm run web ``` アプリは http://localhost:8081 で起動します

  3. モバイルアプリ(オプション) ```bash npm run android # Android npm run ios # iOS ```

📚 API エンドポイント

電話番号関連

  • `GET /api/phone/:number` - 電話番号検索
  • `POST /api/reports` - スパム報告
  • `GET /api/stats` - 統計データ取得

ブロックリスト

  • `GET /api/blocklist` - ブロックリスト取得
  • `POST /api/blocklist` - ブロックリストに追加
  • `DELETE /api/blocklist/:number` - ブロックリストから削除

通話履歴

  • `GET /api/history` - 通話履歴取得
  • `POST /api/history` - 通話履歴追加
  • `GET /api/history/stats` - 通話統計取得

その他

  • `GET /api/health` - ヘルスチェック
  • `GET /api/` - API情報

🗄️ データベース構造

PhoneNumber Collection

```typescript { number: string, // 電話番号 name?: string, // 名前 category: string, // カテゴリ(spam, telemarketing, etc.) reportCount: number, // 報告数 lastReported: Date, // 最終報告日 isBlocked: boolean, // ブロック状態 tags: string[], // タグ reports: ObjectId[] // 関連する報告 } ```

CallHistory Collection

```typescript { phoneNumber: string, // 電話番号 name?: string, // 名前 type: string, // 通話タイプ(incoming, outgoing, missed) timestamp: Date, // 通話時刻 duration?: number, // 通話時間(秒) isBlocked: boolean, // ブロック状態 category?: string // カテゴリ } ```

SpamReport Collection

```typescript { phoneNumber: string, // 報告対象の電話番号 category: string, // 報告カテゴリ description?: string, // 詳細説明 reportedBy: string, // 報告者 timestamp: Date, // 報告日時 verified: boolean // 検証済みフラグ } ```

🔒 セキュリティ機能

  • レート制限: API呼び出し回数制限
  • CORS設定: クロスオリジンリクエスト制御
  • ヘルメット: セキュリティヘッダー設定
  • 入力検証: Express Validator使用
  • エラーハンドリング: 適切なエラーレスポンス

🧪 テスト

```bash

バックエンドテスト

cd backend npm test

フロントエンドテスト

npm test ```

📦 ビルド・デプロイ

バックエンド

```bash cd backend npm run build npm start ```

フロントエンド

```bash

Web版

npm run build

モバイルアプリ

npx expo build:android npx expo build:ios ```

🤝 コントリビューション

  1. フォークする
  2. フィーチャーブランチを作成 (`git checkout -b feature/AmazingFeature`)
  3. 変更をコミット (`git commit -m 'Add some AmazingFeature'`)
  4. ブランチにプッシュ (`git push origin feature/AmazingFeature`)
  5. プルリクエストを作成

📄 ライセンス

このプロジェクトはMITライセンスの下で公開されています。

🙏 謝辞

  • Whoscall - インスピレーション元
  • React Native コミュニティ
  • Express.js チーム
  • MongoDB チーム

注意: このアプリは教育・学習目的で作成されています。実際の迷惑電話対策には、公式のアプリやサービスの使用を推奨します。