Loading repository data…
Loading repository data…
Lalit-Rajpurohit / repository
📒 Offline-first React Native app blending notes, Kanban boards & a linked knowledge vault. Expo + TypeScript + SQLite (FTS5).
Your notes, tasks & knowledge in one calm vault.
An offline-first React Native app that blends a note‑taking app, a Trello‑style task board, and an Obsidian‑style personal knowledge vault — with its own clean visual identity. No backend, no account, everything stored locally on device.
| Home dashboard | Notes | Note editor |
|---|---|---|
| Kanban board | Card editor | Vault / graph |
| Tasks | Tags & folders | Settings |
| Quick add | Backup & restore | Onboarding |
[[wiki links]] and see backlinks on every note; a lightweight knowledge‑graph hint in the Vault.| Concern | Choice |
|---|---|
| Runtime | Expo (managed) + TypeScript |
| Navigation | React Navigation (native‑stack + bottom‑tabs) |
| State | Zustand (thin slices over the DB) |
| Persistence | expo‑sqlite with an FTS5 virtual table + triggers |
| Animation / gesture | Reanimated 4, Gesture Handler, draggable‑flatlist |
| Validation | Zod |
# 1. Install dependencies
npm install
# 2. Run in a development build (Expo Go won't include the native modules)
npx expo start --dev-client
On first launch the database is migrated and seeded with realistic demo content (linked notes, a populated "Sprint Board", tasks, tags, and folders) so the app feels alive immediately.
The native android/ project is generated (not committed), so regenerate it first:
# Generate the native project from app.json
npx expo prebuild --platform android
# Build the release APK (needs JDK 17 or 21)
cd android
./gradlew assembleRelease
# → android/app/build/outputs/apk/release/app-release.apk
src/
navigation/ RootNavigator, BottomTabs, typed routes
screens/ home · notes · boards · vault · tasks · search · settings · onboarding
components/
ui/ design-system primitives (Text, Surface, Button, Chip, BottomSheet, FAB…)
notes/ MarkdownView, NoteCard
boards/ KanbanColumn, KanbanCard, CardDetailSheet
tasks/ TaskRow
vault/ GraphHint
store/ zustand slices: settings, notes, boards, tasks, library, ui
db/ sqlite client, schema, migrations, FTS, seed, query modules
services/ attachments (image picker), export (JSON / Markdown)
theme/ tokens, palettes, ThemeProvider, useThemedStyles
hooks/ useDebounce, useAutosave, useKeyboardHeight, useRefreshOnFocus
types/ utils/ shared domain types & helpers (date, id, text, validation)
SQLite tables: notes, folders, tags, note_tags, note_links (backlinks), boards, columns, cards, card_labels, checklist_items, tasks, attachments, settings, plus a notes_fts virtual table kept in sync by triggers. See src/db/schema.ts.
Scaffolded with hooks/TODOs and ready to finish:
MIT © Lalit Rajpurohit