Skip to content

kks0488/mystats

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

98 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MyStats Logo

🧠 MyStats

AI-Powered Self-Discovery & Career Strategy Engine

Transform your scattered thoughts into actionable intelligence.
Powered by Gemini, OpenAI, Claude, and Grok - built for thinkers who refuse to settle.

Features · 3-Step Guide · Demo · PWA · Quick Start · Memory · Tech Stack · Contributing

React 19 TypeScript Multi-AI Ready Vite MIT License

GitHub Stars GitHub Forks


✨ Why MyStats?

"Most productivity apps ask what you did. MyStats decodes who you are."

We don't just track your activities — we uncover your hidden patterns, identify your psychological archetypes, and generate personalized strategies that leverage your unique strengths.

📓 Journal Entry → 🧠 AI Analysis → 👤 Deep Profile → ⚡ Custom Strategy

🎯 Features

🧬 Neural Memory Journal

Write freely. Our AI doesn't just save — it decodes. Every entry is analyzed for:

  • Skills (Hard & Soft)
  • Personality Traits & Patterns
  • Hidden Archetypes (e.g., "The Architect of Systems" 시스템의 설계자)
  • Critical Questions you should be asking yourself
  • Journal Explorer: search + multi-filter (date range, entry type, has-insight, skill categories)
  • Draft Auto-Save: automatic draft preservation and restore with notification
  • Ctrl+Enter (Cmd+Enter) keyboard shortcut to save

🧠 memU Memory System (Embedded)

MyStats now includes a built-in memU-compatible memory layer:

  • Embedded mode (default): runs entirely in the browser (no server required)
  • Uses your Journal entries as memory for retrieval + similarity checks
  • Strategy generation can automatically pull relevant memories as extra context

🤖 Multi-AI Provider Switch

Bring your own API key and choose your brain:

  • Gemini
  • OpenAI
  • Claude
  • Grok

🪞 Deep Intelligence Profile

Your cumulative psychological map — built from every journal entry. See:

  • Existential Archetypes
  • Hidden Behavioral Patterns
  • Critical Life Questions
  • Skill & Interest Radar
  • Rebuild AI Profile: one-click reanalysis of all journal entries to regenerate skills and insights

Neural Strategy Engine

Describe a problem. Get a ruthlessly personalized solution:

  • Unfair Advantage Analysis (What makes YOU uniquely positioned?)
  • Mental Model Application (First Principles, 80/20, Inversion...)
  • Concrete Action Plans
  • Personal Blind Spot Warnings
  • Strategy Vault: save, search, load, edit, copy, and delete generated strategies
  • Context Builder: manually select skills, archetypes, and journal entries as extra context

📱 Installable PWA (No App Store Needed)

MyStats can be installed like an app on mobile/desktop via PWA:

  • iOS/Android: add to Home Screen / Install app
  • Offline-friendly app shell caching (data stays local-first)

☁️ Cloud Sync (Beta, Optional)

If you sign in, you can sync your data across devices via Supabase.

Current sign-in methods:

  • Google OAuth
  • GitHub OAuth (optional)
  • Email + Password

Notes:

  • After OAuth redirect, the app processes the session and removes any auth tokens from the URL.
  • You must configure Supabase redirect URLs to allow your local and deployed domains (see docs/CLOUD_SYNC.md).

📘 3-Step Usage Guide

"Input your raw thoughts, AI generates your life strategy guide."

1) Add an API Key

MyStats is local-first with no backend.

  • Setup: Settings → API Key → Save
  • Recommended: Google Gemini (free)
  • Privacy: Your key/data stay only in your browser (no servers).

Optional: Settings → memU Integration → keep Embedded to enable local memory retrieval from your journal.

2) Journal Freely

Write anything in Journal (no format required).

  • Life path, skills/weaknesses, wins/fails, current struggles
  • Tip: The more specific, the sharper the analysis.

3) Get Insights

Once you have entries, the AI turns them into insight.

  • 🎯 Strategy: A personalized plan based on your stats
  • 🧠 Profile: Hidden patterns + deep questions for growth

🎬 Demo

🎮 Try it now: https://mystats-eta.vercel.app


📲 Install as an App (PWA)

iOS (Safari)

  1. Open the demo link in Safari
  2. Tap Share
  3. Tap Add to Home Screen

Android (Chrome)

  1. Open the demo link in Chrome
  2. Tap Install app (or ⋮ menu → Install app)

Note: MyStats is local-first. Without cloud sync, your data is stored per device/browser.

🧩 Chrome "App" (Toolbar Launcher Extension)

If you want MyStats to behave like a simple Chrome app launcher, you can load the included extension:

  1. Open chrome://extensions
  2. Enable Developer mode
  3. Click Load unpacked
  4. Select mystats/chrome-extension/

Click the MyStats icon in the toolbar to open (or focus) the PWA.


🚀 Quick Start

Prerequisites

Installation

# Clone the repository
git clone https://github.com/kks0488/mystats.git
cd mystats

# Install dependencies
npm install

# Start dev server
npm run dev

Setup

  1. Open the app in your browser (check the terminal output; default is http://localhost:5178)
  2. Go to the Dashboard
  3. Enter your API Key (Gemini, OpenAI, Claude, or Grok)
  4. Start journaling!

🧠 Memory System (memU)

MyStats ships with a memU-compatible memory layer that improves retrieval and strategy context.

Embedded (default)

  • Runs fully in the browser — no server required
  • Uses your Journal entries as the memory store (IndexedDB / fallback local storage)
  • Provides:
    • retrieve (top-K similar memories)
    • check-similar (similarity-based duplicate detection)

Server (optional)

If you already run a local memU server, you can switch to Server (API) in Settings to:

  • Use the memU REST API endpoint
  • Optionally include project-registry memories in Strategy

🛠 Tech Stack

Category Technology
Framework React 19 + Vite 7
Language TypeScript 5.9 (Strict Mode)
Styling Tailwind CSS 3 + shadcn/ui
Animation Framer Motion
AI Engine Gemini / OpenAI / Claude / Grok (BYOK)
Local DB IndexedDB (via idb) + localStorage fallback
Cloud Sync Supabase (Auth + Postgres, optional)
Memory memU (embedded browser engine or API server)
Validation Zod 4
Icons Lucide React
Routing React Router 7
Error Tracking Sentry (optional, lazy-loaded)
PWA vite-plugin-pwa (Workbox)
Testing Vitest + Testing Library + Playwright (E2E)
CI/CD GitHub Actions (CI + CodeQL + Secret Scan) → Vercel

📂 Project Structure

mystats/
├── src/
│   ├── bootstrap/
│   │   └── appInit.ts           # App initialization (Sentry, DB migration, OAuth, Cloud Sync)
│   ├── components/
│   │   ├── layout/              # Shell (app frame, navigation, page transitions)
│   │   ├── ui/                  # shadcn/ui primitives (Button, Card, Badge, Input, Textarea…)
│   │   ├── ErrorBoundary        # Global crash boundary + debug report
│   │   └── PwaUpdatePrompt      # SW update / offline-ready toast
│   ├── db/
│   │   ├── db.ts                # IndexedDB schema, migrations, CRUD helpers
│   │   └── fallback.ts          # localStorage / in-memory fallback storage
│   ├── hooks/
│   │   ├── useLanguage.ts       # i18n context consumer hook
│   │   └── useDbRecovery.ts     # Automatic fallback → DB recovery
│   ├── lib/
│   │   ├── ai-provider.ts       # Multi-AI engine (Gemini/OpenAI/Claude/Grok)
│   │   ├── backup.ts            # Export/import backup logic
│   │   ├── cloudSync.ts         # Supabase Cloud Sync logic
│   │   ├── cloudSyncManager.ts  # Auto-sync orchestrator
│   │   ├── debug.ts             # Debug snapshot report
│   │   ├── journalExplorer.ts   # Journal search/filter engine
│   │   ├── memu.ts              # memU memory system (embedded + server API)
│   │   ├── memu.worker.ts       # memU Web Worker for background processing
│   │   ├── sentry.ts            # Sentry lazy loader
│   │   ├── supabase.ts          # Supabase client init
│   │   ├── tombstones.ts        # Soft-delete tracking for cloud sync
│   │   ├── translations.ts      # EN/KO translation strings
│   │   ├── LanguageProvider      # React context provider for i18n
│   │   ├── LanguageContext       # Language context definition
│   │   └── utils.ts             # Shared utilities (cn, normalizeSkillName, generateId…)
│   ├── pages/
│   │   ├── Home.tsx             # Dashboard with stats & quick start
│   │   ├── Journal.tsx          # Neural memory journal (write + AI analyze)
│   │   ├── Profile.tsx          # Deep intelligence profile (skills, archetypes)
│   │   ├── Strategy.tsx         # AI strategy engine + Vault + Context Builder
│   │   ├── Settings.tsx         # Orchestrates settings sub-cards
│   │   ├── journal/
│   │   │   └── draftStorage.ts  # Draft auto-save/restore
│   │   └── settings/
│   │       ├── AISettingsCard        # API key/provider/model settings
│   │       ├── CloudSyncCard         # Cloud sync sign-in/config
│   │       ├── DataManagementCard    # Export/import/reset controls
│   │       └── MemuSettingsCard      # Memory system settings
│   └── test/                    # Test setup (Vitest + jsdom)
├── e2e/                         # Playwright E2E tests
├── scripts/                     # Deployment helper scripts
├── chrome-extension/            # Chrome toolbar launcher extension
├── docs/                        # Additional documentation
├── supabase/                    # Supabase SQL migrations
├── public/                      # Static assets, PWA manifest, icons
├── .github/                     # CI workflows, issue/PR templates, dependabot
└── package.json

🌍 Internationalization

MyStats supports:

  • 🇺🇸 English
  • 🇰🇷 한국어 (Korean)

Toggle language in the header.


🗒️ Release Notes

See CHANGELOG.md.


🔒 Privacy First

  • Local-first by default: Journals/skills/insights are stored in your browser (IndexedDB)
  • No mandatory backend: no tracking, no data collection
  • Your API Key: direct connection to your provider in BYOK mode (we never see it)
  • memU Embedded: runs locally in the browser
  • memU Server (optional): in API mode, entries may be sent to your local memU service
  • Cloud Sync (optional): only when you sign in and enable it
  • Export Anytime: Download your data as JSON

🤝 Contributing

We love contributions! Please see our Contributing Guide.

# Fork & Clone
git clone https://github.com/kks0488/mystats.git

# Create feature branch
git checkout -b feature/amazing-feature

# Commit changes
git commit -m "feat: add amazing feature"

# Push & create PR
git push origin feature/amazing-feature

📜 License

MIT License - see LICENSE for details.


🙏 Acknowledgements


⭐ If this helped you, give it a star!

Built with 🧠 + ☕ by @kks0488

About

🧠 Local-first AI journal & career strategy engine. Multi-provider: Gemini, OpenAI, Claude, Grok.

Topics

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages