π§ Perceptive App
Challenge Your Beliefs
βChallenge your beliefs. Evolve your understanding.β
Perceptive is a personal belief-tracking and critical-thinking web app that helps you examine, challenge, and evolve your beliefs over time. Log what you believe, document your evidence and assumptions, receive AI-powered analysis, and track how your beliefs change all in a sleek dark-mode interface.
πΈ Preview
βββββββββββββββββββββββββββββββββββββββββββββββ
β Perceptive [User Name] [Sign Out] β
β Challenge your beliefs β
βββββββββββββββββββββββββββββββββββββββββββββββ€
β π‘ Daily Challenge β
β "What is one belief you've never β
β questioned?" [Self-Reflection] β
βββββββββββββββββββββββββββββββββββββββββββββββ€
β + New Belief β
β Statement | Evidence | Assumptions | β
β Falsifiability β
βββββββββββββββββββββββββββββββββββββββββββββββ€
β Your Beliefs β
β ββ January 2025 ββββββββββββββββββ β
β β "Hard work always leads to success" β
β β [active] β’ Jan 5, 2025 β
β β [Show Details] [Status βΎ] [π] β
βββββββββββββββββββββββββββββββββββββββββββββββ
β¨ Features
π Authentication
Sign in with Email/Password or Google OAuth (mock simulation). Your session and all belief data persist in localStorage between visits.
π‘ Daily Challenge
Every day, a new philosophical prompt is surfaced β deterministically seeded from the date β to spark critical self-reflection. Categories include Self-Reflection, Intellectual Honesty, Falsifiability, Source Analysis, and more.
π Belief Logging
Submit a new belief with four structured fields:
Statement: What do you believe to be true?
Evidence: What supports this belief?
Assumptions: What are you taking for granted?
Falsifiability: What evidence would prove this wrong?
π Belief Status Tracking
Each belief has a lifecycle status you can update at any time:
Status Meaning
π’ Active You currently hold this belief
π‘ Modified Youβve refined or partially changed it
π΄ Replaced This belief has been superseded by a new one
π€ AI Analysis
Trigger on-demand analysis on any belief. The engine detects linguistic patterns absolutes (always, never), generalizations (everyone, nobody), obligations (should, must), and comparatives (better, worse) and returns:
Hidden Assumptions: Implicit claims embedded in your belief
Counter-Arguments: Challenges to probe the beliefβs validity
Confidence Score : A simulated certainty rating
ποΈ Timeline View
All beliefs are grouped chronologically by month, displayed in a vertical timeline. Empty states are handled gracefully with a prompt to add your first belief.
ποΈ Project Structure
src/
βββ App.tsx # Root β auth gate, layout, main state
βββ types/
β βββ belief.ts # Belief, BeliefStatus, AIAnalysis interfaces
β βββ auth.ts # User interface
β βββ index.ts # PerceptionEntry, Reflection interfaces
βββ hooks/
β βββ useAuth.ts # Auth state, signIn/signOut, localStorage sync
β βββ useBeliefs.ts # CRUD for beliefs, localStorage persistence
β βββ usePerceptions.ts # Perception entry management
βββ components/
β βββ AuthScreen.tsx # Login page (Email + Google OAuth)
β βββ DailyChallenge.tsx # Date-seeded daily philosophical prompt
β βββ BeliefForm.tsx # Form to add a new belief (4 fields)
β βββ BeliefCard.tsx # Individual belief card with expand/collapse
β βββ AIAnalysis.tsx # AI insight trigger & results display
β βββ Timeline.tsx # Month-grouped belief timeline
β βββ EntryCard.tsx # Perception entry card
β βββ EntryList.tsx # List of perception entries
β βββ InsightBadge.tsx # Badge component for insights
β βββ JournalForm.tsx # Journal/reflection form
βββ utils/
βββ mockAI.ts # AI analysis engine (pattern-based NLP)
βββ challenges.ts # 7 philosophical challenge prompts + daily selector
βββ storage.ts # localStorage read/write helpers
βββ localStorage.ts # Additional storage utilities
π Getting Started
Prerequisites
Node.js β₯ 18
npm or yarn
Installation
# Clone the repository
git clone https://github.com/your-username/perceptive.git
cd perceptive
# Install dependencies
npm install
# Start the development server
npm run dev
Open
http://localhost:5173
in your browser.
Build for Production
npm run build
npm run preview
π οΈ Tech Stack
Technology Purpose React 18 UI framework with hooks-based state management TypeScript Fully typed data models and component props Tailwind CSS Dark-mode utility-first styling (slate palette) shadcn/ui Card, Button, Input, Select, Label components Lucide React Icons (Brain, Lightbulb, LogOut, Trash2, etc.) date-fns Date formatting for timeline grouping localStorage Client-side persistence for user & belief data Vite Fast development and production build tool
Key Implementation Details
Auth Flow
Authentication is fully mocked on the client. useAuth loads a saved user from localStorage on mount. Sign-in creates a new User object with crypto.randomUUID() and saves it. Google OAuth is simulated with a 1-second delay.
This is a frontend-only prototype. For production, replace the mock auth in
useAuth.tswith a real provider (Firebase Auth, Supabase, Auth0, etc.).
Daily Challenge Algorithm
The daily prompt is seeded deterministically from the current date string β no backend required:
const index = today.split("").reduce((acc, char) => acc + char.charCodeAt(0), 0)
% PHILOSOPHICAL_CHALLENGES.length;
This ensures every user sees the same challenge on the same day.
AI Analysis Engine
The analyzeBelief() function in mockAI.ts performs keyword-based linguistic analysis to surface hidden assumptions and counter-arguments. It checks for:
Absolutes β
always,neverUniversal claims β
everyone,nobody,allImperatives β
should,must,oughtComparatives β
better,worseCertainty markers β
know,certain
π‘ To upgrade to real AI analysis, replace
analyzeBelief()with an API call to OpenAI, Claude, or another LLM provider.
Data Persistence
All data is stored in localStorage under two keys:
perceptive_beliefsβ array ofBeliefobjectsperceptive_userβ current authenticatedUser
π¬ Philosophy
βThe first principle is that you must not fool yourself and you are the easiest person to fool.β : Richard Feynman
Perceptive is built on the idea that intellectual honesty requires actively stress-testing what we believe, not just defending it.











