Skip to content

Conversation

@ldornele
Copy link
Contributor

@ldornele ldornele commented Dec 29, 2025

This PR adds comprehensive documentation for the standard directory structure, related to HYPERFLEET-411.

Summary by CodeRabbit

  • Documentation
    • Added comprehensive directory structure standards for HyperFleet repositories, defining required and optional directories, organization guidelines, and best practices for consistent repository layout across projects.

✏️ Tip: You can customize this high-level summary in your review settings.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Dec 29, 2025

Walkthrough

This pull request introduces a new documentation file, standards/directory-structure.md, that establishes standardized directory structure guidelines for HyperFleet repositories. The file defines mandatory directories (bin, cmd, pkg, internal, Makefile, README.md) and optional directories (build, configs, openapi, kustomize, helm, docs, scripts, test, CI folders), provides a detailed example repository layout, and includes guidance on temporary file management and .gitignore requirements. The document also references related conventions and external resources for Go, OpenAPI, Kubernetes, Kustomize, and Helm.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

  • architecture#55: Adds overlapping repository layout standards that define required top-level directories and conventions for binary placement in HyperFleet projects.
  • architecture#60: Consolidates documentation standards into the /standards directory, aligning with the same organizational structure as this PR.

Suggested reviewers

  • xueli181114
  • ciaranRoche

Pre-merge checks

✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately and directly summarizes the main change: adding HyperFleet directory structure standard documentation to the repository.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

📜 Recent review details

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 2b8a67d and 46917e6.

📒 Files selected for processing (1)
  • standards/directory-structure.md
🧰 Additional context used
🪛 markdownlint-cli2 (0.18.1)
standards/directory-structure.md

56-56: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

📜 Review details

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 08e0550 and 9e57684.

📒 Files selected for processing (1)
  • hyperfleet/docs/directory-structure.md
🧰 Additional context used
🪛 markdownlint-cli2 (0.18.1)
hyperfleet/docs/directory-structure.md

56-56: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

🔇 Additional comments (1)
hyperfleet/docs/directory-structure.md (1)

1-213: Excellent comprehensive documentation on directory structure.

The document is well-organized, clearly written, and provides practical guidance for repository standardization. The problem statement, goals, and scope are clearly articulated, and the directory layout is comprehensive with both required and optional sections. The tables effectively summarize directory purposes and .gitignore requirements.

Comment on lines 56 to 109
```
repo-root/
├── bin/ # Compiled binaries (gitignored)
│ └── app-name # Compiled binary (e.g., pull-secret, dns-adapter)
├── build/ # Temporary build artifacts (gitignored)
│ ├── cache/ # Build cache
│ └── tmp/ # Temporary files
├── cmd/ # Main application(s)
│ └── app-name/ # Application-specific directory (e.g., pull-secret/)
│ ├── main.go # Main executable
│ └── jobs/ # Job implementations (if applicable)
│ └── job.go
├── pkg/ # Application libraries and packages
│ ├── api/ # API client libraries
│ ├── config/ # Configuration structures
│ ├── handlers/ # HTTP handlers
│ ├── services/ # Business logic
│ ├── models/ # Data models
│ └── utils/ # Utility functions
├── openapi/ # OpenAPI/Swagger specifications (if applicable)
│ ├── api.yaml # OpenAPI 3.0 specification
│ └── v1/ # Versioned API specs
│ └── swagger.json
├── k8s/ # Kubernetes manifests
│ ├── base/ # Base Kustomize configuration
│ ├── overlays/ # Environment-specific overlays
│ │ ├── dev/
│ │ ├── staging/
│ │ └── prod/
│ └── crds/ # Custom Resource Definitions (if applicable)
├── helm/ # Helm charts (if applicable)
│ └── chart-name/ # Helm chart directory
│ ├── Chart.yaml
│ ├── values.yaml
│ └── templates/
├── docs/ # Documentation
│ ├── architecture.md
│ ├── api.md
│ └── development.md
├── scripts/ # Helper scripts
│ ├── setup.sh
│ └── deploy.sh
├── test/ # Integration and E2E tests
│ ├── integration/
│ └── e2e/
├── .github/ # GitHub configuration
│ └── workflows/ # GitHub Actions
├── Makefile # Standard Makefile (see makefile-conventions.md)
├── Dockerfile # Container definition
├── .gitignore # Git ignore rules
├── go.mod # Go module definition (for Go projects)
├── go.sum # Go module checksums
└── README.md # Project documentation
```
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Add language specification to the directory tree code block.

The fenced code block is missing a language identifier. While the tree structure itself is clear, specifying the language improves rendering in tools and documentation systems.

🔎 Proposed fix
-```
+```text
 repo-root/
 ├── bin/                    # Compiled binaries (gitignored)
🧰 Tools
🪛 markdownlint-cli2 (0.18.1)

56-56: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

🤖 Prompt for AI Agents
In hyperfleet/docs/directory-structure.md around lines 56 to 109, the fenced
code block showing the repo tree lacks a language identifier; update the opening
fence from ``` to ```text (or another appropriate identifier like ```bash) so
the block becomes ```text repo-root/... and leave the closing ``` unchanged to
improve rendering.

@rafabene
Copy link
Contributor

rafabene commented Jan 2, 2026

@ldornele We need to update the path from /docs to /standards according to https://issues.redhat.com/browse/HYPERFLEET-424

@ldornele
Copy link
Contributor Author

ldornele commented Jan 2, 2026

Hey @rafabene, I updated the path from /docs to /standards accordingly.

@xueli181114 xueli181114 merged commit 9ae23ef into openshift-hyperfleet:main Jan 8, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants