A modern, local-first web application for tracking, scoring, and analyzing decisions using a structured dimension-based approach.
Decision Tracker helps you make better choices by breaking down complex decisions into measurable dimensions (e.g., Logic, Emotion, Financial, Long-term impact). It allows you to score these dimensions, categorizes your decisions, and provides insights over time to improve your decision-making process.
- Structured Decision Making: Evaluate choices across customizable dimensions
- Scoring System: Visual score badges to quickly assess decision quality
- History & Analytics: Track past decisions and view aggregated insights
- Local Storage: All your data stays on your device (browser local storage)
- Tagging & Categorization: Organize decisions by context
This project is built with a modern frontend stack:
- Framework: React 19 + TypeScript
- Build Tool: Vite
- Routing: React Router v6
- Styling: Tailwind CSS v4
- State Management: Custom React Hooks + LocalStorage
- Icons & UI: Heroicons (assumed/suggested based on typical stacks for these apps), custom components
src/
├── app/ # App setup, Layout, and Router root
├── assets/ # Static assets (images, icons)
├── components/ # Reusable UI components
│ └── ui/ # Foundational components (Button, Card, Input, etc.)
├── hooks/ # Custom React hooks (useDecisions, useInsights, etc.)
├── lib/ # Utilities, constants, and business logic
│ ├── scoring.ts # Logic for calculating decision scores
│ ├── storage.ts # LocalStorage wrapper
│ └── ...
├── pages/ # Route components (Dashboard, History, New Decision, etc.)
├── styles/ # Global CSS (Tailwind imports)
└── types/ # TypeScript type definitions
- Node.js (v18+ recommended)
- npm or yarn or pnpm
- Clone the repository
- Install dependencies:
npm installStart the development server with Hot Module Replacement (HMR):
npm run devCompile TypeScript and build the Vite project:
npm run buildPreview the production build locally:
npm run previewRun ESLint to check for code quality and formatting issues:
npm run lintThis application is entirely local-first. All decisions, tags, and preferences are stored using your browser's localStorage. No data is sent to external servers.