Generate and explore Big Five (OCEAN) personality profiles — instantly, reproducibly, and shareably.
- Big Five model — openness, conscientiousness, extraversion, agreeableness, neuroticism (each 0–100)
- Seeded generation — same seed always produces the same personality (great for NPCs, test fixtures, etc.)
- Manual mode — drag sliders to craft a personality by hand
- Shareable links — every result encodes to a URL you can copy and share
- JSON export — copy the raw trait data with one click
- Zero dependencies for the web app — plain HTML, CSS, and JS
Open docs/index.html in any browser, or visit the GitHub Pages site.
npm installconst { generatePersonality, validatePersonalityInput } = require('.');
// Random personality
const p = generatePersonality('Alice');
console.log(p.toJSON());
// Reproducible (seeded)
const p2 = generatePersonality('Bob', { seed: 1337 });
console.log(p2.dominanceScore());
// Validate raw input before construction
const { valid, errors } = validatePersonalityInput({ name: 'Carol', traits: { openness: 80 } });npm test
npm run test:coverageKnow thyself — on-chain.
A Web3 personality + astrology app that synthesizes 9 ancient and modern traditions into a single soul map. Built with React + Vite. Payments in USDC on Base. Identity minted as a Soulbound NFT.
Enter your birth date, time, and location. Based Personalities calculates your profile across 9 systems simultaneously:
| System | What It Reveals |
|---|---|
| 🌞 Western Astrology | Sun sign, 12 houses (5 house systems), modality & element |
| 🕉 Vedic Jyotish | Rashi, Nakshatra + Pada, Bhava, Vimshottari Dasha timeline |
| ☯ Mayan Tzolkin | Kin number, Day Sign, Galactic Tone, Haab calendar, Year Bearer |
| ☯ Chinese Zodiac | Animal, element, yin/yang polarity |
| ⊕ Life Path | Pythagorean numerology, master numbers 11/22/33 |
| ◑ MBTI | 16 personality types, cognitive function stack |
| ⬡ Enneagram | 9 archetypes, core wound, shadow & growth paths |
| ◈ Big Five (OCEAN) | Percentile scoring across 5 dimensions |
| ◎ Human Design | Type, Profile, defined/undefined centers |
Then a cross-system Soul Synthesis finds patterns across all active traditions — contradictions, resonances, and your core architecture.
| Tier | Price | NFT | Unlocks |
|---|---|---|---|
| Soul Seed | Free | ◎ Dormant | Astrology (Western, Mayan, Chinese, Life Path) |
| Spark Soul | $1 USDC / test | ◑ Awakening | Any individual personality test, permanently |
| Seeker Soul | $9 USDC / month | ⬡ Illuminated | All tests + AI synthesis (5 analysis sections) |
| Oracle Soul | $12 USDC / year | ✦ Transcendent | Everything + Past Lives section ($1/mo effective) |
Every paid action mints or evolves your Soulbound ERC-721 NFT on Base — a permanent on-chain record of your soul map. NFTs are non-transferable.
The AI panel produces a tiered personality report with sections unlocked by access level:
- Core Wiring — how your MBTI + Enneagram combine into a coherent cognitive style (free preview)
- Career & Purpose — ideal environments, shadow traps, work style (Spark+)
- Love & Relating — attachment style, relationship needs, growth edge (Seeker+)
- Shadow Work — core wound, defense mechanisms, integration path (Seeker+)
- Growth Path — your highest expression across all 9 systems (Seeker+)
- Past Lives / Karmic — Vedic karmic axis, nodal story (Oracle only)
Locked sections are visible but blurred — you can read enough to know you want it.
React 18 + Vite 5
No external UI library — all CSS-in-JS inline styles
No backend — all calculations run in the browser (pure JS)
USDC on Base (L2) for payments
ERC-721 Soulbound NFTs on Base
Fonts: Cinzel Decorative · Cormorant Garamond · JetBrains Mono
git clone https://github.com/yourhandle/based-personalities
cd based-personalities
npm install
npm run devbased-personalities/
├── src/
│ ├── index.js # Public API entry point
│ ├── models/personality.js # Personality class (OCEAN traits)
│ ├── generators/
│ │ └── personalityGenerator.js # Seeded random generation (mulberry32)
│ └── validators/
│ └── inputValidator.js # Input validation (returns errors, doesn't throw)
├── tests/
│ ├── unit/ # Per-module unit tests
│ └── integration/ # Pipeline integration tests
├── docs/ # Static web app (GitHub Pages)
│ ├── index.html
│ ├── app.js
│ └── style.css
└── .github/workflows/pages.yml # Auto-deploy to GitHub Pages on push
| Param | Type | Description |
|---|---|---|
name |
string |
Display name for the personality |
options.seed |
number |
Optional integer seed for reproducibility |
Returns a Personality instance.
| Member | Description |
|---|---|
.name |
Trimmed display name |
.traits |
{ openness, conscientiousness, extraversion, agreeableness, neuroticism } — each 0–100 |
.toJSON() |
Serialise to a plain object |
Personality.fromJSON(data) |
Reconstruct from a plain object |
.dominanceScore(weights?) |
Weighted average of traits (default: equal weights) |
Returns { valid: boolean, errors: string[] }. Never throws.
- Go to Settings → Pages in your GitHub repo
- Set Source to GitHub Actions
- Push to
main— the workflow in.github/workflows/pages.ymldeploysdocs/automatically
- Fork and clone the repo
npm install- Make changes with tests (
npm test) - Open a pull request
MIT