01IntroductionA quick walk-through of Docly’s magic – turn ideas into powerful cloud apps, and explore the simple building blocks…Read the overview 02Getting StartedBuild your first Docly application step by step — from an empty workspace to a working document database, with optional…Build your first app 03JavaScript referenceIn Docly you create custom display templates (HTML and/or PDF) and API functions using JavaScript both in frontend and…Browse the reference
Explore the docs
Everything Docly does, one section at a time.
Site structureHow a Docly site is put together and published: the Root and Folder folders, site.json and headers, sign-in, templates, forms, the API…13 pagesSchemasWith the Docly™ schema designers you can create your own types of documents for your data and content.5 pagesPackagesReusable code, templates and components packaged for distribution and reuse across Docly™ sites.4 pagesToolsThe tools you work with a Docly site from: the docly CLI, MCP for AI assistants, and Visual Studio Code.4 pagesAI AssistantLearn about Docly's built-in AI assistant — the inline Document AI Assistant and the full-page Workspace Agent.3 pagesGuidelinesThe knowledge base — pitfalls and recommendations for building on Docly — plus the Docly™ branding guidelines and code of conduct.3 pagesBlogRead anything from news updates, notices and posts about some ideas and ways of coding web and web apps in Docly™.13 pages
New in the knowledge base
Pitfalls, misconceptions and best practices — written down so nobody hits them twice.
- PitfallWrite fails after process in the same code blockOnce process() has run inside a #{ }# code block, a later write() call in that same block fails with "'write' method…
- ClarificationLinks in markup an API returns do not get the mount pathDocly adds the site's mount path to links that start with "/" in pages it renders, but not to markup an API script…
- ClarificationFile reads are remembered for one requestWithin one request (or one service run), Docly looks up each file path once: getFile, getJson, include, import, load…
- BugDates are saved as UTC and shown in local timeChanged in production on 23 October 2026: HashJS writes every date as toISOString - UTC, ending in Z - in…
- ClarificationWhich documents keep a version historyA document gets a new version on every save when its schema has EnableVersioning turned on and the workspace's…
From the blog
What changed, and why.
- How Docly Protects a Published Site — and How a Real Visitor Gets Back InPublished sites sit on the open internet and get the traffic that comes with it. Here is the model Docly uses to decide…
- Fewer Bytes on the Wire: Brotli, Minification and a Year of Browser CacheCached pages are now stored pre-compressed with Brotli, JS and CSS bundles are minified according to what they actually…
- WebP and AVIF, straight from site.jsonThe built-in scaler now writes WebP and AVIF, encoder quality is yours to set per format in site.json, and changing…