[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-1818":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":13,"contributorsCount":13,"subscribersCount":13,"size":13,"stars1d":13,"stars7d":13,"stars30d":13,"stars90d":13,"forks30d":13,"starsTrendScore":13,"compositeScore":15,"rankGlobal":10,"rankLanguage":10,"license":16,"archived":17,"fork":17,"defaultBranch":18,"hasWiki":19,"hasPages":17,"topics":20,"createdAt":10,"pushedAt":10,"updatedAt":21,"readmeContent":22,"aiSummary":23,"trendingCount":13,"starSnapshotCount":13,"syncStatus":24,"lastSyncTime":25,"discoverSource":26},1818,"SBTI","SillyBigTypeIndicator\u002FSBTI","SillyBigTypeIndicator","Meme-style personality quiz called Silly Big Type Indicator SBTI : Find the one that suits you best","https:\u002F\u002Fwww.sbti.ai\u002Fen",null,"TypeScript",73,0,160,40,"MIT License",false,"main",true,[],"2026-06-12 04:00:11","# Silly Big Type Indicator (SBTI)\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fwww.sbti.ai\u002Fen\">\n    \u003Cimg src=\".\u002FLogo.png\" alt=\"SBTI Logo\" width=\"320\" \u002F>\n  \u003C\u002Fa>\n\u003C\u002Fp>\n\nOfficial website: **[https:\u002F\u002Fwww.sbti.ai\u002Fen](https:\u002F\u002Fwww.sbti.ai\u002Fen)**\n\n**SBTI** is an internet-native personality experience focused on entertainment: around 30 questions (plus a hidden branch trigger), cross-analysis across five core models and fifteen dimensions, and shareable personality outcomes.\n\nThis repository is the open-source codebase for the SBTI web app and integration architecture.\n\n> **Disclaimer:** For entertainment and self-reflection only—not scientific diagnosis, education, or hiring. This project is an **original parody** with its own identity; it is **not** affiliated with any similarly named organization or website.\n\n**Screenshots:** add PNGs under `docs\u002Fscreenshots\u002F` (see `docs\u002Fscreenshots\u002FREADME.md`) and embed them here for GitHub.\n\n## Features\n\n- **Landing** (`\u002F`) — hero, example type cards, integrations overview  \n- **Main test** (`\u002Ftest`) — animated flow, progress, Zustand + local persistence  \n- **Results** (`\u002Fresult\u002F[type]`) — full type card, compatibility links, share payload, **OG image**  \n- **Compare** (`\u002Fcompare`) — overlap\u002Fcontradiction, “appearance vs reality” blurb, **radar chart**  \n- **Integrations** (`\u002Fintegrations`, `\u002Fintegrations\u002F[provider]`) — registry of adapters  \n- **Dev JSON lab** (`\u002Fdev\u002Fpack`) — validate custom trait JSON  \n- **API** — `POST \u002Fapi\u002Fcompare`, `GET \u002Fapi\u002Fshare?type=EOVA`, `GET \u002Fapi\u002Fsession`  \n- **Persistence** — Prisma + SQLite (dev); swap `DATABASE_URL` for Postgres in production  \n\n## Product alignment with sbti.ai\n\n- **Core test shape** — ~31-question flow, includes hidden-branch style logic, optimized for 5–8 minutes\n- **Five core models** — Self, Emotional, Attitude, Action Drive, Social\n- **15-dimension mindset** — model-backed scoring and mapping into personality outputs\n- **Cross-analysis direction** — supports external personality systems and MBTI-style adapter mapping\n- **Privacy-first messaging** — browser-local calculation style can be supported by client-only mode\n\n## Architecture\n\n| Area | Location |\n|------|----------|\n| SBTI questions & axis scoring | `src\u002Flib\u002Fsbti\u002F` |\n| Normalized trait graph (0–100) | `src\u002Flib\u002Ftraits\u002Fschema.ts` |\n| Provider adapters | `src\u002Flib\u002Fproviders\u002Fadapters\u002F` |\n| Registry + validation | `src\u002Flib\u002Fproviders\u002Fregistry.ts`, `validate.ts` |\n| Rules engine (normalized → SBTI letters) | `src\u002Flib\u002Fproviders\u002Frules-engine.ts` |\n| Comparison | `src\u002Flib\u002Fcomparison\u002Fengine.ts` |\n| Public API surface | `src\u002Flib\u002Ffunctions.ts` |\n| Provider templates & docs | `src\u002Ftests\u002Fregistry\u002F` |\n\n### Scoring model (main test)\n\nFour axes are derived from weighted answers (**E\u002FI**, **O\u002FL**, **V\u002FM**, **A\u002FP**), each on a 0–100 scale. The four letters are chosen by whether each score is ≥ 50. The 16 type codes are the Cartesian product of those dichotomies; copy and metadata live in `src\u002Flib\u002Fsbti\u002Ftypes-catalog.ts`.\n\n### Integrations (adapters)\n\nEach adapter implements `PersonalityTestAdapter`:\n\n- **`normalizeResult`** — maps manual \u002F quiz \u002F JSON input → `NormalizedTraitProfile`  \n- **`mapToSBTI`** — uses `mapNormalizedToSBTI` (shared rules engine)  \n- **`getResultLabel`** — human-readable summary for history rows  \n\nBuilt-in examples: **Four-Letter Compass (style)**, **Ocean Five (style)**, **Nine Archetype Map (style)**, **Custom JSON trait pack**.\n\n### Adding a provider (≈10 minutes)\n\n1. Copy `src\u002Ftests\u002Fregistry\u002Fexample-provider.template.ts`.  \n2. Implement `normalizeResult` + `getResultLabel`; reuse `mapNormalizedToSBTI` for mapping.  \n3. Call `registerPersonalityProvider(yourAdapter)` from a small module imported by `src\u002Flib\u002Fproviders\u002Fregistry.ts` (or a dedicated `register-extra.ts`).  \n4. Run `npm test` and exercise `\u002Fcompare` + `\u002Fdev\u002Fpack`.\n\n## Scripts\n\n```bash\nnpm install\ncp .env.example .env\nnpx prisma migrate dev\nnpm run db:seed      # optional demo user + sample comparisons\nnpm run dev\nnpm test\nnpm run build\n```\n\n## Deployment (Vercel)\n\n1. Push this repo to GitHub and import into Vercel.  \n2. Set **`DATABASE_URL`** to a hosted **Postgres** URL (recommended for serverless). Run `npx prisma migrate deploy` in the build command or as a release step.  \n3. Set **`NEXT_PUBLIC_SITE_URL`** to your production URL (Open Graph + metadata base).  \n4. SQLite file URLs are fine for local dev only—not ideal on serverless volumes.\n\n## Tech stack\n\nNext.js (App Router) · TypeScript · Tailwind CSS · shadcn\u002Fui (Base UI) · Framer Motion · Zustand · Zod · Prisma 6 · Vitest · Recharts\n\nOptional: Auth.js is listed in dependencies for future email\u002FOAuth; the app ships with **anonymous cookie sessions** via `\u002Fapi\u002Fsession`.\n\n## API surface (library)\n\nImplemented in `src\u002Flib\u002Ffunctions.ts`:\n\n`takeSBTITest`, `scoreSBTIResult`, `generateSBTIType`, `saveSubmission`, `importExternalPersonalityResult`, `normalizeExternalTestResult`, `comparePersonalitySystems`, `registerPersonalityProvider`, `getAvailablePersonalityProviders`, `compareWithProvider`, `generateShareCardPayload`, `exportUserProfile`\n\n## Roadmap\n\n- [ ] Optional Auth.js flows + account linking  \n- [ ] Server-side share PNG generation (beyond JSON download)  \n- [ ] More first-party “mini quizzes” per adapter  \n- [ ] Plugin hot-loading from `\u002Fsrc\u002Ftests\u002Fregistry` without editing core registry  \n\n## Contributing & license\n\nSee [CONTRIBUTING.md](.\u002FCONTRIBUTING.md). Licensed under [MIT](.\u002FLICENSE).\n","Silly Big Type Indicator (SBTI) 是一款以娱乐为主的网络性格测试，通过约30个问题（包括隐藏分支触发）来分析用户在五个核心模型和十五个维度上的性格特征，并提供可分享的结果。项目采用TypeScript编写，具有动画流畅的测试流程、基于Zustand的状态管理和本地持久化存储等功能，同时支持多种外部人格系统适配器映射。SBTI适合用于个人娱乐、自我反思以及团队建设活动等非正式场合，其设计注重隐私保护，主要计算过程可在客户端完成。",2,"2026-06-11 02:46:12","CREATED_QUERY"]