Charisol Spark
A digital workspace and companion for thought. Charisol Spark is built for creators, writers, and thinkers who need focus and clarity — helping users structure raw ideas (poetry, articles, research) without the intimidation or friction of complex productivity tools.
Architecture
| Layer | Technology |
|---|---|
| Frontend | React, Next.js |
| Local persistence | IndexedDB / Local Storage (local-first) |
| Cloud sync | Background sync (conflict-preserving) |
| Editor engine | Rich text editor |
Constraints
| Rule | |
|---|---|
| ✅ DO | Prioritise local-first saving. All keystrokes must be saved to the local device immediately before syncing to the cloud. |
| ✅ DO | Default the UI to a minimalist, distraction-free state. |
| ❌ DON'T | Introduce pop-ups, complex formatting ribbons, or intrusive tooltips while the user is actively typing. |
| ❌ DON'T | Enforce rigid document templates. The structure must fluidly adapt to the user's thought process. |
Core Business Rules
- The application must be fully functional offline, syncing states automatically once an internet connection is restored
- The core interaction model must prioritise the writing canvas over folder navigation or administrative settings
- Data synchronisation conflicts must gracefully preserve both versions rather than overwriting user thoughts
Data loss is an unrecoverable product failure for a writing tool. The local-first save pipeline is the most critical path in the system and must be covered by automated tests at every change.
User Journey
Blank Canvas
User opens Charisol Spark and is immediately presented with a clean, blank canvas. No onboarding modal, no folder picker.
Writing
User begins typing raw thoughts, poetry, or notes.
Instant Local Save
The local-first engine saves every keystroke instantly — no "Save" button required.
Contextual Formatting
User highlights text to format it via a subtle, non-intrusive contextual menu.
Silent Cloud Sync
In the background, the app silently syncs the structured document to the cloud without interrupting focus.