Back to Claude Scientific Skills

Project Documentation Template

scientific-skills/markdown-mermaid-writing/templates/project_documentation.md

2.38.011.2 KB
Original Source
<!-- Source: https://github.com/SuperiorByteWorks-LLC/agent-project | License: Apache-2.0 | Author: Clayton Young / Superior Byte Works, LLC (Boreal Bytes) -->

Project Documentation Template

Back to Markdown Style Guide โ€” Read the style guide first for formatting, citation, and emoji rules.

Use this template for: Software projects, open-source libraries, internal tools, APIs, platforms, or any product that needs documentation for users and contributors. Designed to take someone from "what is this?" to "I'm contributing" in a single read.

Key features: Quick start that gets people running in under 5 minutes, architecture overview with Mermaid diagrams, API reference structure, troubleshooting section that addresses real problems, and contribution guidelines.

Philosophy: The best project docs eliminate the need to read the source code to understand the system. A new team member should be productive in hours, not weeks. Every "how does this work?" question should have an answer in this document or be one click away.


How to Use

  1. Copy this file as your project's main README.md or docs/index.md
  2. Replace all [bracketed placeholders] with your content
  3. Delete sections that don't apply (a CLI tool might skip API reference; a library might skip deployment)
  4. Add Mermaid diagrams โ€” especially for architecture, data flow, and request lifecycle
  5. Keep the Quick Start brutally simple โ€” if setup takes more than 5 commands, simplify it

The Template

Everything below the line is the template. Copy from here:


[Project Name]

[One sentence: what this does and why someone would use it.]

[One sentence: the key differentiator or value proposition.]


๐Ÿ“‹ Table of contents


๐Ÿš€ Quick start

Prerequisites

RequirementVersionCheck command
[Runtime/Language]โ‰ฅ [version][command] --version
[Database/Service]โ‰ฅ [version][command] --version
[Tool]โ‰ฅ [version][command] --version

Install and run

bash
# Clone the repository
git clone https://github.com/[org]/[repo].git
cd [repo]

# Install dependencies
[package-manager] install

# Configure environment
cp .env.example .env
# Edit .env with your values

# Start the application
[package-manager] run dev

Verify it works:

bash
curl http://localhost:[port]/health
# Expected: {"status": "ok", "version": "[version]"}

๐Ÿ’ก First-time setup issues? See Troubleshooting for common problems.


๐Ÿ—๏ธ Architecture

System overview

[2โ€“3 sentences explaining the high-level architecture โ€” what the major components are and how they interact.]

mermaid
flowchart TB
    accTitle: System Architecture Overview
    accDescr: High-level architecture showing client, API, services, and data layers with primary data flow paths

    client([๐Ÿ‘ค Client]) --> api[๐ŸŒ API Gateway]

    subgraph services ["โš™๏ธ Services"]
        svc_a[๐Ÿ“‹ Service A]
        svc_b[๐Ÿ“ฆ Service B]
        svc_c[๐Ÿ” Auth Service]
    end

    subgraph data ["๐Ÿ’พ Data"]
        db[(๐Ÿ’พ Primary DB)]
        cache[โšก Cache]
        queue[๐Ÿ“ฅ Message Queue]
    end

    api --> svc_c
    api --> svc_a
    api --> svc_b
    svc_a --> db
    svc_a --> cache
    svc_b --> queue
    svc_b --> db

    classDef svc fill:#dbeafe,stroke:#2563eb,stroke-width:2px,color:#1e3a5f
    classDef data fill:#dcfce7,stroke:#16a34a,stroke-width:2px,color:#14532d

    class svc_a,svc_b,svc_c svc
    class db,cache,queue data

Key components

ComponentPurposeTechnology
[Component 1][What it does][Tech stack]
[Component 2][What it does][Tech stack]
[Component 3][What it does][Tech stack]

Data flow

[Describe the primary request lifecycle โ€” what happens when a user makes a typical request.]

mermaid
sequenceDiagram
    accTitle: Primary Request Lifecycle
    accDescr: Sequence showing how a typical request flows through the API gateway, service layer, and data stores

    participant C as ๐Ÿ‘ค Client
    participant A as ๐ŸŒ API Gateway
    participant S as โš™๏ธ Service
    participant D as ๐Ÿ’พ Database

    C->>A: ๐Ÿ“ค Request
    A->>A: ๐Ÿ” Authenticate
    A->>S: โš™๏ธ Process
    S->>D: ๐Ÿ” Query
    D-->>S: ๐Ÿ“ฅ Results
    S-->>A: ๐Ÿ“ค Response
    A-->>C: โœ… 200 OK
<details> <summary><strong>๐Ÿ“‹ Detailed Architecture Notes</strong></summary>

Directory structure

[repo]/
โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ api/          # Route handlers and middleware
โ”‚   โ”œโ”€โ”€ services/     # Business logic
โ”‚   โ”œโ”€โ”€ models/       # Data models and schemas
โ”‚   โ”œโ”€โ”€ config/       # Configuration and environment
โ”‚   โ””โ”€โ”€ utils/        # Shared utilities
โ”œโ”€โ”€ tests/
โ”‚   โ”œโ”€โ”€ unit/
โ”‚   โ””โ”€โ”€ integration/
โ”œโ”€โ”€ docs/             # Additional documentation
โ””โ”€โ”€ scripts/          # Build, deploy, and maintenance scripts

Design decisions

  • [Decision 1]: [Why this approach was chosen over alternatives. Link to ADR if one exists.]
  • [Decision 2]: [Why this approach was chosen.]
</details>

โš™๏ธ Configuration

Environment variables

VariableRequiredDefaultDescription
DATABASE_URLYesโ€”PostgreSQL connection string
REDIS_URLNolocalhost:6379Redis cache connection
LOG_LEVELNoinfoLogging verbosity: debug, info, warn, error
PORTNo3000HTTP server port
[VAR_NAME][Yes/No][default][Description]

Configuration files

FilePurpose
.envLocal environment variables (never committed)
config/default.jsonDefault settings for all environments
config/production.jsonProduction overrides

๐Ÿ“ก API Reference

Authentication

All API requests require a bearer token in the Authorization header:

Authorization: Bearer <token>

Obtain a token via POST /auth/login. Tokens expire after [duration].

Endpoints

GET /api/[resource]

Description: [What this endpoint returns]

Parameters:

ParameterTypeRequiredDescription
limitintegerNoMax results (default: 20, max: 100)
offsetintegerNoPagination offset
[param][type][Yes/No][Description]

Response:

json
{
  "data": [
    {
      "id": "uuid",
      "name": "Example",
      "created_at": "2026-01-15T10:30:00Z"
    }
  ],
  "meta": {
    "total": 42,
    "limit": 20,
    "offset": 0
  }
}

Error responses:

StatusMeaningWhen
401UnauthorizedMissing or invalid token
403ForbiddenInsufficient permissions
404Not foundResource doesn't exist
429Rate limitedExceeded [N] requests/minute
<details> <summary><strong>๐Ÿ“ก Additional Endpoints</strong></summary>

POST /api/[resource]

[Request body, parameters, response format]

PUT /api/[resource]/:id

[Request body, parameters, response format]

DELETE /api/[resource]/:id

[Parameters, response format]

</details>

๐Ÿš€ Deployment

Production deployment

bash
# Build
[package-manager] run build

# Run database migrations
[package-manager] run migrate

# Start production server
[package-manager] run start

Environment requirements

RequirementProductionStaging
CPU[spec][spec]
Memory[spec][spec]
Storage[spec][spec]
Database[spec][spec]

Health checks

EndpointExpectedPurpose
GET /health200 OKBasic liveness
GET /health/ready200 OKFull readiness (DB, cache, dependencies)
<details> <summary><strong>๐Ÿ”ง CI/CD Pipeline Details</strong></summary>

[Describe the deployment pipeline โ€” build steps, test stages, deployment targets, rollback procedures.]

</details>

๐Ÿ”ง Troubleshooting

Common issues

"Connection refused" on startup

Cause: Database is not running or connection string is incorrect.

Fix:

  1. Verify database is running: [check-command]
  2. Check DATABASE_URL in .env
  3. Test connection: [test-command]

"[Specific error message]"

Cause: [What triggers this error]

Fix:

  1. [Step 1]
  2. [Step 2]

Slow response times

Cause: [Common causes โ€” missing indexes, cache cold start, etc.]

Fix:

  1. Check cache connectivity: [command]
  2. Verify database indexes: [command]
  3. Review recent changes to query patterns

Getting help

  • Bug reports: [Link to issue template or process]
  • Questions: [Link to discussions, Slack channel, or forum]
  • Security issues: [Email or private disclosure process]

๐Ÿค Contributing

Development setup

bash
# Fork and clone
git clone https://github.com/[your-fork]/[repo].git

# Install with dev dependencies
[package-manager] install --dev

# Run tests
[package-manager] test

# Run linter
[package-manager] run lint

Workflow

  1. Create a branch from main: git checkout -b feature/your-feature
  2. Make changes following the code style (enforced by linter)
  3. Write tests for new functionality
  4. Run the full test suite: [package-manager] test
  5. Open a pull request with a clear description

Code standards

  • [Language/framework style guide or linter config]
  • [Test coverage expectations]
  • [PR review process]
  • [Documentation expectations for new features]

๐Ÿ”— References


Last updated: [Date] ยท Maintained by [Team/Owner]