Gentle
"You just write. Gentle does the rest."
Team AP
Athulya Vempati · Philip Samuel
What is Gentle?
Gentle is a mobile journaling app designed for people living with anxiety, depression, or grief. It's built around a single insight: most mental health apps fail their users by requiring them to already understand what's wrong before the app can help This is precisely what our app is supposed to teach.
Gentle removes this barrier entirely. You open the app and write whatever is on your mind. All therapeutic intelligence happens passively in the background via AI, and insights surface only when you have emotional distance from what you wrote.
The app is a private notebook first and a wellness tool second. Nothing interrupts the act of writing.
The Problem It Solves
Every existing CBT (Cognitive Behavioural Therapy) app requires the user to do the therapeutic work, like identifying distortions and logging moods, consciously and actively. This creates a cruel paradox: the people who most need help are least able to engage with the format when they're at their worst.
Gentle inverts this model. The AI does the pattern recognition. The user just writes. The result is an app that works hardest for the people who have the least capacity to engage with it.
Who it's for:
- Adults managing anxiety, depression, or grief
- People who've found CBT apps too rigid or clinical
- Neurodivergent users for whom structured CBT homework is inaccessible
- Existing journallers who want more from the habit
- Therapy clients wanting to track patterns between sessions
How It Works
- Write freely: open the distraction-free canvas and write whatever is on your mind
- Save: the entry is sent transiently to the AI for analysis, then discarded server-side
- Wait: 24–72 hours later, gentle nudges surface based on what was detected
- Discover: patterns, themes, and reframes appear over time in your own language
AI Features
All AI features are passive and non-intrusive. Nothing interrupts writing.
Cognitive Distortion Detection Identifies patterns like catastrophizing, black-and-white thinking, mind reading, and overgeneralisation from entry text. Surfaces a warm nudge the next day referencing the user's own words, but never as a correction or diagnosis.
The Reframe Archive When a strong distortion is detected, an alternative first-person reframe is generated and stored. After 48–72 hours it surfaces as a card with intentional delay.
Recurring Theme Naming Over weeks, clusters emotional themes using the user's own language (e.g. "The Sunday Dread" rather than "Work Stress"). These appear as soft tappable tags across related entries.
Unsent Letter Detection Detects when an entry is emotionally directed at a specific person and quietly offers to reformat it as an unsent letter to support emotional externalisation.
Anchor Phrase Detection Identifies recurring phrases written in moments of distress and flags them as personal early-warning signals: "You've written 'what's the point' four times this month, always around Mondays. Just something to notice."
Progress Echoes Tracks self-critical language over time and, when genuine improvement is detected, surfaces a comparison between past and present writing.
Monthly Companion Summary Once a month, generates a private narrative summary written like a letter from a thoughtful friend, reflecting on the emotional arc of the month in plain, warm language.
Emotional Web (in development) An interactive spider web visualisation where journal entries are nodes connected to a central emotional theme. Cross-links between entries reveal hidden pattern relationships across themes.
Privacy
- All journal entries stored locally on-device by default using encrypted storage
- Text is sent to the AI transiently for analysis and never stored server-side
- No account required to start
- All cloud features can be disabled entirely for use as a plain offline journal
- No ads, no data selling, no third-party analytics
Technologies
| Layer | Technology |
|---|---|
| Framework | React Native (Expo SDK 55) |
| Navigation | Expo Router (file-based) |
| Language | TypeScript |
| State management | Zustand with persist middleware |
| Local storage | Expo SecureStore (encrypted) |
| AI | Google Gemini 2.0 Flash API |
| Animations | React Native Reanimated |
| Gestures | React Native Gesture Handler |
| List rendering | Shopify FlashList |
| Fonts | Lora (serif), Inter, OpenDyslexic |
| Visualisation | React Native SVG |
| Date handling | date-fns |
Accessibility
- OpenDyslexic font option: toggle in settings, applies to all reading and writing surfaces
- Three text size options: small, medium, large, applied to writing canvas and entry reader
- Reduce motion support: all animations respect the system accessibility setting
- VoiceOver / TalkBack compatible: all interactive elements labelled with accessibility roles
- Minimum 44×44pt tap targets throughout
Running the Project
Prerequisites
- Node.js 18+
- Expo CLI:
npm install -g expo-cli - Xcode (for iOS) or Android Studio (for Android)
Setup
git clone https://github.com/Avemp21/gentle.git
cd gentle
npm install --legacy-peer-deps
Create a .env file in the root:
EXPO_PUBLIC_GEMINI_API_KEY=your_gemini_api_key_here
Run
npx expo start
For full native module support (recommended over Expo Go):
npx expo run:ios
# or
npx expo run:android
Project Structure
gentle/
├── app/ # Expo Router screens
│ ├── (tabs)/ # Tab navigator screens
│ ├── write/ # Writing canvas screens
│ ├── entry/ # Entry detail screens
│ ├── theme/ # Theme detail screens
│ ├── web/ # Emotional web visualisation
│ ├── unsent-letter/ # Unsent letter composer
│ ├── summary/ # Monthly summary reader
│ └── onboarding/ # First-launch onboarding flow
├── components/ # Reusable UI components
├── store/ # Zustand state stores
├── lib/ # AI client, analysis logic, utilities
├── constants/ # Design tokens (colours, typography, spacing)
└── types/ # Shared TypeScript interfaces

Log in or sign up for Devpost to join the conversation.