Skip to content
Browse docs
Getting Started 7 min read

Project Structure

The anatomy of a book project folder — book.json, content, assets, sources, styles, exports, series, and section files.

Every book in EffortlessAuthor is just a folder of plain files. Understanding that folder makes the app predictable: you always know where your words live, and you can back them up, edit them elsewhere, or put them under version control.

The folder tree

When you create a book, the app generates a structure like this:

my-amazing-book/
├── book.json                     # Book + KDP metadata
├── style.md                      # Private writing style guide (not exported)
├── content/                      # Your manuscript (Markdown)
│   ├── 00-front-matter/
│   │   ├── _section.json
│   │   ├── 00-title.md
│   │   └── 01-copyright.md
│   ├── 01-chapters/
│   │   ├── _section.json
│   │   └── 00-chapter-01.md
│   └── 99-back-matter/
│       └── _section.json
├── assets/                       # Images and other embedded media
├── sources/                      # Reference material you keep on hand
├── styles/
│   └── custom.css                # Custom CSS included in the EPUB
└── exports/                      # Generated EPUB files

The folder name is a slug derived from your title (for example, “My Amazing Book” becomes my-amazing-book). If that name is already taken, the app appends a number to keep it unique.

What each item is

book.json

The single source of truth for your book’s metadata, including KDP fields. The app reads and writes this file whenever you edit settings. See the field reference below.

style.md

A private writing style guide — a place to record your book’s voice, tone, terminology, and conventions. It’s a reference for you (and any AI assistance you use); it is not included in the exported EPUB. You can open and edit it from the Style Guide button in the editor sidebar.

content/

Your manuscript. Markdown files (.md) are grouped into section folders. By default the app creates three:

  • 00-front-matter/ — title page, copyright, dedication, etc.
  • 01-chapters/ — the body of your book.
  • 99-back-matter/ — acknowledgements, about the author, etc.

The numeric prefixes (00-, 01-, 99-) control ordering. Files and folders are sorted by their prefix, so front matter comes first and back matter comes last. Learn more in organizing chapters.

assets/

Images and other media you embed in your chapters. Keep referenced files here so they travel with the project.

sources/

Reference material — research, notes, source documents — that you want to keep alongside the book. You manage these from the Sources panel in the editor. Sources are for your reference and are not part of the exported book.

styles/custom.css

Custom CSS that is included in the EPUB export. The app seeds it with commented-out examples. Edit it if you want to tweak how headings, body text, or other elements appear in the finished book.

exports/

Where generated .epub files are written when you export. Each export run produces a downloadable file here.

series/

If you group books into a series, each series is defined by a JSON file (one per series). A book joins a series by referencing it from book.json (via seriesSlug and seriesPosition). See working with series.

_section.json

Each section folder under content/ can contain a _section.json file describing that section. It sets the section’s display title and its EPUB semantic type, for example:

{
  "title": "Front Matter",
  "epubType": "frontmatter"
}

The default sections use epubType values of frontmatter, bodymatter, and backmatter. These files are metadata only — they’re skipped when building the file tree and don’t appear as chapters.

book.json fields {#bookjson-fields}

book.json holds your book metadata, which extends the KDP metadata fields. Here’s an annotated example:

{
  "title": "My Amazing Book",
  "author": "Jane Writer",
  "publisher": "Independent",
  "language": "en",
  "description": "A sweeping tale of...",
  "cover": "assets/cover.jpg",

  "subtitle": "A Novel",
  "isbn": "978-0-000000-00-0",
  "asin": "B000000000",
  "categories": ["Fiction / Fantasy", "Fiction / Adventure"],
  "keywords": ["epic fantasy", "dragons", "quest"],
  "audience": "adult",
  "printSpecs": {
    "interior": "black and white",
    "trimSize": "6x9",
    "paper": "cream"
  },

  "seriesSlug": "the-chronicles",
  "seriesPosition": 1,

  "status": "draft",
  "createdAt": "2026-06-03T10:00:00.000Z",
  "updatedAt": "2026-06-03T10:00:00.000Z"
}

Core fields

FieldTypeNotes
titlestringRequired. The book’s title.
authorstringRequired. Author name.
publisherstringOptional publisher name.
languagestringLanguage code, e.g. en, es, fr.
descriptionstringBack-cover / KDP description.
coverstringPath to the cover image.
statusstringdraft, ready, or published.
createdAt / updatedAtstringISO timestamps managed by the app.

KDP fields

FieldTypeNotes
subtitlestringSubtitle shown on KDP.
isbn / asinstringIdentifiers.
categoriesstring[]KDP browse categories.
keywordsstring[]Search keywords (KDP allows up to 7).
audiencestringadult, young adult, or children.
ageRangeobjectOptional { min, max }.
contentWarningsstring[]Optional warnings.
printSpecsobjectinterior, trimSize, paper, optional bleed — for paperback/hardcover.
estimatedWordCount / estimatedPageCountnumberOptional metrics.
edition / editionNumberstring / numberEdition info.

Series fields

FieldTypeNotes
seriesSlugstringThe slug of the series this book belongs to.
seriesPositionnumberThis book’s position within the series.

You normally edit these fields through the Settings screen rather than by hand — but because it’s just JSON, you can edit it directly if you prefer. The app watches for outside changes and offers to reload.