Lindocode Digital
Premium web, mobile, and backend systems built with clarity, performance, and real-world purpose.
LazyAuthor | User Guide
How to write, build, and export your story or book using LazyAuthor.
Table of Contents
- Creating your account
- Choosing your format
- Interactive Story Editor Walkthrough
- Your first scene
- Adding more scenes
- Creating choices and branching paths
- Writing a variable-driven story
- Gating choices with conditions
- Collecting reader input
- Ending a branch
- Attaching media
- Filling in story details
- Styling your story
- Previewing a scene
- Exporting your story
- Importing an existing story
- Book Editor - Walkthrough
- Common workflows
- Tips and best practices
- Troubleshooting
1. Creating your account
- Go to lazyauthor.lindocode.com.
- Click Sign in in the top navigation.
- On the login screen, click Sign up.
- Enter your email address and a password, then click Create account.
- Check your inbox for a confirmation email and click the link inside.
- Return to LazyAuthor and sign in with your credentials.
Your account is free. There is no subscription.
2. Choosing your format
After signing in you land on the Select screen. Pick the format that matches your project:
| Format | Best for |
|---|---|
| Interactive Story | Branching fiction where the reader makes choices. Think choose-your-own-adventure, visual novel-style narratives, puzzle stories, or any story where the path changes based on decisions. |
| Book | A standard linear ebook - novel, novella, short story collection, or non-fiction. Chapters read from top to bottom with no branching. |
Click a card to open its editor. You can switch formats later via the account menu (top right) → Change mode. Switching does not delete your work in either format - they are stored separately.
3. Interactive Story Editor Walkthrough
When the story editor opens you will see three panels:
- Left : the scene list. Every scene in your story appears here.
- Centre : the scene editor. This is where you write.
- Right : the meta panel. Title, author, cover, and language.
3.1 Your first scene
A new story starts with one scene called Opening. Click it in the scene list to select it.
Write your opening narrative
Click into the large textarea in the centre and start writing. This is the prose the reader sees first - set the scene, establish tone, introduce a character. Write as much or as little as you like.
Rename the scene
Click the large title field at the top of the editor (it says Opening by default) and type a more descriptive name, for example The Crossroads. Scene names are for your reference - they appear in the scene list and in choice dropdowns, but the reader never sees them.
Mark it as the start
The first scene is automatically the start. You will see a ▶ next to it in the scene list. Every story must have exactly one start scene - the reader always begins here.
3.2 Adding more scenes
Every path the reader can take needs its own scene.
- Click the + button at the top of the scene list.
- A new scene called New Scene appears in the list and is selected automatically.
- Rename it and write its narrative.
- Repeat for as many scenes as your story needs.
Tip - plan your branches on paper first. A simple three-choice story with two levels of branching needs at least 10 scenes (1 opening → 3 choice scenes → up to 9 outcome scenes). Knowing this in advance saves time.
3.3 Creating choices and branching paths
Choices are what make an interactive story interactive. They appear at the bottom of a scene as buttons the reader taps to continue.
Adding a choice
- Select the scene you want choices on.
- Scroll down to the Choices section (it is collapsed by default — click to expand).
- In the input row at the bottom:
- Type the choice text in the left field, e.g. “Take the eastern path”
- Select the target scene from the dropdown, e.g. Eastern Path
- Press Enter or click Add.
- The choice appears in the list. Add as many as you need.
Editing a choice
Click any field in an existing choice row to change the text or target scene directly.
Deleting a choice
Click × on the right side of the choice row.
Example - a simple two-choice scene
The path splits ahead. To the east the forest thickens. To the west, a faint light flickers through the trees.
Choices:
- “Head east into the dark forest” → scene: Dark Forest
- “Walk toward the western light” → scene: The Cabin
Each of those target scenes then has its own narrative and its own choices (or it is an ending). This is how you build a branching tree.
3.4 Writing a variable-driven story
Variables let your story remember things — the reader’s name, a score, whether they picked up an item. Without variables every reader has the same experience. With variables the story adapts to their choices.
Step 1 — Create a variable
- Click Variables in the toolbar (top right).
- Click + Add variable.
- Fill in:
- Name — a short identifier with no spaces, e.g.
courageorplayerName. This is what you type in `` templates. - Label — a readable name shown in the editor UI, e.g. Courage or Player Name.
- Type — choose
numberfor scores, counters, and numeric comparisons. Choosetextfor names and words. - Default value — what the variable starts at. Use
0for a counter, or leave blank for a name.
- Name — a short identifier with no spaces, e.g.
- Close the panel. The variable is now available everywhere in the editor.
Step 2 — Display the variable in narrative
Inside any scene’s narrative body, type `` wherever you want the value to appear. At read time this is replaced with the current value.
Example:
You step forward. Your courage is at —
enough to face whatever lies ahead.
For inline arithmetic (display only, does not change the variable):
If you succeed, your score will be .
Step 3 — Modify the variable when a choice is made
- Expand a choice row in the Choices section.
- Click + Effect.
- Select the variable (
courage), the operation (add), and the value (1). - Close the effect row.
Now every time the reader selects that choice, courage increases by 1. You can stack multiple effects on a single choice — they run in order.
Operations available
| Operation | Does |
|---|---|
set |
Assigns a fixed value, e.g. set courage to 5 |
add |
Adds a number, e.g. add 2 to score |
subtract |
Subtracts, e.g. subtract 1 from health |
multiply |
Multiplies, e.g. multiply score by 2 |
3.5 Gating choices with conditions
A condition makes a choice invisible to the reader unless a variable meets a threshold. Use this to lock paths behind decisions made earlier.
Setting a condition
- Expand a choice row.
- Click Set condition.
- Select the variable, an operator, and the comparison value.
- Example:
couragegte3— the choice only appears whencourageis 3 or higher.
- Example:
- The choice row shows the condition as a label.
Operators
| Operator | Meaning | Example |
|---|---|---|
eq |
Equals | hasKey eq true |
ne |
Does not equal | mode ne easy |
gt |
Greater than | score gt 50 |
gte |
Greater than or equal | courage gte 3 |
lt |
Less than | health lt 10 |
lte |
Less than or equal | attempts lte 2 |
Removing a condition — click Remove condition in the choice row.
Important — if all choices on a scene are hidden by conditions and the reader reaches it, they will be stuck. Always leave at least one unconditional choice as a fallback, or ensure your conditions cover all possible states.
3.6 Collecting reader input
A Player Input scene pauses the story and asks the reader to type something. The response is stored in a variable and can be used anywhere afterwards via ``.
Basic setup
- Select a scene and scroll to Scene type.
- Click Player input.
- Your existing choices are preserved. They will be cleared automatically once you set a next scene below.
- In the Input scene config that appears:
- Prompt — the question shown to the reader, e.g. “What is your name, traveller?”
- Store value in variable — pick the variable that will hold the answer, e.g.
playerName. - Next scene after submit — where the reader goes once they submit. Selecting this clears any leftover choices.
Choosing the input type
Under Input type, select:
Text— any string (default)Number— numeric keyboard on mobile, rejects non-numeric inputPassword— characters are hidden (useful for code words)
Validation (optional)
If the answer needs to be a specific value:
- Expand Validation.
- Set the match type:
exact— the answer must match your value exactly.contains— the answer just needs to include your value.regex— the answer must match a regular expression pattern.
- Enter the Correct answer value (leave blank to accept anything).
- Write an Error message to show when the reader gets it wrong.
- Set On wrong answer → scene if you want wrong answers to branch elsewhere instead of retrying on the same scene.
- Set Max attempts if you want to limit retries before redirecting to the fail scene (0 = unlimited).
Time limit (optional)
- Expand Time limit.
- Enter a countdown in seconds (e.g.
30). - Set On timeout → scene for where the reader goes when time runs out.
Submission limit (optional)
Useful for puzzles where a player should not be able to try forever:
- Expand Times limit.
- Set Max submissions (e.g.
3). - Set On limit reached → scene for where to send the reader after hitting the cap.
3.7 Ending a branch
Every path must eventually reach an ending. An Ending scene tells the reader this branch of the story is complete.
- Select the scene that should end a branch.
- Under Scene type, click Ending.
- If the scene has choices, a confirmation prompt will appear. Confirm to clear them and switch to ending type.
- Write your final narrative for this branch — the conclusion, the outcome, a reflection.
A story can have as many ending scenes as it has paths. The reader only ever reaches one.
3.8 Attaching media
You can enrich any scene with images, audio, and video.
Images
- Scroll to the Media section of the scene editor and expand it.
- Click the image upload area and select a file (PNG, JPG, WebP, GIF).
- The image uploads to cloud storage and appears as a thumbnail.
- To place it inline in your narrative, type
[image]where you want it to appear. For a second image, use[image2], and so on. - If you do not add a marker, the image appears after the body text automatically.
- To remove an image, click × on its thumbnail.
Audio
- In the Media section, upload an audio file (MP3, OGG, WAV).
- Options:
- Autoplay — plays automatically when the reader reaches the scene.
- Loop — plays on repeat.
- Hide controls — autoplay continues silently with no visible player.
- Use
[audio]in the narrative to position the player inline. Without the marker it appears after the text.
Video
- Upload a video file (MP4, WebM).
- Use
[video]to position it inline.
3.9 Filling in story details
Open the Meta panel on the right side of the editor.
| Field | What to enter |
|---|---|
| Title | The story’s title as it appears on the EPUB cover and metadata |
| Author | Your name or pen name |
| Language | Two-letter code: en for English, fr for French, zu for Zulu, etc. |
| Cover image | Upload a cover image (JPG or PNG recommended). It appears on the EPUB cover page. Ideal dimensions: 1600 × 2400 px. |
3.10 Styling your story
The Theme panel controls how the exported EPUB looks. Click Theme in the toolbar.
Typography — set the font family, size, line height, text colour, alignment, and first-line indent for body text.
Scene titles — control the size, weight, style (italic or normal), alignment, and whether decorative horizontal rules appear above and below each scene title.
Choice buttons — choose between outline or filled style, pick a colour, and set the corner radius (pill, rounded, or square).
Player input fields — style the text field and submit button shown on input scenes.
Images — set the maximum width and alignment for all images.
Divider — the symbol used for [break] markers. Default is * * *. Change it to anything: —, ✦, · · ·.
Changes preview in real time when you toggle to Preview mode on any scene.
3.11 Previewing a scene
Click Preview in the scene editor header (top right of the centre panel) to see how the scene will look and behave in the reader.
The preview shows:
- Your narrative with variables substituted using their default values.
- Choices rendered as styled buttons with your active theme.
- Conditions evaluated — choices whose conditions are not met by the defaults will be hidden.
- Media in its inline position.
Click Edit to go back to the editor.
Note — the preview uses default variable values. To test a full play-through with real branching, export the EPUB and open it in Lazy Reader.
3.12 Exporting your story
When your story is ready:
- Click Export EPUB in the top toolbar.
- The browser builds the EPUB file entirely on your device — no upload, no wait.
- A download starts automatically. The file is named after your story title.
The exported EPUB 3 file contains:
- A cover page with your cover image and title.
- All scenes rendered with your active theme.
- A JavaScript runtime that handles choices, conditions, effects, variables, and input scenes.
- All attached images, audio, and video embedded inside the file.
Open the file in Lazy Reader for the full interactive experience. It will also open in other EPUB 3 readers that support scripted content (Apple Books, Kobo, etc.), though some advanced features like timed inputs may behave differently.
3.13 Importing an existing story
If you have a previously exported LazyAuthor EPUB or any other EPUB:
- Click your email address in the toolbar → Import EPUB.
- Select the
.epubfile. - If your current story has content, a confirmation prompt appears. Confirm to replace it.
- LazyAuthor parses the file and maps its scenes automatically.
- If any content could not be mapped (unsupported features, custom scripts), a yellow warning banner appears at the top of the editor. Dismiss it with × once you have read it.
Tip — importing and then exporting again is a good way to migrate older stories into the latest EPUB format.
4. Book Editor — Walkthrough
When the book editor opens you will see three panels:
- Left — the chapter list.
- Centre — the chapter editor.
- Right — the meta panel.
4.1 Your first chapter
A new book starts with one chapter called Chapter 1. Click it in the chapter list to select it.
Write your chapter
Click into the textarea and write. Unlike the story editor there are no scene types, variables, or choices — just prose. Write the entire chapter here.
Rename the chapter
Click the title field at the top of the editor and type your chapter’s name, e.g. A City Without Shadows. The title appears in the chapter heading inside the EPUB and in the auto-generated table of contents.
4.2 Adding and reordering chapters
Adding a chapter
Click + Add chapter at the bottom of the chapter list. A new chapter is created after the last one and selected automatically.
Reordering chapters
Hover over any chapter row in the list — ▲ and ▼ arrows appear on the right. Click them to move the chapter up or down one position.
Deleting a chapter
Hover over any chapter row — a × button appears on the right. Click it to delete. The × is only shown when more than one chapter exists (a book must have at least one chapter).
Chapter numbers
Numbers are computed automatically from position. Chapter 1 is the first chapter in the list, Chapter 2 is second, and so on. You do not need to type chapter numbers — they are applied in the exported EPUB using the theme settings.
4.3 Writing chapter content
The textarea supports plain text with a few special markers:
Section breaks
Type [break] on its own line to insert a scene break divider. In the exported EPUB this renders as the symbol set in your theme (default: * * *).
The city fell silent as Venn stepped into the plaza.
[break]
Three hours later, the shadows returned.
Image placement
After uploading images (see Adding images), type [image] where you want the first image to appear, [image2] for the second, and so on.
She opened the letter.
[image]
The handwriting was unmistakable.
If you do not add markers, images are placed at the end of the chapter automatically.
4.4 Adding images to a chapter
- In the chapter editor, click the + Image button (in the media area below the textarea).
- Select an image file (PNG, JPG, WebP, GIF).
- It uploads to cloud storage and appears as a thumbnail.
- Type
[image]in the chapter body to place it inline, or leave it out to have it appended at the end. - To remove an image, click × on its thumbnail.
You can attach multiple images to a single chapter. They are embedded inside the exported EPUB.
4.5 Filling in book details
Open the Meta panel on the right side of the editor.
| Field | What to enter |
|---|---|
| Title | The book’s title, used on the cover page and in the table of contents |
| Author | Your name or pen name |
| Description | A short synopsis written into the EPUB metadata (not shown in the reader, but visible in library apps) |
| Language | Two-letter code: en, fr, zu, etc. |
| Cover image | Upload a cover (JPG or PNG). Ideal dimensions: 1600 × 2400 px. |
| Chapter start at | Use this when your book has front matter that should not be numbered. Set it to 1 if your first chapter in the list is a prologue — the prologue will have no number, and the second chapter in the list will be Chapter 1. Leave it at the default if all chapters should be numbered from 1. |
4.6 Styling your book
Click Theme in the toolbar.
Body text — set font family, size, line height, text colour, body margin, text alignment (left or justify), and first-line indent.
Chapter number — toggle the Chapter N label above each title on or off. Change its colour and letter spacing to match your aesthetic. Many literary books use a small, spaced-out label like C H A P T E R O N E.
Title rules — decorative horizontal lines above and below the chapter title. Toggle them on, then set the line colour and width (e.g. 40% centres a short rule).
Chapter title — font size, weight, style (italic or normal), and letter spacing.
Divider — the symbol for [break] markers. Common options: * * *, —, ∗, · · ·, ✦.
Table of contents — the TOC is generated automatically from your chapter titles. Style the heading colour, letter spacing, and the dot colour of the leader lines between title and page number.
4.7 Previewing a chapter
Click Preview in the chapter editor header. An iframe renders the chapter exactly as it will appear in the exported EPUB:
- Chapter number (if enabled in theme)
- Decorative rules (if enabled)
- Chapter title
- Body text with your theme applied
- Images in their inline positions
- Section break dividers
Click Edit to return to the editor.
4.8 Exporting your book
- Click Export EPUB in the toolbar.
- The EPUB 3 file builds in the browser on your device.
- The download starts automatically, named after your book title.
The exported file contains:
- A cover page.
- An auto-generated table of contents.
- All chapters styled with your active theme.
- All chapter images embedded.
The file is compatible with Kindle (convert with Calibre), Apple Books, Kobo, Google Play Books, and any standard EPUB 3 reader.
4.9 Importing an existing file
Import an EPUB
- Account menu → Import EPUB.
- Select a
.epubfile. - Confirm the replacement if your book has content.
- Chapter content is mapped automatically.
Import a Word document
- Account menu → Import .docx.
- Select a
.docxfile. - Confirm the replacement.
- LazyAuthor splits the document into chapters based on heading levels (Heading 1 becomes chapter breaks).
Both import methods replace the current book. Your previous work is gone once you confirm — make sure to export first if you want to keep it.
5. Common workflows
5.1 Name the player and use it throughout
Goal — ask the reader their name at the start and address them by name in later scenes.
- Open the Variables panel. Add a variable:
- Name:
playerName - Label: Player Name
- Type:
text - Default: (leave blank)
- Name:
- In your opening scene, set the scene type to Player input.
- Prompt: “What is your name, traveller?”
- Store in variable:
playerName - Next scene: your second scene (e.g. The Road Ahead)
-
In The Road Ahead and any later scene, write `` wherever you want to address the reader.
Welcome to the crossroads, . The choice ahead will define your fate.
5.2 Track a score and show it on an ending screen
Goal — award points for brave choices and reveal the total on an ending scene.
- Add a variable:
- Name:
score - Type:
number - Default:
0
- Name:
- On each choice that deserves points, add an effect:
- Variable:
score· Operation:add· Value:10
- Variable:
-
Create an Ending scene. In the narrative:
Your journey is complete. Final score: points. You faced every challenge with courage. A true hero.The `` expression displays the calculated value — it does not hide content. To conditionally show entire sentences, put the condition on a choice that leads to one of two different ending scenes.
5.3 Lock a choice behind an item
Goal — a choice (e.g. “Unlock the door”) only appears if the reader picked up a key earlier.
- Add a variable:
- Name:
hasKey - Type:
text - Default:
false
- Name:
- On the choice where the reader picks up the key, add an effect:
- Variable:
hasKey· Operation:set· Value:true
- Variable:
- On the scene with the locked door, add the choice “Unlock the door” → target: Inside the House.
- Expand that choice → Set condition:
- Variable:
hasKey· Operator:eq· Value:true
- Variable:
- Add a second choice “The door is locked. Move on.” → target: The Lane (no condition — always visible as a fallback).
Readers who did not find the key will only see the second choice.
5.4 Build a timed puzzle
Goal — the reader has 30 seconds to type the correct code word. Too slow and they fail.
- Add a variable:
- Name:
codeAttempt - Type:
text
- Name:
- Create the puzzle scene and set its type to Player input:
- Prompt: “Enter the access code before the alarm triggers:”
- Store in:
codeAttempt - Next scene: Access Granted
- Under Validation:
- Match type:
exact - Correct answer:
LAZARUS - Case-sensitive: off (so
lazarusalso works) - Error message: “Wrong code. Try again.”
- On wrong answer → Wrong Code (a scene with “The alarm sounds.”)
- Max attempts:
3
- Match type:
- Under Time limit:
- Countdown:
30 - On timeout → Time’s Up (a scene with “The door locks permanently.”)
- Countdown:
5.5 Write a book with a prologue
Goal — the book list starts with a prologue, then Chapter 1, Chapter 2, etc.
- Create your first chapter and title it Prologue.
- Create your second chapter and title it the actual first chapter title.
- In the Meta panel, set Chapter start at to
1.
In the exported EPUB, the prologue will have no chapter number label. The second chapter in the list will be labelled Chapter 1, the third Chapter 2, and so on.
6. Tips and best practices
Plan before you write Draw your scene tree on paper or in a simple diagram tool before opening the editor. A story with 5 choices per scene and 3 levels deep has 156 possible scenes. Know roughly how big you want it before you start.
Name scenes clearly Scene names are shown in every choice dropdown. Vague names like Scene 12 or New Scene make it impossible to navigate a large story. Use names like Forest Entrance, East Path — Day 2, Ending — Coward’s Way so you always know what you are looking at.
Use one ending per branch, not one global ending Avoid funnelling all paths into a single ending scene. Each distinct outcome should have its own scene — this gives you room to write a tailored conclusion for each path.
Keep variable names short and consistent
score is better than playerCurrentScore. hasKey is better than playerHasPickedUpTheKey. Short names are easier to type in `` templates and condition fields.
Test with Preview before exporting Use the Preview toggle on key scenes to check that your narrative reads correctly, variable expressions look right, and conditions hide the right choices. Export only when you are happy with the result.
Export early and often Do not wait until the story is finished to export. Export a draft, open it in Lazy Reader, and experience it as a reader would. You will notice problems (confusing branching, missing scenes, awkward prose) that are invisible in the editor.
Back up before importing Importing replaces your current work. If you want to keep your current story, export it to an EPUB first. That export is your backup.
Use the break marker generously
[break] renders as a visual divider between sections of a scene or chapter. Use it wherever there is a time skip, a change of location, or a shift in perspective. It gives readers a clear signal that something has changed.
Cover image dimensions Use a 1600 × 2400 px image (2:3 ratio) for covers. Wider or square images will work but may appear letterboxed in some readers.
7. Troubleshooting
The Export EPUB button does nothing or the download never starts
- Make sure you have at least one scene (story) or one chapter (book) with some content.
- Check that your browser allows file downloads from this site — some browsers block downloads by default.
- Try a different browser (Chrome or Firefox work best).
My story’s choices do not appear in the preview
- Choices are only shown on Narrative scene types. If the scene is set to Player input or Ending, no choices panel is shown.
- Check that each choice has a valid target scene selected. Choices with no target are not saved.
A conditioned choice is never showing up
- Make sure the variable’s default value satisfies the condition — the preview uses defaults to evaluate conditions.
- Check you are using the right operator.
gt 3means strictly greater than 3; usegte 3to include the value 3.
The player name variable shows `` in the preview instead of a value
- The preview uses default values. If the default for
playerNameis blank, the template renders as the empty string. - Set a test default (e.g.
Alex) while developing, then clear it before final export.
I imported a .docx and the chapters are not split correctly
- LazyAuthor splits at Heading 1 (
H1) tags. If your Word document uses regular bold text instead of Heading 1 for chapter titles, the import cannot detect the breaks. - In Word, select each chapter title and apply the Heading 1 paragraph style, then re-export the
.docxand import again.
The EPUB looks unstyled when I open it in Apple Books / Kobo
- Check that the Font family in the Theme panel uses a web-safe font (e.g.
Georgia, serifor"Palatino Linotype", serif) or a font the reader app bundles. Custom font files are not embedded in the EPUB. - Some reader apps override font settings. This is normal — readers often have their own typography preferences set at the system level.
Audio autoplay does not work
- Most browsers and e-reader apps block autoplay without user interaction. Use autoplay for ambient music that starts after the reader has already tapped a choice — the interaction unblocks audio for that session.
The sync status shows “Save failed”
- This means the cloud write to Supabase did not succeed. Your work is still saved locally in your browser.
- Check your internet connection and try making any small edit to trigger a retry.
- If the error persists, export your story or book as a backup before refreshing the page.
I accidentally deleted a scene
- There is no undo for scene deletion. If you did not export recently, the scene content is gone.
- Go to Variables — any variable references from the deleted scene are cleaned up automatically.
- To avoid this in future, export a draft EPUB before making large structural changes. The export is your version history.