Documentation Standards
Document: 10-documentation-standards.md
Version: 1.0.0
Purpose
This document defines the documentation standards followed across all Rundown projects.
Documentation ensures that projects remain understandable, maintainable, and transferable throughout their lifecycle. Every project should include sufficient documentation to allow another developer to understand the project, deploy it, and maintain it without requiring additional explanation.
Documentation is considered part of the deliverable and should be maintained alongside the codebase.
Documentation Principles
Documentation should be:
-
Accurate
-
Up to date
-
Concise
-
Easy to navigate
-
Written for future developers
If documentation becomes outdated, it should be updated as part of the same change that introduced the code.
Required Project Documentation
Every Rundown project must include the following documentation.
project/
README.md
CHANGELOG.md
.env.example
docs/
The docs directory contains all project-specific documentation.
README.md
Every repository must include a README.
The README should answer the following questions:
-
What is this project?
-
What technologies are used?
-
How do I install it?
-
How do I run it locally?
-
How do I deploy it?
-
Where is additional documentation located?
The README should remain concise and serve as the entry point into the project documentation.
CHANGELOG.md
Every project should maintain a changelog.
The changelog records significant updates made throughout the project's lifetime.
Examples include:
-
New features
-
Bug fixes
-
Breaking changes
-
Infrastructure updates
The changelog should follow Semantic Versioning where applicable.
Environment Documentation
Every repository must include:
.env.example
This file should contain:
-
Required environment variables
-
Example values where appropriate
-
Comments explaining variables when necessary
Sensitive information must never be committed to version control.
Project Documentation
The docs directory should follow the standard structure below.
docs/
architecture.md
deployment.md
integrations.md
handover.md
troubleshooting.md
Projects may add additional documentation when required, but the standard files should remain consistent across all Rundown projects.
architecture.md
Purpose:
Provide a high-level overview of the application architecture.
Typical contents include:
-
System overview
-
Technology stack
-
Application structure
-
Database overview
-
External services
-
Deployment architecture
deployment.md
Purpose:
Document the deployment process.
Typical contents include:
-
Deployment prerequisites
-
Environment variables
-
Build process
-
Deployment steps
-
Rollback procedure
Deployment documentation should allow another developer to successfully deploy the application.
integrations.md
Purpose:
Document all third-party integrations.
Examples:
-
Payment gateways
-
Email providers
-
Analytics
-
Authentication providers
-
External APIs
Each integration should include:
-
Purpose
-
Configuration requirements
-
Environment variables
-
Important implementation notes
handover.md
Purpose:
Provide information required when transferring the project to another developer or the client.
Typical contents include:
-
Hosting details
-
Domain configuration
-
CMS access
-
Deployment process
-
Maintenance requirements
-
Known limitations
troubleshooting.md
Purpose:
Document common issues and their resolutions.
Examples include:
-
Build failures
-
Environment configuration issues
-
Database migration problems
-
Deployment errors
Whenever a recurring issue is resolved, it should be documented here.
Inline Code Documentation
Code comments should explain:
-
Why a decision was made.
-
Business rules.
-
Non-obvious implementation details.
Avoid comments that merely describe what the code is doing.
Self-explanatory code should not require comments.
API Documentation
Projects exposing APIs should document:
-
Endpoints
-
Request format
-
Response format
-
Authentication requirements
-
Error responses
API documentation should remain synchronized with implementation changes.
Architecture Decisions
Significant architectural decisions should be recorded as Architecture Decision Records (ADRs).
Examples include:
-
Technology changes
-
Database strategy
-
Hosting strategy
-
Authentication strategy
-
Major refactoring decisions
Project-specific ADRs should remain separate from Rundown OS ADRs.
Client Documentation
Client-facing documentation should be written separately from internal engineering documentation.
Examples include:
-
CMS User Guides
-
Content Editing Guides
-
Maintenance Instructions
-
Administrator Guides
Technical implementation details intended for developers should not be included in client documentation.
Documentation Maintenance
Documentation should be reviewed whenever:
-
New features are added.
-
Infrastructure changes.
-
Dependencies change significantly.
-
Deployment procedures change.
-
Architecture changes.
Updating documentation should be considered part of completing the associated development work.
Engineering Decision
Documentation Philosophy
Status: Accepted
Decision
Documentation is maintained alongside the codebase and treated as a required deliverable.
Reasoning
Well-maintained documentation:
-
Reduces onboarding time.
-
Simplifies maintenance.
-
Preserves architectural knowledge.
-
Reduces dependency on individual developers.
-
Improves long-term project sustainability.
Documentation Checklist
Before completing a feature or release, verify:
-
README reflects the current project.
-
CHANGELOG has been updated.
-
Environment variables are documented.
-
Relevant files in
docs/have been updated. -
New integrations are documented.
-
Architecture changes are recorded.
-
Client documentation has been updated if required.
Summary
Documentation preserves knowledge and ensures that Rundown projects remain understandable long after initial development.
Maintaining accurate documentation reduces operational risk, simplifies collaboration, and enables projects to evolve without relying on tribal knowledge.
Related Documents
Related ADRs
-
ADR-001: Repository Structure
-
ADR-002: Git Workflow