A personal writing and note-taking studio blending the elegance of Apple Pages, the creative freedom of Canva, and immersive storytelling tools.
- Rich-text editor (Tiptap) with full formatting and markdown support
- Google Fonts integration with full color picker
- Persistent dark/light mode toggle
- Local data storage (IndexedDB)
- Multi-format export: .txt, .md, .pdf, .odf
- ChatGPT Web integration - Free, no API keys required (opens in popup)
- Sidebar with user-managed API credentials
- Support for OpenAI, Anthropic, and Google Gemini
- Optional OpenAI ChatKit integration for rich agent workflows
- Streaming responses
- Context-aware assistance with selected text
- Journal, Letter, Poetry, Story, and Blank templates
- Template selector with previews
- Morning exercises with preset and AI-generated prompts
- Image attachments with drag-and-drop
- Pinterest integration - Search and import images directly from Pinterest
- Character management
- World building tools
- Multiple projects with organization
- Document management per project
- Search and filter capabilities
- Frontend: React 19, Vite, TypeScript
- Editor: Tiptap + ProseMirror
- Styling: TailwindCSS 4
- State Management: Zustand
- Database: IndexedDB (Dexie.js)
- Testing: Vitest, Playwright
- Node.js 20+
- npm or yarn
Inkwoven is available as a Progressive Web App (PWA) for iOS devices. See iOS Setup Guide for:
- Installing as PWA on iPhone/iPad
- Creating a native iOS app with Capacitor
- App Store distribution
npm install --legacy-peer-deps-
Copy the example environment file:
cp .env.example .env
-
Edit
.envand add your Figma API credentials (optional, only needed for design token sync):FIGMA_FILE_KEY=your_figma_file_key FIGMA_API_TOKEN=your_figma_api_token
-
(Optional) For OpenAI ChatKit integration, add:
VITE_CHATKIT_WORKFLOW_ID=wf_your_workflow_id_here
Get your workflow ID from OpenAI Agent Builder
-
(Optional) For upcoming Google/Gemini OAuth integrations, add:
GOOGLE_OAUTH_CLIENT_ID=your_google_client_id GOOGLE_OAUTH_CLIENT_SECRET=your_google_client_secret
Note: The
.envfile is gitignored for security. Never commit it to version control.
npm run devnpm run buildnpm testsrc/
├── components/ # React components
├── db/ # Database services
├── lib/ # Utilities and services
├── stores/ # Zustand stores
├── types/ # TypeScript types
└── hooks/ # Custom React hooks
Design tokens are managed in design-tokens/tokens.json and can be synced from Figma using the GitHub Actions workflow or by running:
node scripts/sync-figma-tokens.js- Never commit
.envfiles containing API keys or tokens - Use GitHub Secrets for CI/CD workflows
- All user data is stored locally in IndexedDB (no backend required)
MIT