JournAI is a modern mobile application that transforms your voice recordings into searchable journal entries using advanced AI transcription. Built with React Native and Expo, it offers a seamless journaling experience with features like real-time audio visualization, mood tracking, and category organization.
- Voice Recording: High-quality audio recording with visual feedback and duration tracking
- AI Transcription: Powered by Whisper.cpp for accurate speech-to-text conversion
- Rich Journal Entries:
- Audio playback with speed control
- Text editing capabilities
- Mood tracking (Happy, Neutral, Sad)
- Category tagging
- Smart Organization:
- Search through entries
- Filter by categories
- Sort by date
- Modern UI/UX:
- Real-time audio visualization
- Smooth animations
- Intuitive controls
- Node.js (v16 or later)
- npm or yarn
- Expo CLI
- iOS Simulator or Android Emulator (for development)
- Xcode (for iOS development)
- Android Studio (for Android development)
-
Clone the repository:
git clone https://github.com/yourusername/journai.git cd journai
-
Install dependencies:
npm install
-
Install iOS dependencies:
cd ios pod install cd ..
-
Start the development server:
npm start
-
For iOS:
npm run ios
-
For Android:
npm run android
The app is built using:
- React Native with Expo
- React Native Reanimated for smooth animations
- Expo AV for audio recording and playback
- AsyncStorage for local data persistence
- Whisper.cpp for AI transcription
- RecordingInterface: Handles audio recording with visual feedback
- AudioPlayer: Custom audio player with playback speed control
- JournalEntryItem: Displays and manages individual journal entries
- TranscriptionService: Manages Whisper model and transcription
journai/
├── app/
│ ├── components/
│ │ ├── AudioPlayer.tsx
│ │ ├── JournalEntryItem.tsx
│ │ ├── RecordingInterface.tsx
│ │ └── ...
│ ├── services/
│ │ └── TranscriptionService.ts
│ ├── types.ts
│ └── index.tsx
├── assets/
└── ...
-
Whisper Model Download Fails
- Check your internet connection
- Try using the redownload button in the app header
- Verify device storage has enough space
-
Audio Recording Issues
- Ensure microphone permissions are granted
- Check audio settings in device settings
- Try closing other apps using the microphone
-
App Performance
- Clear app cache if experiencing slowdown
- Ensure device has sufficient free storage
- Consider removing old journal entries if needed
-
"Failed to initialize transcription service":
- Check internet connection
- Verify storage permissions
- Try redownloading the Whisper model
-
"Error recording audio":
- Check microphone permissions
- Restart the app
- Verify no other apps are using the microphone
- iOS: Version 13.0 or later
- Android: API Level 21 (Android 5.0) or later
- All audio processing is done on-device
- No data is sent to external servers
- Journal entries are stored locally on your device
We welcome contributions! Please follow these steps:
- Fork the repository
- Create a feature branch
- Commit your changes
- Push to the branch
- Create a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
If you encounter any issues or have questions:
- Check the troubleshooting guide above
- Open an issue on GitHub
- Contact the development team
- Whisper.cpp for the transcription model
- React Native and Expo teams
- All contributors and users