What it does
Tusko brings daily planning into one mobile app. It combines pages and notes, task lists, calendar views, habit tracking, tags, personal settings, and a home dashboard so users can organize their day without moving between separate tools.
Block editor
The core of the app is a Notion-style block editor. Users can add text, headings, todos, lists, quotes, callouts, code blocks, dividers, media, files, embeds, tasks, tables, board views, calendar views, databases, tags, timers, countdowns, and quick notes through a searchable slash menu. Blocks can be edited, reordered, converted between types, and stored page by page.
Local-first storage
Tusko stores data locally through AsyncStorage-backed repositories for pages, blocks, tasks, events, habits, and tags. A lightweight JSON cache keeps reads responsive, while repository modules keep feature logic separate from persistence details and allow the app to remain useful offline.
Media and export
The app uses native mobile capabilities for camera access, gallery selection, document picking, audio, video, and file attachments. Expo Print converts notes into styled PDF exports with support for rich text, tables, task lists, progress blocks, boards, calendars, databases, tags, and media placeholders.
Privacy and app lock
Settings are stored in Expo SecureStore when available, with AsyncStorage as a fallback. The app lock uses salted hashing through Expo Crypto, supports recovery answers, and includes migration logic for older lock data so privacy features can evolve without breaking existing users.
What I learned
This project strengthened my understanding of structuring a larger React Native application around feature modules, local repositories, native device APIs, offline persistence, editor state, export rendering, navigation stacks, and security-sensitive settings.