Skip to content

starworld/callguard-whoscall-clone

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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 チーム

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

About

CallGuard - Whoscall clone app with React Native frontend and Node.js backend. Features phone number identification, spam reporting, call blocking, and call history management.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors