A lightweight, offline-first note-taking app for React Native (Expo) with PDF export.
Penote is a modern mobile note app with:
- local persistence via
@react-native-async-storage/async-storage - search (title/body)
- pin/favorites support
- create and edit notes
- export note as PDF (
expo-print+expo-sharing) - onboarding on first launch
- dark/light theme based on system color scheme
App.js— navigation and onboarding logicscreens/HomeScreen.js— notes list, search, pin, delete, export, createscreens/EditScreen.js— create/edit note formscreens/FavoritesScreen.js— pinned notes viewscreens/OnboardingScreen.js— initial setup prompttheme.js— light/dark color palettecomponents/Logo.js— app icon component
- Node.js
- Expo CLI (
npm install -g expo-cli) - Android Studio or Xcode (emulators) or Expo Go on device
cd penote
npm installexpo startUse the QR code, or run a / i for Android / iOS emulator.
react-nativeexpo@react-native-async-storage/async-storage@react-navigation/native@react-navigation/native-stack@react-navigation/bottom-tabsexpo-printexpo-sharinglucide-react-nativeuuid
- Notes stored in AsyncStorage key
notes_v1 - Onboarding flag stored as
has_onboarded - Pinned notes (
isPinned) appear first and in theFavoritestab - Edit saves
/updates note metadata (createdAt,updatedAt) - PDF export sanitizes and formats content
- First launch onboarding should show once
- Add note (title and/or body)
- Edit existing note
- Pin and unpin notes
- Search by title/body
- Export note to PDF and share
- Delete note with confirmation
- Switch dark/light system theme
- Undo delete
- Bulk export and multi-select actions
- Cloud sync (Dropbox, Google Drive)
- Markdown support
- Internationalization
Choose your license (e.g., MIT).