尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證new scam dunk by claude code
翻譯準備中
取自儲存庫 README
正在載入完整 README。 以下為已儲存的摘錄。
ScamDunk - Stock Scam Red Flag Detector
ScamDunk is a web application that helps retail investors identify potential scam-like red flags in stock pitches they receive. Users enter a stock ticker and the pitch text, and the app analyzes both market data and behavioral patterns to surface potential risks.檢視完整 README ↗ScamDunk is a web application that helps retail investors identify potential scam-like red flags in stock pitches they receive. Users enter a stock ticker and the pitch text, and the app analyzes both market data and behavioral patterns to surface potential risks.
scamdunk/
├── prisma/
│ └── schema.prisma # Database schema
├── src/
│ ├── app/
│ │ ├── (auth)/
│ │ │ ├── login/ # Login page
│ │ │ └── signup/ # Signup page
│ │ ├── (protected)/
│ │ │ ├── account/ # Account management page
│ │ │ └── check/ # Main stock check page
│ │ ├── api/
│ │ │ ├── auth/ # NextAuth routes + register
│ │ │ ├── billing/ # PayPal config/activate/cancel/subscription
│ │ │ ├── check/ # Main stock analysis endpoint
│ │ │ └── user/usage/ # Usage tracking endpoint
│ │ ├── globals.css # Global styles + CSS variables
│ │ ├── layout.tsx # Root layout with SessionProvider
│ │ └── page.tsx # Landing page
│ ├── components/
│ │ ├── ui/ # shadcn/ui components
│ │ ├── LimitReached.tsx # Limit reached component
│ │ ├── LoadingStepper.tsx # Loading progress component
│ │ └── RiskCard.tsx # Risk analysis result display
│ ├── lib/
│ │ ├── auth.config.ts # Edge-compatible auth config
│ │ ├── auth.ts # Full auth config with providers
│ │ ├── billing.ts # PayPal integration
│ │ ├── config.ts # App configuration
│ │ ├── db.ts # Prisma client singleton
│ │ ├── marketData.ts # Alpha Vantage API integration
│ │ ├── narrative.ts # OpenAI narrative generation
│ │ ├── scoring.ts # Risk scoring engine
│ │ ├── types.ts # TypeScript types
│ │ ├── usage.ts # Usage tracking
│ │ └── utils.ts # Utility functions
│ ├── middleware.ts # Route protection middleware
│ └── tests/
│ └── scoring.test.ts # Scoring logic tests
├── .env.example # Example environment variables
├── package.json
├── tailwind.config.ts
└── tsconfig.json
Clone the repository:
git clone https://github.com/Elimiz21/scam-dunk-re-write-claude-code.git
cd scam-dunk-re-write-claude-code
Install dependencies:
npm install
Set up environment variables:
cp .env.example .env
# Edit .env with your values
Set up the database:
npx prisma generate
npx prisma db push
Run the development server:
npm run dev
Create a .env file with the following variables:
# Database (PostgreSQL/Supabase)
DATABASE_URL="postgresql://user:password@host:5432/database"
DIRECT_URL="postgresql://user:password@host:5432/database"
# NextAuth
NEXTAUTH_SECRET="your-secret-key-here"
NEXTAUTH_URL="http://localhost:3000"
# OpenAI (for narrative generation)
OPENAI_API_KEY="sk-..."
# Alpha Vantage (for real market data)
ALPHA_VANTAGE_API_KEY="your-key"
# PayPal (for subscription processing)
PAYPAL_CLIENT_ID="your-paypal-client-id"
PAYPAL_CLIENT_SECRET="your-paypal-client-secret"
PAYPAL_PLAN_ID="P-..."
PAYPAL_WEBHOOK_ID="your-webhook-id" # optional, for webhook verification
PAYPAL_MODE="sandbox" # "sandbox" or "live"
# Supabase (optional - for direct access)
NEXT_PUBLIC_SUPABASE_URL="https://xxx.supabase.co"
NEXT_PUBLIC_SUPABASE_ANON_KEY="eyJ..."
id: Primary key (cuid)email: Unique email addresshashedPassword: Bcrypt hashed passwordname: Optional display nameplan: "FREE" or "PAID"billingCustomerId: PayPal subscription IDid: Primary keyuserId: Foreign key to UsermonthKey: Format "YYYY-MM"scanCount: Number of scans this monthPOST /api/auth/registerRegister a new user with email/password.
POST /api/checkMain stock analysis endpoint. Requires authentication.
Request Body:
{
"ticker": "ABCD",
"pitchText": "This stock is going to 10x...",
"context": {
"unsolicited": true,
"promisesHighReturns": false,
"urgencyPressure": false,
"secrecyInsideInfo": false
}
}
Response:
{
"riskLevel": "HIGH",
"totalScore": 9,
"signals": [...],
"stockSummary": {...},
"narrative": {...},
"usage": {...}
}
GET /api/user/usageGet current user's usage information.
GET /api/billing/paypal/configReturn the public PayPal client/plan IDs used to render the subscribe button.
POST /api/billing/paypal/activateActivate a PayPal subscription after the buyer approves it.
POST /api/billing/paypal/cancelCancel the current user's active PayPal subscription.
The scoring system is deterministic - no LLM is used for scoring, only for generating human-readable narratives.
| Category | Signals |
|---|---|
| STRUCTURAL | MICROCAP_PRICE (price < $5), SMALL_MARKET_CAP (< $300M), MICRO_LIQUIDITY (< $150k/day), OTC_EXCHANGE |
| PATTERN | SPIKE_7D (50%+ or 100%+ in 7 days), VOLUME_EXPLOSION (5x or 10x average), SPIKE_THEN_DROP |
| ALERT | ALERT_LIST_HIT (regulatory alerts) |
| BEHAVIORAL | UNSOLICITED, PROMISED_RETURNS, URGENCY, SECRECY, SPECIFIC_RETURN_CLAIM |
| Signal | Weight |
|---|---|
| MICROCAP_PRICE | 2 |
| SMALL_MARKET_CAP | 2 |
| MICRO_LIQUIDITY | 2 |
| OTC_EXCHANGE | 3 |
| SPIKE_7D (50-99%) | 3 |
| SPIKE_7D (100%+) | 4 |
| VOLUME_EXPLOSION (5-9x) | 2 |
| VOLUME_EXPLOSION (10x+) | 3 |
| SPIKE_THEN_DROP | 3 |
| ALERT_LIST_HIT | 5 |
| UNSOLICITED | 1 |
| PROMISED_RETURNS | 2 |
| URGENCY | 2 |
| SECRECY | 2 |
| SPECIFIC_RETURN_CLAIM | 1 |
Authentication uses NextAuth.js v5 with:
The auth system is split into two files:
auth.config.ts: Edge-compatible configuration (used by middleware)auth.ts: Full configuration with bcryptjs (used by API routes)Run the test suite:
npm test
Tests cover:
Build the project:
npm run build
Start the production server:
npm start
npm testnpm run buildMIT License
For issues and feature requests, please use GitHub Issues.