sayNote is a voice-enabled note-taking application built with Expo and React Native. It allows users to create and edit notes using voice commands through a powerful block-based editor.
- Voice-to-text input for quick note creation
- Block-based editor powered by BlockNote.js
- Support for various content blocks (text, headings, lists, etc.)
- Mobile-first design with intuitive UI
- User authentication with Supabase
- Cloud synchronization of notes across devices
- Offline support with local storage
/app
: Expo Router screens and navigation/components
: Reusable UI components/services
: API calls and business logic/hooks
: Custom React hooks/utils
: Helper functions and utilities/models
: Data models and type definitions/contexts
: React context providers
- Clone the repository
- Install dependencies:
npm install
- Set up Supabase:
- Follow the instructions in SUPABASE_SETUP.md to create a Supabase project
- Create a
.env
file with your Supabase credentials:EXPO_PUBLIC_SUPABASE_URL=your-supabase-url EXPO_PUBLIC_SUPABASE_ANON_KEY=your-supabase-anon-key
- Start the development server:
npm start
- Run on iOS or Android:
or
npm run ios
npm run android
- Expo SDK 53+
- React Native
- Expo Router for navigation
- BlockNote.js for rich text editing (via Expo DOM Components)
- Zustand for state management
- Supabase for authentication and data storage
sayNote uses Supabase for user authentication and data synchronization:
- Authentication: Email/password authentication with secure token storage
- Note Storage: Notes are stored in Supabase PostgreSQL database with real-time capabilities
- Offline Support: Notes are cached locally and synced when online
- Sync Status: Visual indicators show sync status in the app
For detailed setup instructions, see SUPABASE_SETUP.md.
This project now includes:
- Complete app structure with bottom tab navigation
- BlockNote editor integration
- Voice input functionality
- User authentication (login, signup, password reset)
- Note synchronization with Supabase
- Offline support
sayNote supports editing content through voice commands, which enables users to format text, select content, replace text, modify blocks, and perform undo/redo operations using their voice.
The following voice command types are available:
-
Text Formatting Commands
- "Make the last paragraph bold"
- "Make the first heading italic"
- "Underline the text that says project timeline"
- "Remove formatting from the selected text"
-
Text Selection Commands
- "Select the last paragraph"
- "Select the text that says project timeline"
- "Select from 'project timeline' to 'next steps'"
- "Select all headings"
-
Content Modification Commands
- "Change the heading 'Ingredients' to 'Required Ingredients'"
- "Replace 'customer feedback' with 'client comments'"
- "Delete everything after 'next steps'"
-
Block Transformation Commands
- "Convert the paragraph about timeline to a bulleted list"
- "Change the first heading to heading level 2"
- "Make this paragraph a quote block"
-
Undo/Redo Commands
- "Undo last change"
- "Redo"
- "Undo the last two changes"
To use voice commands for editing:
- Tap the microphone button to start recording
- Say your command clearly
- Wait for the command to be processed
- Check the feedback toast notification for the result
See the full list of voice commands in VOICE_COMMANDS.md.
- Add support for additional authentication providers
- Implement real-time collaboration features
- Enhance synchronization with conflict resolution
- Add custom templates and themes
- Improve accessibility features
MIT