About Stuck
Stuck is a creative writing software. For writing.
I'm insisting because of the vast range of software that we consider acceptable to classify as "writing software."
Here are the main principles of Stuck:
- Frictionless
- Aesthetically pleasant
- Highly configurable
- Custom colours
- Custom formatting
- Custom keybindings
- Lots of toggeable preferences
- Fully useable through keyboard
- No noticeable typing latency
- Transparency (example: "last saved at XX:XX" rather than "saved")
- Accessibility-focused :
- Accessibility features (quick contrast, line gradient...)
- Screen readers compatibility
- Interface ready to translate
- Low RAM and CPU usage
- Easy Versioning
- Meant to be closed
- No Background Running
- Quick Start
- No splash screen
- Opens exactly where you left it
- Edit History sorted per session (one sessions = continuously open)
- Session Ledger ("Utterly Unrelated") triggers on closing
- Safe and confidential
- Local-first
- Optional wrapped git push (only works if git is installed and repo is set)
- No authentication
- No AI integration
- No data analytics (I don't even know how those work)
How Stuck came to be
This is an app that I started making in the face of the desilusion of what tools are available to writers on Linux. Admittedly, I'd go as far as saying for writers period.
It's not to say that it's impossible to find software that suits your needs out there, but most of the writer-targetting software out there is either bloated with functionalities that end up being detrimental to the writing experience itself or so focused on being minimalist that it forgets that a book is usually more than a single file (or a single page).
It sounds all very good and principled (and slightly high and mighty), but the simple truth is that Stuck is made for me. It is specifically tailored to my own hardships when it comes to writing and to the friction I've personally experienced with all the writing apps I've used.
The very first specifications included the following :
- Electron app (for ProseMirror and actual Rich Text)
- Endless scrolling (no pagination)
- Chapters as separate units
- No focus mode (the main window shouldn't require a dedicated mode for focus)
- Panels do not affect text position
- Writing space separate from export formatting
- Table of contents is a hidden side panel that is toggled on and off
- Chapter splitting feature
- Automatic numbering of chapters
- "Chapter" renaming (parts, scenes, acts; anything)
- Dark low-contrast, font is a per-project setting
- During a session, all chapters retain the last place the cursor was
- Between sessions, the app remembers the last page and its cursor position
- Autosave and wrapped packaged-git versioning
- Special character shortcuts (em-dash)
- import/export
- zoom, line width
You can find a description of the state of the legacy app when I started over right here.
The stack evolved to a full-electron app to a nim engine with an electron wrapper fairly early. And now this project is a do-over with a new stack that completely rids itself of the web.
The reason this happened is actually that I looked into writers' grievances. If they mostly align with my own, one of the things that I hadn't realized was that ProseMirror itself was actually an issue. For all the simplicity and amazing handling of rich text it offers, it also has from 80ms up to 120ms of typing latency. For an app that's meant to be about reducing friction, that was just not acceptable. It took me a moment to figure out the stack because C# never came up as a solution but I also couldn't afford to give up the aesthetic side of Stuck (or to spend months/years on it).
Other features that were brought up from this research are:
- Write-Only mode. No backspace/del. (I actually had considered this from my own experience with my newly-bought typewriter)
- Typewriter-like scrolling (writing line always centered)
What Stuck is not
To be clearer about its capabilities and limitations, here's a list important things Stuck is not:
- Not a planning app;
- Not a publishing app;
- Not a formatting app;
- Not a project management app.
Stuck's formatting capabilities
These last two be slightly ambiguous so I will go into more detail about this.
Stuck does offer features such as formatting for different types of exports. You will be able to do things such as:
- Semantic formatting (bold, italics)
- Alignements (left, right, centered, justified)
- Paper size and margins (all margins independently)
- First line indent size, line spacing, space between paragraphs
- Text size, text font
- Epigraphs, scene break markers
You won't be able to do things such as:
- Headings (chapters/files have titles but no headings in the text)
- Colours
- Tables, codeblocks, image, links insertions
- Underline and barring (it isn't planned, but this I'm open to negotiations on)
- And many others I'm sure.
Basically, what I mean when I say that Stuck isn't a formatting software isn't that it's only capable of plain text and won't allow you to export your work decently; it's that anything that it does do is in the service of the writing.
Example: how the PDF live preview fits this model
The clearest example of that I have is the live preview for PDF. It is a complex functionality that isn't technically a writing fucntionality. However, having it is what allows me to protect the writing space from being forced to follow the exact formatting of the exported file. It protects the writing space by allowing it to be nothing more than that.
Stuck's project management capabilities
Note
I am going to try and give a meaningful list, but I don't actually use management-oriented writing software, so I'm likely going to miss some important ones. The best is to assume that if it's not in the list of features Stuck has, it's not a feature Stuck has.
Things that are not included in Stuck:
- Scenes (and any other level of separation beyond one level)
- Chapter tagging of any kind
- Wiki
Things that are in Stuck:
- Three views: Bookshelf, Project Page, Writing Space (with toggeable table of contents for quick navigation)
- Navigation to previous and next chapters
- Scratchpad/Persistent Note
- Scratchapd/Session ledger for intrusive thoughts (see: Features > "Utterly Unrelated")
- Chapter management:
- Dynamic numbering based on position
- Dynamic naming based on numbering
- Drag'n'dropping and keyboard reordering
- Setting aside
- Toggle "not a chapter" to exclude chapter from automatic numbering/naming
- Hard delete (hard delete from app -> send to system trash)
- version history
- word count
- splitting chapter
- moving chapter to other book
- drafts (git tags seamlessly exposed through UI)
- Book Management:
- Books Management:
- Stacking Books (2 levels)
- Propagating vocabulary and aliases to other books
- This is different from import/export because it's the same source of truth