FlowSense is a calm, document-first writing workspace for university students. It brings long-form writing, personal organization, and lightweight writing support into one warm, focused environment.
Write first. Organize naturally. Improve thoughtfully.
FlowSense is designed to feel closer to a professional writing tool than a notes inbox. Documents can be written on paginated A4-style paper, organized into Spaces, tagged, searched, revisited, and exported.
The application is local-first: drafts, Spaces, metadata, and preferences are stored in the browser so the core writing flow remains fast and available without an account or cloud setup.
- ✍️ Focused, paginated A4 writing canvas built for long-form documents
- 🗂️ Lightweight organization with Spaces, tags, and quick moving/duplication
- 🔎 Fast, instant search across titles, content, tags, and Spaces
- 📄 Export to PDF, Word, and plain text with clear multi-page output
- 🧭 Simple insights: today’s words, most active Space, and document stats
- ⚡ Local-first autosave and optional local writing suggestions (no account required)
FlowSense now supports three writing modes: flowing Notes for quick capture, spacious Journals for personal entries, and paginated A4 Documents for print-oriented work. Existing saved documents keep Document mode for backward-compatible layout.
- A4-inspired paginated writing canvas with fixed margins and page numbers for Document mode
- Flowing editor canvases for Note and Journal mode
- Long-form typography with a warm paper palette
- Editable document title, Space, writing mode, status, and tags
- Statuses for Draft, In Progress, Finished, and Archived
- Favorite documents and Focus Mode
- Autosave feedback with
Saving...andSaved just nowstates - Keyboard shortcuts:
Cmd/Ctrl + Sto save andCmd/Ctrl + Shift + Ffor Focus Mode
- Personal Library with Recent Documents and Favorites
- Default Spaces for Projects, Career, Research, and Personal
- Custom Spaces with Lucide-based icons
- Optional
No space yetassignment for uncategorized writing - Move documents between Spaces
- Duplicate, rename, delete, and favorite documents
- Multi-select with bulk move and bulk delete
- Backward-compatible migration for older saved drafts
- Instant search across document titles, content, tags, and Spaces
- Sorting by recently edited, oldest, alphabetical, and word count
- Related Documents based on shared Space or tags
- PDF export with explicit multi-page output and page numbers
- Word document export
- Plain text export
- Optional writing suggestions through the existing local API service
- Words written today
- Total document count
- Average document length
- Most active Space
- Longest document
- Favorite document context
- Writing-practice summary
src/
├── components/
│ ├── editor/ # A4 editor, metadata, tags, related documents, toolbar
│ ├── home/ # Continuation-focused Home experience
│ ├── insights/ # Writing dashboard
│ ├── layout/ # Navigation and application shell
│ └── library/ # Library, Spaces, cards, search, and actions
├── hooks/
│ ├── useDocuments.ts
│ └── useSpaces.ts
├── styles/
└── App.tsx
The document model is normalized in src/components/library/types.ts. Legacy records using text and savedAt are migrated into the current content, metadata, Space, status, and tag fields when loaded.
- React 19
- TypeScript
- Vite
- Tailwind CSS
- Lucide React
- Express local API service
- jsPDF
- docx
- FileSaver
- Node.js 18 or newer
- npm
npm installnpm run devIn a separate terminal:
node server.jsThe frontend uses http://localhost:3001 by default for writing suggestions. Set VITE_API_URL in .env to use another local endpoint.
npm run buildnpm run lintFlowSense follows a small set of product principles:
- Writing should always be more prominent than assistance.
- Organization should be available without becoming overhead.
- Metadata should support retrieval, not distract from writing.
- The interface should feel warm, quiet, and intentional.
- New features should extend the document model instead of creating parallel state.
Planned work includes richer tag management, more advanced document relationships, improved writing analytics, and future intelligent assistance. These features should build on the existing normalized model.
Thanks for taking an interest in FlowSense — contributions are welcome. A short guideline to get started:
- Fork the repository and create a feature branch:
git checkout -b feat/your-feature - Install dependencies:
npm install - Run the app locally:
npm run dev - Make changes, add tests where appropriate, and keep commits small and focused
- Open a pull request with a clear title and description referencing any related issues
Please follow these basics when opening a PR:
- Write a short summary of the change and why it’s needed
- Link to any related issue(s)
- Include screenshots or recordings for UI changes
- Ensure linting passes:
npm run lint
If you want to propose a larger design or API change, open an issue first to discuss.
This project is currently an internal product prototype. Add a project-specific license before external distribution.
Built with ❤️ by Keerti • Internal prototype.