A private, emotion-aware journaling web app that helps users express their feelings safely and receive gentle AI feedback, visualized emotional reports, and music suggestions — all stored locally for full privacy.
- Text and Voice Input: Type your thoughts or use speech-to-text via Web Speech API
- Daily Entries: Each entry is timestamped and editable
- Optional Tags: Organize entries with custom tags (dreams, relationships, study, etc.)
- Empathetic AI: LLM generates conversational, supportive responses
- Multiple Modes:
- Comfort Mode: Warm emotional support
- Reflective Mode: Deep, thoughtful replies
- Poetic Mode: Artistic and lyrical responses
- Therapist Mode: Professional and validating
- Rational Mode: Logical and analytical
- Sentiment Detection: Positive, neutral, or negative classification
- Emotion Recognition: Joy, sadness, anger, anxiety, nostalgia, peace, love
- Color-Coded Bubbles: Each emotion represented by a unique color
- Emotion Timeline: Visual history of your emotional journey
- Daily Snapshots: Color-coded emotional summaries
- Inspirational Quotes: AI-generated quotes based on your mood
- Music Suggestions: Lofi and ambient music recommendations
- Floating Animations: Soothing breathing rhythm animations
- Local Storage: All data stored in IndexedDB on your device
- No Cloud Sync: Your entries never leave your device (unless you export)
- Encrypted Backup: Optional JSON export for manual backup
- Companion Personality: Choose how your AI companion responds
- Themes: Morning Light, Night Calm, Forest Mist, Ocean Breeze, Nebula
- Voice & Music: Toggle features on/off
| Layer | Technology | Purpose |
|---|
| Frontend | Next.js 15 (React 19) | UI rendering, routing |
| Styling | TailwindCSS + Framer Motion | Smooth animations & transitions |
| Database | IndexedDB (Dexie.js) | Local diary storage |
| AI Integration | OpenAI GPT-4 API | Companion dialogue & mood reflection |
| Audio | Web Speech API + Howler.js | Voice input + music playback |
| TypeScript | Full type safety | Enhanced development experience |
-
Clone or download this project
-
Install dependencies
cd invisible-journal
npm install
- Set up environment variables
Create a
.env.local file (optional - you can also enter the API key in the app):
NEXT_PUBLIC_OPENAI_API_KEY=your_openai_api_key_here
- Run the development server
npm run dev
- Open your browser
Navigate to http://localhost:3000
- When you first open the app, you'll be prompted to enter your OpenAI API key
- The key is stored locally in your browser's localStorage
- Choose your preferred companion personality in Settings
- Click "Write a new journal" on the home page
- Type your thoughts or click the microphone icon for voice input
- Click "Save privately" to submit
- Your AI companion will respond with empathy and insights
- A mood bubble will appear showing your detected emotion
- Timeline: See all your entries in chronological order
- Reports: View daily mood reports with quotes and music suggestions
- Settings: Customize your experience and manage your data
- Go to Settings
- Click "Export Data"
- A JSON file will download with all your entries, settings, and reports
| Emotion | Color | Hex |
|---|
| Joy | Soft Yellow | #FFEAA7 |
| Sadness | Deep Blue | #74B9FF |
| Anxiety | Pale Red | #FAB1A0 |
| Peace | Mint Green | #81ECEC |
| Nostalgia | Lavender | #A29BFE |
| Anger | Warm Orange | #E17055 |
| Love | Blush Pink | #FDA7DF |
| Neutral | Light Gray | #DFE6E9 |
- All data is stored locally in your browser's IndexedDB
- No server communication except for OpenAI API calls
- Your API key is stored in localStorage (never sent to our servers)
- No tracking or analytics - your journal is completely private
- Export anytime - you own your data
This is a personal project, but suggestions and feedback are welcome! Feel free to:
- Open an issue for bugs or feature requests
- Submit a pull request with improvements
- Share your experience using the app
MIT License - feel free to use this project for personal or educational purposes.
- Built with Claude Code
- Inspired by the need for private, empathetic digital journaling
- Designed with care for emotional wellbeing
This app is not a replacement for professional mental health care. If you're experiencing serious emotional distress, please seek help from a qualified therapist or counselor.
Made with 💜 for your emotional wellbeing