Skip to content

docs #1561

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 19 commits into
base: dev
Choose a base branch
from
Draft

docs #1561

wants to merge 19 commits into from

Conversation

chiol
Copy link
Contributor

@chiol chiol commented May 8, 2025

Summary by CodeRabbit

  • New Features

    • Introduced a comprehensive documentation website for ABC User Feedback, including user guides, integration guides, developer documentation, community support, and release information.
    • Added a CLI tool (auf-cli) for streamlined setup, management, and cleanup of the ABC User Feedback infrastructure using Docker, with commands for initialization, starting, stopping, and cleaning up resources.
  • Documentation

    • Added extensive documentation covering system requirements, installation (Docker, CLI, manual), configuration, initial setup, quick start, user and developer guides, API integration, webhooks, and more.
    • Included templates and scaffolding for future documentation expansion.
  • Chores

    • Updated and simplified Docker Compose and workflow files for improved multi-platform support and easier infrastructure management.
    • Added configuration for building and serving documentation with Docusaurus.
    • Improved CLI package metadata and scripts for better usability and maintainability.
  • Refactor

    • Modularized CLI commands for better structure and maintainability.
    • Simplified Docker-related files and removed unused services and network configurations.
  • Style

    • Added and customized CSS for documentation site theming and improved user interface consistency.
  • Bug Fixes

    • Fixed minor configuration and environment variable issues in Docker and CLI setup files.

chiol added 11 commits April 22, 2025 17:52
- Introduced `docker-compose.generated.yml`, `docker-compose.infra-amd64.yml`, and `docker-compose.infra-arm64.yml` for managing services.
- Created a template `docker-compose.template.yml` for environment variable substitution.
- Removed deprecated `auf-cli.ts` and refactored CLI commands into separate modules: `init.ts`, `start.ts`, and `stop.ts`.
- Implemented utility functions for path management and logging.
- Updated Dockerfiles for API and web services to improve build processes.
- Added `docker-bake.hcl` for multi-platform builds.
- Enhanced error handling and logging throughout the CLI commands.
- Updated package.json and tsconfig.json for better structure and build outputs.
Copy link

coderabbitai bot commented May 8, 2025

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Walkthrough

This update introduces a comprehensive documentation site for the ABC User Feedback project using Docusaurus, adding extensive user, integration, and developer guides. The CLI tool is refactored for modularity, with new command modules and utilities, and its entry point is renamed. Docker Compose and Dockerfile configurations are streamlined, removing obsolete services and tokens, and introducing multi-platform build support with Docker Bake.

Changes

File(s) / Group Change Summary
.github/workflows/ci.yaml, .github/workflows/docker-dev-image.yml, .github/workflows/docker-prod-image.yml Workflow triggers updated for quoting style; removed Turbo tokens and related env vars; consolidated Docker build jobs; switched to Docker Bake for multi-platform builds; streamlined metadata and push logic.
README.md Removed "Quick Start" section; retitled Docker image build section.
apps/cli/.gitignore, apps/docs/.gitignore Added ignore rules for user feedback artifacts and documentation build/dependency files.
apps/cli/bin/assets/config.toml Reordered OpenSearch/SMTP env vars; changed SMTP host to smtp4dev.
apps/cli/bin/assets/docker-compose.generated.yml New Docker Compose file defining web and api services with environment variables and host mappings.
apps/cli/bin/assets/docker-compose.infra-amd64.yml, apps/cli/bin/assets/docker-compose.infra-arm64.yml, docker/docker-compose.infra-amd64.yml, docker/docker-compose.infra-arm64.yml Simplified infra compose files: removed e2e MySQL, switched to named volumes, updated OpenSearch images, removed explicit networks and container names.
apps/cli/bin/auf-cli.ts Deleted monolithic CLI script; replaced by modular command structure.
apps/cli/bin/command/clean.ts, apps/cli/bin/command/init.ts, apps/cli/bin/command/start.ts, apps/cli/bin/command/stop.ts Added modular CLI command handlers for clean, init, start, and stop operations, each with logging and error handling.
apps/cli/bin/index.ts New CLI entry point using Commander, registering modular commands.
apps/cli/bin/utils/get-destination-path.ts, apps/cli/bin/utils/get-source-path.ts, apps/cli/bin/utils/logger.ts New utility modules for path resolution and logging with configurable log levels.
apps/cli/package.json Updated metadata, incremented version, changed bin entry to index.js, updated scripts.
apps/cli/tsconfig.json Removed path alias configuration.
apps/docs/README.md, apps/docs/package.json, apps/docs/tsconfig.json, apps/docs/docusaurus.config.ts, apps/docs/sidebars.ts Added Docusaurus documentation app with config, package, and sidebar setup.
apps/docs/create-docs-structure.sh New script to generate a structured documentation directory tree with templates.
apps/docs/docs/**, apps/docs/src/components/HomepageFeatures/**, apps/docs/src/css/custom.css, apps/docs/src/pages/index.* Added comprehensive documentation: project overview, user/integration/developer guides, quick start, system requirements, configuration, API/webhook/image integration, contribution guide, community support, release info, and homepage components/styles.
docker/api.dockerfile, docker/web.dockerfile Removed Turbo tokens from build; switched CMD to exec form.
docker/docker-bake.hcl New Docker Bake configuration for multi-platform image builds of API and Web.
docker/docker-compose.yml Removed explicit network configuration; added SMTP env vars to API service.
docker/docs.dockerfile New multi-stage Dockerfile for building and running the documentation site.

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant CLI
    participant Docker
    participant FileSystem

    User->>CLI: npx auf-cli init
    CLI->>FileSystem: Copy config.toml template if not exists
    CLI->>User: Log setup instructions

    User->>CLI: npx auf-cli start
    CLI->>FileSystem: Read config.toml
    CLI->>CLI: Validate env vars
    CLI->>Docker: Start infra containers (MySQL, SMTP, OpenSearch)
    CLI->>FileSystem: Generate docker-compose.generated.yml
    CLI->>Docker: Pull images and start API/Web containers
    CLI->>User: Output service URLs and JWT secret

    User->>CLI: npx auf-cli stop
    CLI->>Docker: Stop all containers for abc-user-feedback

    User->>CLI: npx auf-cli clean
    CLI->>Docker: Remove Docker volumes for abc-user-feedback
Loading
sequenceDiagram
    participant GitHubActions
    participant DockerBuildx
    participant DockerBake
    participant DockerHub

    GitHubActions->>DockerBuildx: Setup Buildx with container driver
    GitHubActions->>DockerBake: Bake API and Web images (multi-platform)
    DockerBake->>DockerHub: Push built images (API/Web) with tags
Loading

Possibly related PRs

  • line/abc-user-feedback#1458: Updates CLI package version and restructures CLI source files, related by versioning and CLI entry point changes.

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link

@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: 39

🔭 Outside diff range comments (2)
apps/docs/docs/03-user-guide/04-settings/01-user-role-management.md (1)

9-22: 🛠️ Refactor suggestion

Populate documentation sections
All main sections (개요, 주요 내용, 추가 정보) currently contain placeholder text. Before merging, ensure these are filled with real guidance on user and role management.

apps/docs/docs/04-integration-guide/01-api-overview.md (1)

109-110: 🛠️ Refactor suggestion

Add instructions for accessing the Swagger documentation.

The document mentions Swagger documentation at /docs but doesn't specify the full URL or how to access it.

이 문서는 ABC User Feedback의 피드백 및 이슈 관리 API 사용 방법을 간략히 정리한 것입니다. 보다 자세한 API 명세는 Swagger 문서(`/docs`)를 참고하세요.
+
+Swagger 문서는 API 서버가 실행 중일 때 다음 URL에서 접근할 수 있습니다:
+
+```
+http://localhost:4000/docs
+```
+
+로컬 개발 환경이 아닌 경우에는 해당 API 서버의 도메인을 사용하세요:
+
+```
+https://{your-api-domain}/docs
+```
🧹 Nitpick comments (78)
apps/docs/.gitignore (4)

1-3: Scope of node_modules ignore is correct but consider workspace patterns.

Since this .gitignore is placed under apps/docs, /node_modules will only ignore apps/docs/node_modules. If you intend to ignore modules in any nested workspace, you can use:

node_modules/

without the leading slash.


7-10: Expand cache ignores to include all cache artifacts.

You’ve added .docusaurus and .cache-loader, but Docusaurus also generates a .cache directory. To cover all cache files, add:

+/.cache

11-17: Consolidate environment file patterns.

Listing each .env variant can be simplified. For example:

.env*

or more granular:

.env*.local
.env

This will cover all environment files without enumerating each one.


18-20: Include pnpm debug logs if using pnpm.

You cover npm and yarn logs; if your team uses pnpm, consider adding:

pnpm-debug.log*

to ignore pnpm debug output as well.

apps/docs/docs/01-introduction/_category_.json (1)

6-6: Fix Korean grammar in Introduction category description
Add the particle “에” for correct phrasing.

Apply this diff:

-    "description": "소개 대한 문서입니다."
+    "description": "소개에 대한 문서입니다."
docker/web.dockerfile (1)

1-2: Ensure docs are updated.
This Dockerfile is duplicated in /docs/handbook/deploying-with-docker; please synchronize this change there to keep the documentation accurate.

README.md (1)

125-125: Improve heading formatting for Docker build instructions.
The heading ### Option3. Build Docker Image lacks a space and consistent punctuation. Consider using ### Option 3: Build Docker Image for clarity and to align with the rest of the document’s style.

apps/docs/src/components/HomepageFeatures/styles.module.css (1)

1-11: Feature section styles are clear
The .features flex layout with vertical centering and padding provides a clean container, and fixed 200px dimensions on .featureSvg ensure consistent SVG sizing. For improved reusability, consider extracting the 200px value into a CSS variable or using responsive sizing (e.g., max-width: 100% on smaller screens).

apps/docs/docs/06-community-support/03-getting-help.md (1)

11-21: Populate documentation content.
Sections (개요, 주요 내용, 추가 정보) currently contain placeholder text. Replace these with concrete guidance, examples, and links to relevant resources to provide value to end users.

apps/docs/README.md (2)

1-3: Include prerequisites and environment setup.
Add a Prerequisites section to specify required Node.js and Yarn versions, for example:

## Prerequisites

- Node.js >= 14.x
- Yarn >= 1.22

7-39: Specify code block languages.
Add language identifiers (e.g., bash or shell) to all fenced code blocks to enable proper syntax highlighting.

apps/docs/docs/02-getting-started/_category_.json (1)

6-6: Fix corrupted placeholder text in description
The description field currently contains garbled characters ("�� 대한 문서입니다."). Please replace it with a meaningful Korean description, for example:

-    "description": "�� 대한 문서입니다."
+    "description": "시작하기 가이드를 제공합니다."
apps/cli/bin/utils/get-source-path.ts (2)

18-20: Add explicit return type and consider using path.resolve
Specifying a return type improves readability, and path.resolve ensures an absolute path without relying on join semantics:

-const getSourcePath = (pathname: string) => {
-  return path.join(__dirname, '../assets', pathname);
-};
+const getSourcePath = (pathname: string): string => {
+  return path.resolve(__dirname, '../assets', pathname);
+};

22-23: Add unit tests for getSourcePath
This utility is critical for locating asset files—unit tests will catch regressions (e.g., unexpected path separators). Would you like me to generate a Jest/TS test scaffold for this function?

apps/docs/docs/03-user-guide/04-settings/02-sso-configuration.md (1)

11-21: Provide actual documentation content
Sections “개요”, “주요 내용”, and “추가 정보” currently contain placeholder text. Please fill in the SSO setup steps, configuration details, and any relevant links or code snippets.

apps/docs/src/css/custom.css (1)

8-17: Ensure accessibility compliance
Verify that your chosen color palette (both light and dark variants) and highlighted code line backgrounds meet WCAG contrast requirements. You may need to adjust opacity or hue to maintain readability for all users.

apps/cli/bin/utils/get-destination-path.ts (1)

16-28: Add unit tests for this utility.

To improve maintainability and catch regressions, consider adding tests that verify:

  • The directory is created when absent.
  • The returned path correctly concatenates process.cwd() with the filename.
apps/cli/bin/command/stop.ts (1)

24-24: Fix typo in log message

There's a typo in the log message: "volumne" should be "volume".

-  logger.info('Local data are backed up to docker volumne.');
+  logger.info('Local data are backed up to docker volume.');
apps/cli/bin/command/clean.ts (1)

20-26: Consider handling the case when no volumes exist

The current implementation would fail if no volumes match the filter, as docker volume rm would receive an empty argument list.

Consider making the volume deletion more robust by checking if volumes exist before trying to remove them:

export default () => {
  logger.info('Deletes existing mounted docker volumes...');
-  execSync(
-    'docker volume rm $(docker volume ls --filter label=com.docker.compose.project=abc-user-feedback -q)',
-    { stdio: 'inherit' },
-  );
+  const volumeList = execSync(
+    'docker volume ls --filter label=com.docker.compose.project=abc-user-feedback -q'
+  ).toString().trim();
+  
+  if (volumeList) {
+    execSync(`docker volume rm ${volumeList}`, { stdio: 'inherit' });
+  } else {
+    logger.info('No volumes found to delete.');
+  }
};
apps/cli/bin/command/init.ts (2)

2-2: Update the copyright year.

The copyright year is set to 2025, which is in the future. This should be updated to the current year.

- * Copyright 2025 LY Corporation
+ * Copyright 2024 LY Corporation

36-41: Consider extracting URLs to constants or configuration.

The GitHub documentation URLs are hardcoded in the code. If the repository is renamed or the documentation structure changes, these links will break.

+ const API_DOCS_URL = 'https://github.com/line/abc-user-feedback/blob/main/apps/api/README.md#environment-variables';
+ const WEB_DOCS_URL = 'https://github.com/line/abc-user-feedback/blob/main/apps/web/README.md#environment-variables';

  logger.info('Checkout API and Web Configuration for more details.');
- logger.info(
-   '[API] https://github.com/line/abc-user-feedback/blob/main/apps/api/README.md#environment-variables ',
- );
- logger.info(
-   '[Web] https://github.com/line/abc-user-feedback/blob/main/apps/web/README.md#environment-variables ',
- );
+ logger.info(`[API] ${API_DOCS_URL}`);
+ logger.info(`[Web] ${WEB_DOCS_URL}`);
apps/docs/docs/04-integration-guide/01-api-overview.md (1)

20-25: Consider adding a complete request/response example.

The JSON example shows the request structure but doesn't include a response example. Adding a response example would make the documentation more comprehensive.

{
  "message": "피드백 메시지",
  "issueNames": ["이슈 이름1", "이슈 이름2"]
}

+Response:
+```json
+{

  • "id": "feedback-id",
  • "message": "피드백 메시지",
  • "createdAt": "2024-05-14T10:30:45Z",
  • "issues": [
  • {
  •  "id": "issue-id-1",
    
  •  "name": "이슈 이름1"
    
  • },
  • {
  •  "id": "issue-id-2",
    
  •  "name": "이슈 이름2"
    
  • }
  • ]
    +}
    +```
apps/docs/sidebars.ts (1)

19-30: Consider cleaning up commented examples.
The tutorialSidebar block serves as a helpful guide but may clutter the file over time. You could move these examples into a separate sidebars.examples.ts or remove them once you finalize your sidebar structure.

apps/cli/bin/index.ts (1)

55-56: Add a version flag to the CLI.
It’s best practice to include program.version(...) so users can run auf --version and confirm the installed CLI version. For example:

+program.version(require('../../package.json').version);
 program.parse(process.argv);
docker/docs.dockerfile (3)

2-14: Optimize build context and layer caching
Before COPY . ., add a .dockerignore that excludes large or unnecessary directories (e.g., node_modules, .git, build artifacts). This will drastically reduce your build context size and speed up rebuilds when unrelated files change.


30-37: Pin Turbo for reproducible builds
You’re invoking Turbo via pnpm dlx turbo run build --filter=docs..., which fetches the latest Turbo version each time. To ensure consistent CI builds, consider adding turbo to your devDependencies with a fixed version and then using:

-RUN pnpm dlx turbo run build --filter=docs...
+RUN pnpm dlx turbo@<version> run build --filter=docs...

41-46: Use a static-server for production
Currently the container runs pnpm start (dev mode). For a production-oriented docs image, pre-build the static site (pnpm build) and serve the output with a lightweight HTTP server (e.g., serve, nginx) to improve performance and security.

docker/docker-compose.infra-amd64.yml (1)

43-44: Unify environment variable declaration style
For consistency across services, prefer the map-style YAML syntax instead of list-style VAR=VALUE entries. Example:

environment:
  OPENSEARCH_JAVA_OPTS: "-Xms512m -Xmx512m"
  DISABLE_SECURITY_DASHBOARDS_PLUGIN: "true"

Also applies to: 67-68

apps/docs/src/components/HomepageFeatures/index.tsx (3)

1-4: Refine component return types
Rather than using the broad ReactNode for your component signatures, consider using JSX.Element (or React.FC) to more accurately convey that these functions return valid JSX.


12-21: Prefer static imports over dynamic require()
Switching to static imports lets TypeScript and your bundler better track and tree-shake assets:

-import Svg: require('@site/static/img/undraw_docusaurus_mountain.svg').default,
+import MountainSvg from '@site/static/img/undraw_docusaurus_mountain.svg';

Then reference MountainSvg in your FeatureList.


64-66: Use stable keys in lists
Instead of key={idx}, use a unique identifier like the feature title to prevent potential re-render issues if the list order ever changes:

- {FeatureList.map((props, idx) => (
-   <Feature key={idx} {...props} />
- ))}
+ {FeatureList.map((props) => (
+   <Feature key={props.title} {...props} />
+ ))}
apps/docs/docs/03-user-guide/02-feedback-management/01-viewing-filtering.md (2)

1-5: Remove trailing frontmatter delimiter
You have a second --- at the bottom of the file intended as a horizontal rule, which can be mistaken for YAML frontmatter. Remove it or replace it with ***/___ if you need a visual separator.


23-23: Enable the feedback screenshot
Instead of commenting out the example image, insert it with proper Markdown and the correct path:

![Feedback 목록 화면 예시](/assets/01-feedback-tag.png)

Ensure your static/assets directory aligns with this path.

apps/docs/docs/03-user-guide/02-feedback-management/03-edit-feedback.md (3)

30-31: Uncomment or properly embed screenshot
The image reference is currently commented out. If an illustrative screenshot is intended, uncomment and ensure the path is correct; otherwise, remove the commented code to keep the source clean.


32-36: Ensure consistency in list formats
You use a numbered list for "피드백 수정 방법" but a bullet list for "이슈 수정 방법". Consider using a numbered list for sequential steps here as well to maintain clarity and uniformity.


48-48: Remove stray frontmatter delimiter
The standalone --- at the end may be misinterpreted as a frontmatter boundary and could break rendering. If you intended a horizontal rule, replace it with ***; otherwise, simply remove this line.

apps/docs/docs/04-integration-guide/02-image-storage.md (2)

23-26: Clarify whitelist configuration
You mention that image URLs must be on a pre-registered whitelist. Consider adding a pointer or link to where/how to configure this whitelist (e.g., environment variables, config file, or admin UI) to make the instructions actionable.


27-28: Use Docusaurus admonition for better styling
Instead of a plain blockquote for the note, leverage Docusaurus Admonitions (e.g., :::info ... :::) to achieve consistent formatting and visual prominence.

apps/docs/docusaurus.config.ts (1)

39-41: Ensure editUrl points to the correct branch
The path includes tree/feat/docs/apps/docs; verify that this matches your primary branch or adjust to main/master so that the “Edit this page” links resolve correctly.

apps/cli/bin/assets/docker-compose.infra-amd64.yml (3)

1-2: Specify Docker Compose version
For consistent parsing across Docker CLI versions, add a top-level version key (e.g., version: '3.8') at the beginning of the file.


12-17: Avoid hardcoding credentials
Environment variables like MYSQL_ROOT_PASSWORD and MYSQL_PASSWORD are in plain text. For better security, externalize these via an .env file, Docker secrets, or CI-injected variables.


71-75: Explicitly define named volumes
Listing volume names without a mapping can lead to confusion. Use empty mappings to make intent explicit:

volumes:
  mysql: {}
  smtp4dev: {}
  opensearch: {}
apps/docs/docs/00.index.md (4)

1-4: Add a title in frontmatter for consistency
Frontmatter currently lacks a title field. Adding title: '환영합니다' (or an English equivalent) helps Docusaurus generate proper page metadata.


6-9: Unify language in headings
The H1 is in English (# Welcome) but the rest of the content is Korean. For consistency, change the H1 to Korean (e.g., # 환영합니다) to match the document’s language.


10-11: Fix static asset path
Use the Docusaurus static assets convention—files under apps/docs/static/assets are served from /assets. Update the markdown to:

![ABC User Feedback](/assets/cover.png)

16-19: Add controls attribute to <video>
Without controls, users cannot control playback. Update to:

<video src="https://github.com/user-attachments/assets/a2ef7a1a-41ec-4cec-b7d1-bda5fbd7d48b" controls width="100%" />
apps/docs/docs/04-integration-guide/03-webhooks.md (1)

71-76: Enhance security by verifying webhook signatures.
Consider adding a note under “웹훅 처리 가이드” instructing consumers to validate request authenticity (e.g., HMAC 서명 검증). This will help prevent spoofed webhook calls.

Suggested snippet:

- 웹훅 요청을 처리하기 전에, 요청 헤더의 서명을 검증하여 페이로드의 무결성을 확인하세요.
apps/docs/docs/02-getting-started/03-initial-setup.md (1)

4-4: Fix grammatical error in description frontmatter.
Update to correct Korean grammar:

-description: '초기 설정 대한 설명입니다.'
+description: '초기 설정에 대한 설명입니다.'
apps/docs/docs/05-developer-guide/03-contribution-guide.md (1)

4-4: Correct the corrupted description frontmatter.
The current value is garbled. For clarity, use:

-description: '�� 대한 설명입니다.'
+description: '코드 기여 가이드에 대한 설명입니다.'
apps/docs/docs/02-getting-started/02-installation/04-configuration.md (1)

4-4: Fix grammatical error in description frontmatter.
Correct the Korean phrasing:

-description: '환경 변수 구성 대한 설명입니다.'
+description: '환경 변수 구성에 대한 설명입니다.'
apps/docs/docs/03-user-guide/02-feedback-management/00-create-feedback.md (2)

17-20: Ensure consistency in UI labels localization.
You reference Channel List and Field Management in English. Either translate these menu items to Korean or note that they appear in English in the UI for consistency.


21-21: Decide on the commented-out screenshot.
The image reference is currently commented out:

<!-- ![Feedback 필드 관리 화면](../../static/assets/803a0acc-2210-4280-af0a-a2dd93235137.png) -->

Either remove it or uncomment and ensure the file exists at that path.

apps/docs/docs/01-introduction/04-use-cases.md (1)

4-4: Fix the frontmatter description grammar.

The description reads “사용 사례 대한 설명입니다.” – the particle is missing. It should be:

description: '사용 사례에 대한 설명입니다.'
apps/cli/bin/command/start.ts (2)

44-58: Improve architecture detection logic

The architecture detection function has a default case that returns 'arm', which might not be appropriate for unknown architectures.

Consider updating the default case to throw an error or log a warning:

    default:
-      return 'arm';
+      logger.warn(`Unknown architecture: ${arch}, defaulting to 'arm'`);
+      return 'arm';

118-119: Translate Korean comment to English

There's a Korean comment while the rest of the codebase uses English comments. For consistency, consider translating this comment.

-// 서비스가 정상적으로 시작되었는지 확인하는 함수
+// Function to check if services are running properly
apps/cli/bin/utils/logger.ts (1)

92-96: Consider using console.warn for warnings

The warn method uses console.log instead of console.warn, which would be more appropriate for warnings and would provide visual distinction in the console output.

  warn(message: string, ...args: unknown[]): void {
    if (this.shouldLog(LogLevel.WARN)) {
-      console.log(this.formatMessage(message), ...args);
+      console.warn(this.formatMessage(message), ...args);
    }
  }
apps/docs/docs/02-getting-started/04-quick-start.md (1)

115-115: Uncomment or update image references

Several image references are commented out. Either uncomment them if the images are available, or remove the comments completely if they're placeholders for future content.

-<!-- ![피드백 목록](../../static/assets/quick-start/feedback-list.png) -->
+![피드백 목록](../../static/assets/quick-start/feedback-list.png)

If the images aren't ready yet, add a TODO comment indicating they need to be added later.

Also applies to: 127-127, 139-139, 147-147

apps/docs/docs/02-getting-started/01-system-requirements.md (2)

1-5: Fix frontmatter description grammar.
The description frontmatter reads

description: '시스템 요구사항 대한 설명입니다.'

It should include the particle "에" as follows:

-description: '시스템 요구사항 대한 설명입니다.'
+description: '시스템 요구사항에 대한 설명입니다.'

151-154: Consider using Docusaurus-friendly links without .md extension.
The next-step links include .md suffix (e.g., ./02-installation/01-docker-hub-images.md), which can lead to 404s. Prefer link slugs or absolute paths, for example:

- [Docker Hub 이미지 사용](./02-installation/01-docker-hub-images.md)
+ [Docker Hub 이미지 사용](./02-installation/01-docker-hub-images)
apps/docs/docs/03-user-guide/01-dashboard-overview.md (2)

23-25: Localize UI label “Dashboard”.
The text instructs users to click the English word "Dashboard". For consistency with Korean docs, consider translating it (e.g. "대시보드") or clarifying that the menu uses the English term.


176-179: Unify link style and drop .md extensions.
Next-step links mix .md extensions and absolute paths. To keep links consistent and avoid broken paths, remove the .md and use relative slugs:

- [피드백 관리](../03-user-guide/02-feedback-management/01-viewing-filtering.md)
+ [피드백 관리](../03-user-guide/02-feedback-management/01-viewing-filtering)
apps/docs/create-docs-structure.sh (3)

1-4: Add strict error handling.
To make the script exit on errors and catch undefined vars, add at the top:

+ set -euo pipefail

This enhances robustness when generating the docs scaffold.


65-74: Avoid overwriting existing category metadata.
create_category always rewrites _category_.json, which can clobber manual edits. Consider guarding it like create_doc_file does:

if [ -f "$category_dir/_category_.json" ]; then
  echo "Category metadata exists: $category_dir/_category_.json"
  return
fi

159-164: Protect index.md from accidental overwrite.
The script regenerates index.md unconditionally. If someone has customized the home page, those changes will be lost. Wrap creation in a file-exists check:

if [ -f "$DOCS_ROOT/index.md" ]; then
  echo "Index already exists: $DOCS_ROOT/index.md"
else
  # create index.md here
fi
apps/docs/docs/01-introduction/03-architecture-overview.md (3)

1-5: Fix frontmatter description grammar.
The description currently reads

description: '아키텍처 개요 대한 설명입니다.'

It should include the particle "에":

-description: '아키텍처 개요 대한 설명입니다.'
+description: '아키텍처 개요에 대한 설명입니다.'

15-34: Enhance the architecture diagram with Mermaid.
ASCII art works, but Docusaurus supports Mermaid for clearer, maintainable diagrams. For example:

graph LR
  ClientApp[클라이언트 애플리케이션] --> NextJS(Next.js)
  NextJS --> API(NestJS)
  API --> MySQL
  API --> OpenSearch
  API --> SMTP
Loading

45-53: Normalize nested list indentation.
Ensure that sub-items under “피드백 수집” are indented consistently (4 spaces) so they render properly:

-   - 사용자가 클라이언트 애플리케이션을 통해 피드백 제출
+    - 사용자가 클라이언트 애플리케이션을 통해 피드백 제출
apps/docs/docs/01-introduction/01-project-overview.md (3)

1-5: Fix frontmatter description grammar.
The description reads

description: '프로젝트 개요 대한 설명입니다.'

It should be:

-description: '프로젝트 개요 대한 설명입니다.'
+description: '프로젝트 개요에 대한 설명입니다.'

47-63: Consider using Mermaid for the component diagram.
ASCII art is helpful but not interactive. Converting to Mermaid improves readability and integration:

graph LR
  Web[웹 인터페이스(Next.js)] <---> API[API 서버(NestJS)]
  API --> MySQL[MySQL 데이터베이스]
  API --> OpenSearch[OpenSearch 엔진]
  API --> SMTP[SMTP 서버]
Loading

93-96: Verify and unify next-step links.
The link to the installation guide uses an absolute category path (/docs/category/설치-가이드), which may not match your slug setup. Prefer relative linking to the first doc in that section:

- [설치 가이드](/docs/category/설치-가이드)
+ [설치 가이드](../02-getting-started/02-installation/01-docker-hub-images)
apps/docs/docs/02-getting-started/02-installation/01-docker-hub-images.md (2)

1-5: Consider adding an explicit slug for better URL control.

If you want to customize this page’s URL or ensure consistency across locales, you can add a slug key in the frontmatter, for example:

slug: '/docs/getting-started/installation/docker-hub-images'

13-17: Provide consistent bold formatting for component names.

The list of provided Docker images uses bold text, but the phrasing could be tightened:

  • 웹 관리자 프론트엔드: Next.js 기반의 웹 인터페이스
  • API 백엔드: NestJS 기반의 API 서버

Ensuring each item follows the same pattern enhances readability.

apps/docs/docs/02-getting-started/02-installation/02-cli-tool.md (2)

15-20: Add space between "CLI" and its inline code.

For readability, change CLI(\auf-cli`)toCLI (`auf-cli`)`, e.g.:

- ABC User Feedback CLI(`auf-cli`)는
+ ABC User Feedback CLI (`auf-cli`)는

72-79: Clarify data-loss warning for the clean command.

The note "주의: 이 작업은 모든 데이터를 삭제하므로 백업이 필요한 경우 미리 데이터를 백업하세요." is important. Consider linking to a backup guide or providing an example backup command to help users.

apps/docs/docs/05-developer-guide/02-local-development.md (2)

81-99: Add syntax highlighting to .env code block.

To improve readability, include a language tag (e.g., ini):

- ```
- # 필수 환경 변수
+ ```ini
+ # 필수 환경 변수

167-172: Spell out migration command with inline comment.

For clarity, annotate the migration step:

- npm run migration:run
+ npm run migration:run    # TypeORM 마이그레이션 실행
apps/docs/docs/02-getting-started/02-installation/03-manual-setup.md (1)

91-99: Add syntax highlighting to .env code block.

Use a language tag (e.g., bash or ini) for better syntax highlighting:

- ```
+ ```bash
apps/docs/docs/01-introduction/02-key-features.md (1)

13-14: Use absolute paths for static assets.

Relative paths (../../static/assets/...) can break in nested routes. Use absolute paths, e.g.:

![Feedback Tag](/assets/01-feedback-tag.png)
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 75b0d12 and 3ddde55.

⛔ Files ignored due to path filters (39)
  • apps/docs/static/assets/01-feedback-tag.png is excluded by !**/*.png
  • apps/docs/static/assets/02-Issue-Kanban.png is excluded by !**/*.png
  • apps/docs/static/assets/03-issue-tracker.png is excluded by !**/*.png
  • apps/docs/static/assets/04-single-signon.png is excluded by !**/*.png
  • apps/docs/static/assets/05-role-management.png is excluded by !**/*.png
  • apps/docs/static/assets/06-dashboard.png is excluded by !**/*.png
  • apps/docs/static/assets/cover.png is excluded by !**/*.png
  • apps/docs/static/assets/dashboard-2.png is excluded by !**/*.png
  • apps/docs/static/assets/dashboard.png is excluded by !**/*.png
  • apps/docs/static/assets/feedback-management/feedback-requiest-code.png is excluded by !**/*.png
  • apps/docs/static/assets/initial-setup/add-field.png is excluded by !**/*.png
  • apps/docs/static/assets/initial-setup/api-key-created.png is excluded by !**/*.png
  • apps/docs/static/assets/initial-setup/channel-creation-complete.png is excluded by !**/*.png
  • apps/docs/static/assets/initial-setup/create-channel-1.png is excluded by !**/*.png
  • apps/docs/static/assets/initial-setup/create-channel-2.png is excluded by !**/*.png
  • apps/docs/static/assets/initial-setup/create-project-1.png is excluded by !**/*.png
  • apps/docs/static/assets/initial-setup/create-project-2.png is excluded by !**/*.png
  • apps/docs/static/assets/initial-setup/create-project-3.png is excluded by !**/*.png
  • apps/docs/static/assets/initial-setup/create-tenant-1.png is excluded by !**/*.png
  • apps/docs/static/assets/initial-setup/create-tenant-2.png is excluded by !**/*.png
  • apps/docs/static/assets/initial-setup/create-tenant-3.png is excluded by !**/*.png
  • apps/docs/static/assets/initial-setup/create-tenant-4.png is excluded by !**/*.png
  • apps/docs/static/assets/initial-setup/email-verification.png is excluded by !**/*.png
  • apps/docs/static/assets/initial-setup/field-preview.png is excluded by !**/*.png
  • apps/docs/static/assets/initial-setup/login.png is excluded by !**/*.png
  • apps/docs/static/assets/initial-setup/project-creation-complete.png is excluded by !**/*.png
  • apps/docs/static/assets/initial-setup/register-member.png is excluded by !**/*.png
  • apps/docs/static/assets/initial-setup/role-management.png is excluded by !**/*.png
  • apps/docs/static/assets/initial-setup/welcome-screen.png is excluded by !**/*.png
  • apps/docs/static/assets/main.png is excluded by !**/*.png
  • apps/docs/static/assets/sample.png is excluded by !**/*.png
  • apps/docs/static/img/docusaurus-social-card.jpg is excluded by !**/*.jpg
  • apps/docs/static/img/docusaurus.png is excluded by !**/*.png
  • apps/docs/static/img/favicon.ico is excluded by !**/*.ico
  • apps/docs/static/img/logo.svg is excluded by !**/*.svg
  • apps/docs/static/img/undraw_docusaurus_mountain.svg is excluded by !**/*.svg
  • apps/docs/static/img/undraw_docusaurus_react.svg is excluded by !**/*.svg
  • apps/docs/static/img/undraw_docusaurus_tree.svg is excluded by !**/*.svg
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (84)
  • .github/workflows/ci.yaml (1 hunks)
  • .github/workflows/docker-dev-image.yml (3 hunks)
  • .github/workflows/docker-prod-image.yml (2 hunks)
  • README.md (1 hunks)
  • apps/cli/.gitignore (1 hunks)
  • apps/cli/bin/assets/config.toml (1 hunks)
  • apps/cli/bin/assets/docker-compose.generated.yml (1 hunks)
  • apps/cli/bin/assets/docker-compose.infra-amd64.yml (3 hunks)
  • apps/cli/bin/assets/docker-compose.infra-arm64.yml (4 hunks)
  • apps/cli/bin/auf-cli.ts (0 hunks)
  • apps/cli/bin/command/clean.ts (1 hunks)
  • apps/cli/bin/command/init.ts (1 hunks)
  • apps/cli/bin/command/start.ts (1 hunks)
  • apps/cli/bin/command/stop.ts (1 hunks)
  • apps/cli/bin/index.ts (1 hunks)
  • apps/cli/bin/utils/get-destination-path.ts (1 hunks)
  • apps/cli/bin/utils/get-source-path.ts (1 hunks)
  • apps/cli/bin/utils/logger.ts (1 hunks)
  • apps/cli/package.json (1 hunks)
  • apps/cli/tsconfig.json (1 hunks)
  • apps/docs/.gitignore (1 hunks)
  • apps/docs/README.md (1 hunks)
  • apps/docs/create-docs-structure.sh (1 hunks)
  • apps/docs/docs/00.index.md (1 hunks)
  • apps/docs/docs/01-introduction/01-project-overview.md (1 hunks)
  • apps/docs/docs/01-introduction/02-key-features.md (1 hunks)
  • apps/docs/docs/01-introduction/03-architecture-overview.md (1 hunks)
  • apps/docs/docs/01-introduction/04-use-cases.md (1 hunks)
  • apps/docs/docs/01-introduction/_category_.json (1 hunks)
  • apps/docs/docs/02-getting-started/01-system-requirements.md (1 hunks)
  • apps/docs/docs/02-getting-started/02-installation/01-docker-hub-images.md (1 hunks)
  • apps/docs/docs/02-getting-started/02-installation/02-cli-tool.md (1 hunks)
  • apps/docs/docs/02-getting-started/02-installation/03-manual-setup.md (1 hunks)
  • apps/docs/docs/02-getting-started/02-installation/04-configuration.md (1 hunks)
  • apps/docs/docs/02-getting-started/02-installation/_category_.json (1 hunks)
  • apps/docs/docs/02-getting-started/03-initial-setup.md (1 hunks)
  • apps/docs/docs/02-getting-started/04-quick-start.md (1 hunks)
  • apps/docs/docs/02-getting-started/_category_.json (1 hunks)
  • apps/docs/docs/03-user-guide/01-dashboard-overview.md (1 hunks)
  • apps/docs/docs/03-user-guide/02-feedback-management/00-create-feedback.md (1 hunks)
  • apps/docs/docs/03-user-guide/02-feedback-management/01-viewing-filtering.md (1 hunks)
  • apps/docs/docs/03-user-guide/02-feedback-management/02-issue-tagging-system.md (1 hunks)
  • apps/docs/docs/03-user-guide/02-feedback-management/03-edit-feedback.md (1 hunks)
  • apps/docs/docs/03-user-guide/02-feedback-management/_category_.json (1 hunks)
  • apps/docs/docs/03-user-guide/03-issue-management/01-issue-tracker.md (1 hunks)
  • apps/docs/docs/03-user-guide/03-issue-management/02-kanban-mode.md (1 hunks)
  • apps/docs/docs/03-user-guide/03-issue-management/_category_.json (1 hunks)
  • apps/docs/docs/03-user-guide/04-settings/01-user-role-management.md (1 hunks)
  • apps/docs/docs/03-user-guide/04-settings/02-sso-configuration.md (1 hunks)
  • apps/docs/docs/03-user-guide/04-settings/_category_.json (1 hunks)
  • apps/docs/docs/03-user-guide/_category_.json (1 hunks)
  • apps/docs/docs/04-integration-guide/01-api-overview.md (1 hunks)
  • apps/docs/docs/04-integration-guide/02-image-storage.md (1 hunks)
  • apps/docs/docs/04-integration-guide/03-webhooks.md (1 hunks)
  • apps/docs/docs/04-integration-guide/04-external-systems.md (1 hunks)
  • apps/docs/docs/04-integration-guide/_category_.json (1 hunks)
  • apps/docs/docs/05-developer-guide/01-detailed-architecture.md (1 hunks)
  • apps/docs/docs/05-developer-guide/02-local-development.md (1 hunks)
  • apps/docs/docs/05-developer-guide/03-contribution-guide.md (1 hunks)
  • apps/docs/docs/05-developer-guide/04-extensions.md (1 hunks)
  • apps/docs/docs/05-developer-guide/_category_.json (1 hunks)
  • apps/docs/docs/06-community-support/01-faq.md (1 hunks)
  • apps/docs/docs/06-community-support/02-known-issues.md (1 hunks)
  • apps/docs/docs/06-community-support/03-getting-help.md (1 hunks)
  • apps/docs/docs/06-community-support/_category_.json (1 hunks)
  • apps/docs/docs/07-release-info/01-version-history.md (1 hunks)
  • apps/docs/docs/07-release-info/02-roadmap.md (1 hunks)
  • apps/docs/docs/07-release-info/_category_.json (1 hunks)
  • apps/docs/docusaurus.config.ts (1 hunks)
  • apps/docs/package.json (1 hunks)
  • apps/docs/sidebars.ts (1 hunks)
  • apps/docs/src/components/HomepageFeatures/index.tsx (1 hunks)
  • apps/docs/src/components/HomepageFeatures/styles.module.css (1 hunks)
  • apps/docs/src/css/custom.css (1 hunks)
  • apps/docs/src/pages/index.module.css (1 hunks)
  • apps/docs/src/pages/index.tsx (1 hunks)
  • apps/docs/tsconfig.json (1 hunks)
  • docker/api.dockerfile (1 hunks)
  • docker/docker-bake.hcl (1 hunks)
  • docker/docker-compose.infra-amd64.yml (3 hunks)
  • docker/docker-compose.infra-arm64.yml (3 hunks)
  • docker/docker-compose.yml (1 hunks)
  • docker/docs.dockerfile (1 hunks)
  • docker/web.dockerfile (1 hunks)
💤 Files with no reviewable changes (1)
  • apps/cli/bin/auf-cli.ts
🧰 Additional context used
🧬 Code Graph Analysis (3)
apps/cli/bin/command/clean.ts (1)
apps/cli/bin/command/stop.ts (1)
  • logger (20-26)
apps/cli/bin/command/stop.ts (1)
apps/cli/bin/command/clean.ts (1)
  • logger (20-26)
apps/cli/bin/command/start.ts (2)
apps/cli/bin/command/clean.ts (1)
  • logger (20-26)
apps/cli/bin/command/stop.ts (1)
  • logger (20-26)
🪛 Checkov (3.2.334)
apps/cli/bin/assets/docker-compose.generated.yml

[MEDIUM] 26-27: Basic Auth Credentials

(CKV_SECRET_4)

🪛 LanguageTool
apps/docs/docs/02-getting-started/02-installation/04-configuration.md

[uncategorized] ~161-~161: Loose punctuation mark.
Context: ...PIRED_TIME환경 변수는 다음 형식을 사용합니다: -Xs: X초 (예: 30s) - Xm: X분 (예: 10m) - ...

(UNLIKELY_OPENING_PUNCTUATION)


[style] ~173-~173: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... 않음**: - 환경 변수 이름이 정확한지 확인하세요. - 환경 변수가 올바른 위치에 설정되었는지 확인하세요. - Docker C...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[uncategorized] ~189-~189: Loose punctuation mark.
Context: ...서버가 실행 중인지 확인하세요. - OPENSEARCH_NODE, OPENSEARCH_USERNAME, `OPENSEARCH_PASS...

(UNLIKELY_OPENING_PUNCTUATION)

🔇 Additional comments (49)
apps/docs/.gitignore (1)

4-6: Build output directory is properly ignored.

The Docusaurus default build folder (build/) is correctly excluded with /build.

apps/cli/.gitignore (1)

1-1: Add gitignore entry for generated directory.
Including abc-user-feedback ensures that auto-generated files and directories are not accidentally committed.

docker/web.dockerfile (1)

70-70: Use exec form for CMD.
Switching to CMD ["node", "apps/web/server.js"] is preferred over the shell form for better signal handling and argument parsing.

apps/cli/tsconfig.json (1)

5-5: Verify module resolution after removing path aliases.
With "baseUrl": "./" now set and custom paths mappings removed, imports must be relative or use the base URL. Please confirm all import paths are updated accordingly and the CLI builds without module resolution errors.

.github/workflows/ci.yaml (1)

5-7: Consistent quoting for branch filters
Swapping to single quotes for the branches patterns in the pull_request and push triggers is a purely stylistic update that improves YAML consistency. No functional impact observed.

apps/docs/tsconfig.json (1)

1-8: Appropriate editor-only TypeScript configuration
The new tsconfig.json correctly extends the Docusaurus base config, sets baseUrl to the docs root for proper module resolution, and excludes build artifacts (.docusaurus, build) from editor tooling. This enhances the developer experience without affecting the production build.

apps/docs/src/pages/index.module.css (1)

6-23: Scoped homepage CSS looks solid
The .heroBanner class applies responsive vertical padding and ensures overflow-handling, while the media query correctly reduces padding on narrower viewports. The .buttons flex layout neatly centers calls-to-action. Using CSS modules prevents unintended global styles.

apps/docs/docs/03-user-guide/_category_.json (1)

2-3: Category metadata is correctly defined.
Label and position are properly set to integrate the "사용자 가이드" section in the sidebar.

apps/docs/docs/07-release-info/_category_.json (1)

2-3: Category metadata looks good.
The "릴리스 정보" label and position are correctly configured for the release info section.

apps/docs/docs/06-community-support/03-getting-help.md (1)

2-3: Frontmatter configuration is valid.
sidebar_position: 3 and title: '지원 받는 방법' correctly define this page in the "커뮤니티 및 지원" sidebar.

docker/api.dockerfile (1)

50-50: Switching to exec form for CMD is good practice.
Using the exec array form ensures proper signal propagation and avoids an extra shell layer.

docker/docker-compose.yml (1)

30-33: Validate SMTP environment variables and container networking context.

The new SMTP settings (SMTP_HOST, SMTP_PORT, SMTP_SENDER, SMTP_BASE_URL) are essential for email functionality, but ensure:

  • The container’s network context can reach smtp4dev and that the SMTP_BASE_URL (http://localhost:3000) correctly resolves from within the api container (it may need to point to the web service hostname rather than localhost).
  • These variables align with the application’s configuration keys and have fallback defaults if omitted.
apps/docs/docs/07-release-info/01-version-history.md (1)

7-21: Approve scaffold for version history page.

The section hierarchy and metadata are well-structured. Remember to replace placeholder text with actual version history details before release.

apps/docs/docs/05-developer-guide/01-detailed-architecture.md (1)

7-21: Approve scaffold for detailed architecture guide.

The document’s structure and frontmatter metadata align well with the developer guide. Ensure the placeholders are populated with the actual architecture details.

apps/cli/bin/utils/get-destination-path.ts (1)

19-25: Function implementation is correct and concise.

getDestinationPath properly ensures the target directory exists and returns the joined path. The synchronous API is acceptable for a CLI context.

apps/docs/docs/06-community-support/02-known-issues.md (1)

7-21: Approve scaffold for known issues page.

The frontmatter and section outlines provide a clear template for documenting issues. Please replace placeholder text with actual known issues before publishing.

apps/cli/package.json (3)

3-17: Package metadata improvements

The addition of detailed metadata (description, repository URL, author, keywords) enhances the package's discoverability and provides better context about its purpose.


7-7: Updated binary path

The bin path change from "./dist/auf-cli.js" to "./dist/index.js" aligns with the CLI restructuring described in the PR summary, moving from a monolithic script to a modular approach.


24-25: Updated start scripts

The script updates correctly reflect the new CLI entry point structure, changing from auf-cli.js/ts to index.js/ts.

apps/cli/bin/command/stop.ts (2)

1-19: License header properly included

The Apache 2.0 license header is correctly included at the top of the file.


20-23: Clean implementation of stop command

The implementation correctly uses Docker Compose with project name to ensure only relevant containers are stopped, with proper logging of actions.

apps/docs/docs/05-developer-guide/04-extensions.md (1)

7-21: Replace placeholder content with actual documentation

The file contains placeholder text for section headings. While this is appropriate for scaffolding, ensure this is replaced with actual content before finalizing the documentation.

apps/docs/docs/04-integration-guide/04-external-systems.md (1)

7-22: Complete the placeholder content for the external systems integration guide.

This file contains only template headings and placeholder text without actual documentation content. Consider adding specific information about:

  • What external systems can be integrated
  • How to configure these integrations
  • Any authentication requirements
  • Code examples for common integration scenarios

This will provide valuable information for users looking to integrate with external systems.

Would you like me to suggest a more detailed structure for this documentation section based on the existing integration guides?

apps/cli/bin/command/init.ts (1)

27-30: LGTM! Good safeguard against overwriting existing configuration.

The code correctly checks if the config file already exists before copying, which prevents accidental overwrites of user configuration.

apps/docs/docs/04-integration-guide/01-api-overview.md (1)

9-9: LGTM! Clear introduction to the API capabilities.

The introduction effectively summarizes the key functionality available through the API.

apps/docs/sidebars.ts (1)

1-34: Autogenerated sidebar configuration is well-structured.
Leveraging type: 'autogenerated' keeps the sidebar in sync with your markdown files and reduces maintenance overhead.

.github/workflows/docker-prod-image.yml (1)

11-58: CI pipeline consolidated and Bake usage is correct.
The refactored build job leverages Buildx and Docker Bake for multi-platform image builds, and metadata steps generate consistent tags. This simplifies the workflow and aligns with the dev-image pipeline.

docker/docker-bake.hcl (1)

1-21: Bake configuration is well-structured
The HCL defines a default group with two multi-platform targets, leveraging GitHub Actions cache for both source and destination. This aligns with the streamlined CI setup and looks solid.

apps/docs/docs/04-integration-guide/03-webhooks.md (1)

1-5: Frontmatter looks correct and descriptive.
The sidebar_position, title, and description are well-formed and align with the doc’s content.

docker/docker-compose.infra-arm64.yml (2)

5-5: Verify the platform setting in the ARM64 compose file.

This file is named infra-arm64 but specifies:

platform: linux/x86_64

Please confirm if this is intentional (e.g., running x86_64 containers on ARM hosts) or if it should be linux/arm64/v8.


9-10: Configuration additions look correct.

The new MySQL command flags (--default-authentication-plugin, --collation-server) and OpenSearch environment variables (OPENSEARCH_JAVA_OPTS, DISABLE_SECURITY_DASHBOARDS_PLUGIN) are appropriately quoted and formatted for YAML.

Also applies to: 43-43, 67-67

apps/docs/docs/03-user-guide/02-feedback-management/02-issue-tagging-system.md (1)

26-27: Confirm UI button labels.

The guide references Add Issue and Convert to Issue buttons—please verify these match the actual application UI or update to the exact localized labels if they differ.

Also applies to: 32-33

apps/docs/docs/03-user-guide/03-issue-management/01-issue-tracker.md (1)

26-28: Verify issue status codes.

Ensure the statuses listed (INIT, ON_REVIEW, IN_PROGRESS, RESOLVED, PENDING) align with the system’s actual status keys and color codes.

apps/docs/docs/03-user-guide/03-issue-management/02-kanban-mode.md (1)

1-73: The Kanban mode documentation is well-structured, clear, and free of typographical or formatting issues.

.github/workflows/docker-dev-image.yml (4)

9-9: Improved workflow structure!

Consolidating the previously separate API and web build jobs into a single job provides better organization and reduces workflow complexity.


15-19: Good addition of Docker Buildx setup

Setting up Docker Buildx with a container driver is essential for multi-platform builds and will enable more efficient image building with layer caching.


20-21: More descriptive step names

Renaming these steps to "Docker meta for API" and "Docker meta for Web" improves workflow readability and better describes their purpose.

Also applies to: 31-32


49-57: Excellent consolidation with Docker Bake

Replacing separate build/push steps with the Docker Bake action is a significant improvement that:

  • Supports multi-platform builds in a single step
  • Centralizes build configuration in the bake file
  • Simplifies tag management by using metadata outputs

This approach follows modern Docker best practices.

apps/cli/bin/command/start.ts (1)

149-194: LGTM! Well-structured CLI command implementation

The main function effectively orchestrates the Docker Compose startup process with appropriate validation and user feedback. The detailed service URLs at the end provide excellent user experience.

apps/cli/bin/utils/logger.ts (3)

39-48: Well-implemented logger configuration

Good job on making the logger configurable while providing sensible defaults. The way you handle default values with the nullish coalescing operator is clean and idiomatic TypeScript.


64-69: Elegant log level filtering implementation

The shouldLog method elegantly determines whether a message should be logged based on its level, using array indices for comparison rather than hardcoded level hierarchies. This makes the code more maintainable.


101-112: Comprehensive error handling in logger

Great job handling both string messages and Error objects in the error method, including properly extracting and displaying stack traces when available.

apps/docs/docs/02-getting-started/04-quick-start.md (2)

26-107: Excellent step-by-step installation and setup guide

The installation, setup, and first-use instructions are clear, comprehensive, and well-structured. The CLI commands with explanations and UI navigation guidance provide an excellent onboarding experience for new users.


149-157: Great next steps with documentation references

The "Next Steps" section with links to other documentation pages creates a clear learning path for users after completing the quick start guide. This helps bridge the gap between the tutorial and more advanced topics.

apps/docs/docs/02-getting-started/02-installation/01-docker-hub-images.md (1)

56-57: Verify relative link to system requirements.

The link [시스템 요구사항](../01-system-requirements.md) assumes the target file lives one directory up. Please confirm that 01-system-requirements.md exists at that path.

apps/docs/docs/02-getting-started/02-installation/02-cli-tool.md (1)

183-186: ⚠️ Potential issue

Correct typo in environment variable name.

The variable REFESH_TOKEN_EXPIRED_TIME is missing an "R". It should be REFRESH_TOKEN_EXPIRED_TIME. Update both docs and implementation:

- - REFESH_TOKEN_EXPIRED_TIME=1h
+ - REFRESH_TOKEN_EXPIRED_TIME=1h

Likely an incorrect or invalid review comment.

apps/docs/docs/05-developer-guide/02-local-development.md (1)

62-67: Ensure Docker Compose file paths are accurate.

The commands reference docker/docker-compose.infra-amd64.yml and docker/docker-compose.infra-arm64.yml. Confirm these files exist in the docker/ directory at the repo root or update the paths accordingly.

apps/docs/docs/02-getting-started/02-installation/03-manual-setup.md (1)

63-67: Verify optional infrastructure examples.

Ensure that the optional MySQL/OpenSearch/SMTP examples and flags match the actual codebase and do not conflict with CLI-generated configurations.

apps/docs/docs/01-introduction/02-key-features.md (1)

195-196: Verify category link for User Guide.

Ensure the link [사용자 가이드](/docs/category/사용자-가이드) matches the actual category slug created in sidebars.ts.

"position": 3,
"link": {
"type": "generated-index",
"description": "�� 대한 문서입니다."
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue

Correct corrupted description in Issue Management category
The description has garbled text and should reference the category label.

Apply this diff:

-    "description": "�� 대한 문서입니다."
+    "description": "이슈 관리에 대한 문서입니다."

Committable suggestion skipped: line range outside the PR's diff.

@@ -0,0 +1,8 @@
{
"label": "커뮤니티 및 지원",
"position": 7,
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue

Fix position index and description in Community & Support category

  1. The position should be 6 (not 7) to reflect its order among main categories.
  2. The description field is garbled and needs proper phrasing.

Apply this diff:

-  "position": 7,
+  "position": 6,

-    "description": "�� 대한 문서입니다."
+    "description": "커뮤니티 및 지원에 대한 문서입니다."

Also applies to: 6-6

@chiol chiol marked this pull request as draft May 9, 2025 02:19
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.

1 participant