Skip to content
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

docusaurus preparations #2703

Merged
merged 14 commits into from
Nov 26, 2024
Merged

docusaurus preparations #2703

merged 14 commits into from
Nov 26, 2024

Conversation

ReneWerner87
Copy link
Member

@ReneWerner87 ReneWerner87 commented Nov 26, 2024

Summary by CodeRabbit

  • New Features

    • Added a "Contributing Guidelines" section to the documentation for contributors.
    • Introduced new Bash scripts to automate documentation synchronization and local file management.
    • Created new README files for various examples, including custom 404 handlers, AWS services, and more.
    • Enhanced existing README files with metadata and structured content for better usability.
    • Implemented new features in various projects, such as Server-Sent Events, JWT authentication, and graceful shutdown mechanisms.
    • Added support for file uploads, WebSocket communication, and validation mechanisms in various examples.
  • Bug Fixes

    • Updated existing documentation to correct formatting and improve clarity.
  • Documentation

    • Added comprehensive documentation for new features and examples.
    • Improved the organization and readability of existing README files across multiple projects.
  • Chores

    • Updated .gitignore to include the vendor/ directory.
    • Modified Makefile to introduce new targets for development workflow.

Copy link
Contributor

coderabbitai bot commented Nov 26, 2024

Caution

Review failed

The head commit changed during the review from 1bf65b3 to fdb7c34.

Walkthrough

The changes in this pull request include the addition of new documentation and scripts to facilitate contributions and improve project organization. A "Contributing Guidelines" section was added to the .github/CONTRIBUTING.md file, detailing steps for contributors to add examples. Two new Bash scripts were introduced for synchronizing documentation files locally and with a remote repository. Additionally, multiple README files were created or updated across various project directories, enhancing documentation clarity and structure, while the .gitignore file was modified to include the vendor/ directory.

Changes

File Path Change Summary
.github/CONTRIBUTING.md New section "Contributing Guidelines" added, outlining the process for adding examples.
.github/scripts/sync_docs.sh New script added to automate synchronization of documentation files with a specified GitHub repository.
.github/scripts/sync_local.sh New script added for synchronizing local documentation files into a specified directory structure.
.gitignore Updated to actively ignore the vendor/ directory.
404-handler/README.md New README file created for a custom 404 handler example.
Makefile New targets added: help, audit, format, markdown, lint, generate.
README.md New metadata added; auto-generated table of contents introduced, replacing manual entries.
Various README.md files in subdirectories New files created and existing files updated across multiple directories, enhancing documentation.

Possibly related PRs

  • Add MinIO File Upload & Download Example #2683: The main PR introduces contributing guidelines for adding examples, while this PR adds a MinIO file upload and download example, which directly relates to the process of contributing new examples as outlined in the main PR.

Poem

🐇 In the land of code where rabbits play,
New guidelines bloom, brightening the way.
Scripts to sync and docs to share,
A hop towards clarity, showing we care.
With every README, our project grows,
Join us, dear friends, as the knowledge flows! 🌼


Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

❤️ 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.
    • Generate unit testing code for this file.
    • 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 generate unit testing code for this file.
    • @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 generate unit testing code.
    • @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.

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 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 or @coderabbitai title 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.

@ReneWerner87
Copy link
Member Author

@coderabbitai

  1. create a summary for this PR

  2. create an issue for identical examples that can be combined and work it out so that a list exists

  3. create an issue by improving the issue templates for issues and pull requests, based on the current structure that most examples have, with the tasks that need to be done for the expected form to exist

  4. create an issue where we cover examples that deviate from the general readme structure and where we can implement improvements

Copy link
Contributor

coderabbitai bot commented Nov 26, 2024

Tip

For best results, initiate chat on the files or code changes.

@ReneWerner87:

PR Summary:
This pull request titled "docusaurus preparations" introduces updates and additions to prepare the repository for Docusaurus integration. Key changes include:

  • Updates to .github directory with new contributing guidelines and synchronization scripts.
  • Modifications to the main README.md and multiple example README.md files for standardization.
  • Additions to the Makefile to support new build processes.
  • Enhancements across various example projects to align with the anticipated documentation structure.

These changes aim to standardize documentation and streamline the repository in preparation for Docusaurus.

Created Issues:

  1. Combine Identical Examples into a Consolidated List

  2. Improve Issue and Pull Request Templates

  3. Standardize Examples Deviating from General README Structure

Please let me know if there's anything else I can assist with.

🔗 Analysis chain
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Fetch PR details to generate a summary
gh pr view 2703 --repo gofiber/recipes --json title,body,files > pr_details.json

# Output the PR details for summary generation
cat pr_details.json

# Create Issue 1: Combine Identical Examples
gh issue create --repo gofiber/recipes --title "Combine Identical Examples into a Consolidated List" --body $'There are identical examples that can be combined into a single list to improve clarity and reduce redundancy.\n\nRelated PR: https://github.com/gofiber/recipes/pull/2703\nRequested by: @ReneWerner87'

# Create Issue 2: Improve Issue and Pull Request Templates
gh issue create --repo gofiber/recipes --title "Improve Issue and Pull Request Templates" --body $'Enhance issue and pull request templates based on the current structure that most examples have, including tasks needed for the expected format.\n\nRelated PR: https://github.com/gofiber/recipes/pull/2703\nRequested by: @ReneWerner87'

# Create Issue 3: Standardize Examples Deviating from General README Structure
gh issue create --repo gofiber/recipes --title "Standardize Examples Deviating from General README Structure" --body $'Identify and improve examples that deviate from the general README structure to ensure consistency across the repository.\n\nRelated PR: https://github.com/gofiber/recipes/pull/2703\nRequested by: @ReneWerner87'

Length of output: 7756

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: 46

🧹 Outside diff range and nitpick comments (98)
colly-gorm/app/internals/services/database/models.go (1)

1-20: Consider adding a validation layer and common operations

Since this is part of a web scraping application, consider enhancing the models with:

  1. A validation interface or struct tags for input validation
  2. Common methods for scraping-related operations
  3. Indexes for frequently queried fields

Example additions could include:

  • Methods like BeforeCreate for validation
  • Helper methods for common queries
  • Composite indexes for performance optimization

Would you like me to provide example implementations for these suggestions?

oauth2/makefile (3)

4-8: Enhance clean target reliability

The current implementation has potential issues:

  1. The logs directory might not exist, causing unnecessary errors
  2. Verbose output (-v) might clutter the output
 .PHONY: clean
 clean:
-	@rm -fv ./oauth2
-	@rm -fv ./logs/*
+	@rm -f ./oauth2
+	@rm -rf ./logs

15-17: Reduce code duplication in build commands

The build command is duplicated between run and build targets. Consider using a variable for the build command.

+BUILD_CMD = go build -o ./oauth2 ./main.go
+
 .PHONY: build
 build: clean
-	@GOOS=linux go build -o ./oauth2 ./*.go
+	@$(BUILD_CMD)

Then update the run target accordingly:

 .PHONY: run
 run: clean
-	@GOOS=linux go build -o ./oauth2 ./*.go
+	@$(BUILD_CMD)
 	./oauth2

1-25: Consider adding more development-friendly targets

To align with the documentation improvements mentioned in the PR objectives, consider adding these helpful targets:

  • test: For running tests
  • lint: For code quality checks
  • doc: For generating documentation
  • help: For displaying available targets and their descriptions

Example implementation:

.PHONY: test
test:
	@go test -v ./...

.PHONY: lint
lint:
	@golangci-lint run

.PHONY: doc
doc:
	@go doc -all ./...

.PHONY: help
help:
	@echo "Available targets:"
	@echo "  clean        - Remove built binary and logs"
	@echo "  build        - Build the OAuth2 server"
	@echo "  run          - Build and run the OAuth2 server"
	@echo "  buildrelease - Build optimized release binary"
	@echo "  release      - Clean and build release binary"
	@echo "  test         - Run tests"
	@echo "  lint         - Run linter"
	@echo "  doc          - Generate documentation"
.github/scripts/sync_local.sh (3)

1-2: Enhance script safety settings

While set -e is good, consider adding these additional safety settings:

 #!/usr/bin/env bash
-set -e
+set -euo pipefail
+IFS=$'\n\t'

This will:

  • -u: Exit on undefined variables
  • -o pipefail: Prevent masking errors in pipelines
  • IFS: Safer word splitting

4-4: Use uppercase for constant variable name

Following shell scripting conventions, constant values should be in uppercase with underscores.

-REPO_DIR="recipes"
+RECIPES_DIR="recipes"

1-16: Consider architectural improvements for maintainability

The script could benefit from several architectural improvements:

  1. Add a configuration file for paths and file extensions
  2. Implement proper logging with timestamps and levels
  3. Add command-line options for:
    • Dry-run mode
    • Custom source/target directories
    • Verbosity level
  4. Consider adding a lockfile to prevent concurrent runs

Would you like me to provide an example implementation of these improvements?

🧰 Tools
🪛 Shellcheck (0.10.0)

[warning] 12-12: For loops over find output are fragile. Use find -exec or a while read loop.

(SC2044)


[warning] 14-14: Quote this to prevent word splitting.

(SC2046)

.gitignore (1)

28-28: Consider updating contribution guidelines.

Since this change affects how dependencies are handled, it would be helpful to update the contribution guidelines to mention that contributors need to run go mod vendor after cloning the repository.

Would you like me to help draft the documentation updates for the contribution guidelines?

firebase-auth/README.md (2)

Line range hint 6-18: Fix grammar, typos, and formatting in the main content

There are several issues that need to be addressed:

  1. Grammar: "This example use" → "This example uses"
  2. Typos:
    • "middlewae" → "middleware"
    • "confgurtion" → "configuration"
    • "oprions" → "options"
  3. Link formatting: Remove spaces inside link text

Apply this diff to fix the issues:

-This example use  [gofiber-firebaseauth middleware ](https://github.com/sacsand/gofiber-firebaseauth) to authenticate the endpoints. Find the documentation  for middlewae here for more confgurtion oprions  [docs ](https://github.com/sacsand/gofiber-firebaseauth)
+This example uses [gofiber-firebaseauth middleware](https://github.com/sacsand/gofiber-firebaseauth) to authenticate the endpoints. Find the documentation for middleware here for more configuration options [docs](https://github.com/sacsand/gofiber-firebaseauth)
🧰 Tools
🪛 Markdownlint (0.35.0)

8-8: null
Spaces inside link text

(MD039, no-space-in-links)


8-8: null
Spaces inside link text

(MD039, no-space-in-links)

🪛 LanguageTool

[uncategorized] ~8-~8: This verb does not appear to agree with the subject. Consider using a different form.
Context: ...se Authentication Example This example use [gofiber-firebaseauth middleware ](htt...

(AI_EN_LECTOR_REPLACEMENT_VERB_AGREEMENT)


[grammar] ~13-~13: The plural determiner ‘these’ does not agree with the singular noun ‘config’.
Context: ...le contain credential). You can get all these config from Firebase Console. ``` SERVICE_ACC...

(THIS_NNS)


19-23: Add language specification to code blocks

For better syntax highlighting and documentation consistency, specify the language for the code blocks.

Apply this diff:

-```
+```bash
 go build
 go run main

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 Markdownlint (0.35.0)</summary>

20-20: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)

</details>

</details>

</blockquote></details>
<details>
<summary>Makefile (4)</summary><blockquote>

`7-13`: **Consider pinning the govulncheck version**

While the audit commands are appropriate, using @latest for govulncheck could lead to inconsistent results across different environments.

Consider pinning to a specific version:

```diff
-	go run golang.org/x/vuln/cmd/govulncheck@latest ./...
+	go run golang.org/x/vuln/cmd/[email protected] ./...

Also, consider adding set -e to ensure the target fails if any command fails.


14-18: Consider pinning the gofumpt version

Similar to govulncheck, consider pinning gofumpt to a specific version for consistency.

-	go run mvdan.cc/gofumpt@latest -w -l .
+	go run mvdan.cc/[email protected] -w -l .

19-23: Add a check for markdownlint-cli2 availability

Since this tool is required but might not be installed, consider adding a check.

 .PHONY: markdown
 markdown:
+	@which markdownlint-cli2 > /dev/null || (echo "Error: markdownlint-cli2 is required but not installed. Install with 'npm install -g markdownlint-cli2'" && exit 1)
 	markdownlint-cli2 "**/*.md" "#vendor"

29-32: Add documentation about generated content

Since this target is used for updating documentation (as mentioned in PR objectives), consider adding more detailed comments about what gets generated.

-## generate: ⚡️ Generate implementations
+## generate: ⚡️ Generate overview table of contents and other implementations
docker-nginx-loadbalancer/README.md (3)

1-4: Enhance front matter metadata for better documentation organization

Consider adding more metadata fields to improve documentation searchability and organization:

 ---
 title: Docker + Nginx
+description: Example of load balancing Fiber applications using Docker and Nginx
 keywords: [docker, nginx, loadbalancer, reverse proxy]
+sidebar_label: Docker Load Balancing
+sidebar_position: 1
 ---

Line range hint 6-24: Enhance technical documentation completeness

The README would benefit from additional technical details and examples:

  1. Add context about the Fiber framework integration
  2. Include details about:
    • The load balancing strategy used in Nginx
    • The request logger implementation
    • Configuration options
  3. Enhance the endpoint documentation with:
    • Example requests and responses
    • Expected status codes
  4. Expand the Getting Started section with:
    • Prerequisites (versions of Docker, etc.)
    • Configuration options
    • Troubleshooting guide

Would you like me to provide a detailed template for these additions?


Based on the output from analyzing the README files across the repository, I can now generate the final response:

Documentation structure is inconsistent with repository standards

The current README structure in docker-nginx-loadbalancer/README.md deviates from the established pattern seen across other examples. Most example READMEs follow a consistent structure with these key sections:

  • Description/Overview
  • Requirements/Prerequisites
  • Setup
  • Running the Application
  • Example Usage/Endpoints
  • Code Overview (when applicable)
  • References

Suggested changes:

  • Add a "Description" section explaining the example's purpose
  • Add "Requirements" section listing prerequisites
  • Rename "Getting Started" to "Setup" for consistency
  • Add "Code Overview" section explaining key components
  • Add "References" section with relevant links
  • Consider reorganizing "Features" content into the description section
🔗 Analysis chain

Line range hint 1-24: Verify documentation structure consistency across examples

Let's ensure this README structure aligns with other examples in the repository.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check for structural consistency across example READMEs

# Find all README.md files in example directories
echo "Analyzing README.md structure across examples..."
fd -t f "README.md" -E "node_modules" -E "vendor" | while read -r file; do
  echo "=== $file ==="
  # Check for front matter
  echo "Front matter:"
  sed -n '/^---$/,/^---$/p' "$file"
  # Check for main sections
  echo "Main sections:"
  grep "^#" "$file"
  echo
done

Length of output: 39768

socketio/README.md (2)

39-42: Add language specification to the code block.

Specify the language for the code block to improve syntax highlighting.

-```
+```plaintext
 ws://localhost:3000/ws/<user-id>

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 Markdownlint (0.35.0)</summary>

40-40: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)

</details>

</details>

---

`46-53`: **Consider adding field descriptions.**

The JSON example is well-formatted. Consider enhancing it by adding descriptions for each field to improve clarity.

```diff
 Here is an example of a message object that can be sent between users:
 ```json
 {
   "from": "<user-id>",
   "to": "<recipient-user-id>",
   "data": "hello"
 }

+Field descriptions:
+- from: The ID of the user sending the message
+- to: The ID of the user receiving the message
+- data: The message content


</blockquote></details>
<details>
<summary>sessions-sqlite3/README.md (2)</summary><blockquote>

`1-4`: **Consider enhancing the frontmatter metadata.**

While the current metadata is good, consider adding more Docusaurus-specific fields to improve documentation organization:
- `description` field for SEO
- `sidebar_position` for controlling the order in navigation
- `tags` for better categorization

```diff
 ---
 title: Sessions + SQLite3
 keywords: [sessions, sqlite3, storage]
+description: Learn how to implement session management in Fiber using SQLite3 storage
+sidebar_position: 1
+tags: [database, storage, sessions]
 ---

8-8: Enhance the introduction with expected outcomes.

Consider adding what users will learn or achieve by following this example.

-This example demonstrates how to use Fiber sessions with the SQLite3 storage package. Run `localhost:3000` from multiple browsers to see active sessions for different users.
+This example demonstrates how to use Fiber sessions with the SQLite3 storage package. You'll learn how to:
+- Set up persistent session storage using SQLite3
+- Handle multiple user sessions across different browsers
+- Query and manage session data effectively
jwt/README.md (2)

1-4: Consider adding more metadata fields for better documentation.

The metadata section could be enhanced with additional fields commonly used in documentation:

  • description: A brief overview of the JWT example
  • author: Maintainer information
  • tags: Additional categorization
 ---
 title: JWT
 keywords: [jwt, json web token, authentication]
+description: Example demonstrating JWT authentication in Fiber applications
+author: Fiber Team
+tags: [security, authentication, middleware, example]
 ---

56-58: Improve Postman collection documentation.

The Postman collection reference could be enhanced with more details and instructions.

 ## Postman Collection
 
-You can find Postman examples [here](https://www.getpostman.com/collections/0e83876e0f2a0c8ecd70).
+A Postman collection is available containing pre-configured requests for all endpoints:
+
+1. [Download the collection](https://www.getpostman.com/collections/0e83876e0f2a0c8ecd70)
+2. Open Postman
+3. Click "Import" -> "Link" and paste the collection URL
+
+The collection includes:
+- Login request with example credentials
+- Restricted endpoint request with automatic JWT handling
+- Environment variables for easy configuration
+
+Note: If the collection link becomes invalid, please [open an issue](https://github.com/gofiber/recipes/issues/new) for an updated link.
.github/CONTRIBUTING.md (2)

11-26: Fix markdown list indentation for better rendering.

The nested lists have inconsistent indentation which may affect rendering. Consider standardizing the indentation:

-  - **Docusaurus Metadata**: Add the following metadata at the top of the `README.md` file:
+- **Docusaurus Metadata**: Add the following metadata at the top of the `README.md` file:

-    - `title`: A short and descriptive title for your example.
-    - `keywords`: A list of relevant keywords (excluding "fiber").
+  - `title`: A short and descriptive title for your example.
+  - `keywords`: A list of relevant keywords (excluding "fiber").

-  - **Content**: The `README.md` should provide a detailed explanation of the example, including:
-    - The idea behind the example.
-    - The components used in the example.
-    - Instructions on how to run the example.
-    - Any other relevant information.
+- **Content**: The `README.md` should provide a detailed explanation of the example, including:
+  - The idea behind the example.
+  - The components used in the example.
+  - Instructions on how to run the example.
+  - Any other relevant information.
🧰 Tools
🪛 LanguageTool

[uncategorized] ~19-~19: Loose punctuation mark.
Context: ...keyword3] --- ``` - title: A short and descriptive title for your ...

(UNLIKELY_OPENING_PUNCTUATION)


[uncategorized] ~20-~20: Loose punctuation mark.
Context: ...title for your example. - keywords: A list of relevant keywords (excluding ...

(UNLIKELY_OPENING_PUNCTUATION)

🪛 Markdownlint (0.35.0)

11-11: Expected: 0; Actual: 2
Unordered list indentation

(MD007, ul-indent)


19-19: Expected: 2; Actual: 4
Unordered list indentation

(MD007, ul-indent)


20-20: Expected: 2; Actual: 4
Unordered list indentation

(MD007, ul-indent)


22-22: Expected: 0; Actual: 2
Unordered list indentation

(MD007, ul-indent)


23-23: Expected: 2; Actual: 4
Unordered list indentation

(MD007, ul-indent)


24-24: Expected: 2; Actual: 4
Unordered list indentation

(MD007, ul-indent)


25-25: Expected: 2; Actual: 4
Unordered list indentation

(MD007, ul-indent)


26-26: Expected: 2; Actual: 4
Unordered list indentation

(MD007, ul-indent)


1-33: Consider adding context about Docusaurus integration.

Since these guidelines are part of the Docusaurus preparations, it might be helpful to:

  1. Add a brief introduction explaining why Docusaurus is being adopted
  2. Include links to Docusaurus documentation for additional context
  3. Explain how these examples will be integrated into the Docusaurus documentation structure

This context would help contributors better understand the purpose of these specific formatting requirements.

🧰 Tools
🪛 LanguageTool

[uncategorized] ~19-~19: Loose punctuation mark.
Context: ...keyword3] --- ``` - title: A short and descriptive title for your ...

(UNLIKELY_OPENING_PUNCTUATION)


[uncategorized] ~20-~20: Loose punctuation mark.
Context: ...title for your example. - keywords: A list of relevant keywords (excluding ...

(UNLIKELY_OPENING_PUNCTUATION)

🪛 Markdownlint (0.35.0)

11-11: Expected: 0; Actual: 2
Unordered list indentation

(MD007, ul-indent)


19-19: Expected: 2; Actual: 4
Unordered list indentation

(MD007, ul-indent)


20-20: Expected: 2; Actual: 4
Unordered list indentation

(MD007, ul-indent)


22-22: Expected: 0; Actual: 2
Unordered list indentation

(MD007, ul-indent)


23-23: Expected: 2; Actual: 4
Unordered list indentation

(MD007, ul-indent)


24-24: Expected: 2; Actual: 4
Unordered list indentation

(MD007, ul-indent)


25-25: Expected: 2; Actual: 4
Unordered list indentation

(MD007, ul-indent)


26-26: Expected: 2; Actual: 4
Unordered list indentation

(MD007, ul-indent)

grpc/README.md (5)

1-9: Remove trailing period from heading and enhance the introduction.

The introduction could be more descriptive to help users understand the purpose and benefits of this example.

Apply these changes:

-# Example for fiber as a client to gRPC server.
+# Example for Fiber as a gRPC Client
 
-A sample program to showcase fiber as a client to a gRPC server.
+A sample program demonstrating how to use Fiber as a client for a gRPC server. This example showcases:
+
+- Integration between Fiber and gRPC
+- Simple arithmetic operations over gRPC
+- HTTP to gRPC request handling
🧰 Tools
🪛 Markdownlint (0.35.0)

6-6: Punctuation: '.'
Trailing punctuation in heading

(MD026, no-trailing-punctuation)


12-26: Update Go version requirement and add verification steps.

Consider updating the minimum Go version requirement as Go 1.16 is quite old. Also, add verification steps to help users confirm their setup.

Add these verification steps after the setup instructions:

 2. Install dependencies:
     ```sh
     go mod tidy
     ```
+
+3. Verify your setup:
+    ```sh
+    # Verify Go version
+    go version
+    
+    # Verify all dependencies are installed
+    go mod verify
+    ```

28-41: Enhance running instructions with success indicators.

The running instructions could be more helpful by including expected output and explicitly mentioning the protocol.

Add success indicators and clarify the server URL:

 2. Run the Fiber client:
     ```sh
     go run client/main.go
+    # Expected output:
+    # Server started on port 3000
     ```
 
-3. The server will start on `http://localhost:3000`.
+3. The server will be available at `http://localhost:3000`. You can verify it's running by checking the server logs or making a test request:
+    ```sh
+    curl http://localhost:3000/add/1/2
+    # Expected output: {"result":"3"}
+    ```

42-56: Enhance endpoint documentation with error handling and request/response details.

The endpoint documentation could be more comprehensive by including error scenarios and detailed request/response formats.

Add error handling and detailed format information:

 | Method | URL           | Return value |
 | ------ | ------------- | ------------ |
 | GET    | /add/:a/:b    | a + b        |
 | GET    | /mult/:a/:b   | a \* b       |
+
+### Parameters
+- `a`, `b`: Integer values for the arithmetic operation
+
+### Response Format
+```json
+{
+  "result": "string" // The result as a string to handle large numbers
+}
+```
+
+### Error Responses
+```json
+{
+  "error": "Invalid number format"  // When parameters are not valid integers
+}
+```
 
 ### Output

58-62: Add implementation-specific details and security considerations.

The additional information section could be more helpful by including details specific to this implementation and security considerations.

Add implementation details and security notes:

 For more information, visit the [official gRPC documentation](https://grpc.io/docs/).
+
+### Implementation Details
+- This example uses unary RPC calls
+- Protocol buffers are used for service definition
+- The server implements a simple calculator service
+
+### Security Considerations
+- This example runs without TLS for simplicity
+- For production use, consider implementing:
+  - TLS encryption
+  - Authentication
+  - Rate limiting
.github/scripts/sync_docs.sh (1)

1-55: Consider restructuring the script for better maintainability

The script would benefit from a more modular design with proper error handling and cleanup:

  1. Break down operations into functions
  2. Add proper logging
  3. Implement cleanup on exit

Here's a suggested structure:

#!/usr/bin/env bash
set -eu

# Logging functions
log_info() { echo "INFO: $*" >&2; }
log_error() { echo "ERROR: $*" >&2; }

# Cleanup function
cleanup() {
    if [ -d "fiber-docs" ]; then
        rm -rf "fiber-docs"
    fi
}
trap cleanup EXIT

# Main functions
validate_env() {
    # Environment validation logic
}

setup_git() {
    # Git configuration logic
}

sync_files() {
    # File synchronization logic
}

commit_and_push() {
    # Git commit and push logic with retry
}

# Main execution
main() {
    validate_env
    setup_git
    sync_files
    commit_and_push
}

main "$@"
🧰 Tools
🪛 Shellcheck (0.10.0)

[warning] 23-23: For loops over find output are fragile. Use find -exec or a while read loop.

(SC2044)


[warning] 27-27: Quote this to prevent word splitting.

(SC2046)

multiple-ports/README.md (3)

1-4: Consider enhancing frontmatter metadata

The frontmatter could be improved by adding more metadata fields to enhance documentation searchability and organization:

 ---
 title: Multiple Ports
 keywords: [multiple ports, server, port]
+description: Learn how to run a Fiber application on multiple ports using Go
+tags: [go, fiber, networking, concurrent]
+difficulty: intermediate
 ---

14-15: Enhance setup instructions with more specific details

Consider adding more detailed information to help users get started:

-Golang
-[Fiber](https://github.com/gofiber/fiber) package
+- Go 1.x or later (tested with Go 1.19+)
+- [Fiber v2](https://github.com/gofiber/fiber) package
+  ```bash
+  go get -u github.com/gofiber/fiber/v2
+  ```

 1. Clone the repository:
     ```sh
     git clone https://github.com/gofiber/recipes.git
     cd recipes/multiple-ports
+    # Ensure you're in the correct directory structure:
+    # recipes/
+    # └── multiple-ports/
+    #     ├── main.go
+    #     └── README.md
     ```

 2. Install dependencies:
     ```sh
     go get
+    # Verify installation:
+    go mod tidy
     ```

Also applies to: 19-23, 25-28


75-81: Enhance documentation with additional sections

Consider adding more detailed explanations and resources:

 In this example:
 - The application listens on multiple ports (`:3000` and `:3001`).
 - A `sync.WaitGroup` is used to wait for all goroutines to finish.
+- Each server runs in its own goroutine for concurrent operation
+- Graceful shutdown ensures all requests are completed before stopping
+
+## Key Concepts
+
+- **Goroutines**: Lightweight threads in Go used for concurrent execution
+- **WaitGroup**: Synchronization primitive to wait for multiple goroutines
+- **Context**: Used for cancellation and deadline control
+- **Signal Handling**: Proper shutdown on system signals (SIGTERM/SIGINT)
+
+## Troubleshooting
+
+- **Port already in use**: Ensure no other services are using ports 3000 and 3001
+- **Permission denied**: Try using ports above 1024 or run with appropriate permissions
+- **Connection refused**: Verify the server is running and listening on the correct ports

 ## References

 - [Fiber Documentation](https://docs.gofiber.io)
+- [Go Concurrency Patterns](https://go.dev/blog/pipelines)
+- [Context Package Documentation](https://pkg.go.dev/context)
+- [Signal Handling in Go](https://pkg.go.dev/os/signal)
oauth2-google/README.md (3)

1-4: Consider enhancing frontmatter metadata

While the current frontmatter is good, consider adding more fields to improve documentation organization:

 ---
 title: Google OAuth2
 keywords: [oauth2, google, authentication]
+description: Implementation guide for Google OAuth2 authentication in a Fiber application
+sidebar_label: Google OAuth2
+sidebar_position: 1
 ---

39-44: Enhance running instructions with verification steps

Consider adding verification steps and expected output:

 1. Run the application:
     ```sh
     go run main.go
     ```
 
 2. The server will start on `http://localhost:3000`.
+3. Verify the application is running:
+    ```sh
+    curl -I http://localhost:3000/api/
+    ```
+    Expected output:
+    ```
+    HTTP/1.1 302 Found
+    Location: https://accounts.google.com/o/oauth2/auth?...
+    ```

66-69: Enhance package documentation with versions and links

Consider adding version information and documentation links:

 ## Packages Used

-[Godotenv](https://github.com/joho/godotenv)
-[Fiber](https://github.com/gofiber/fiber)
-[OAuth2](https://github.com/golang/oauth2)
+| Package | Version | Documentation |
+|---------|---------|---------------|
+| [Godotenv](https://github.com/joho/godotenv) | Latest | [Guide](https://github.com/joho/godotenv#usage) |
+| [Fiber](https://github.com/gofiber/fiber) | v2 | [Docs](https://docs.gofiber.io/) |
+| [OAuth2](https://github.com/golang/oauth2) | Latest | [Pkg.go.dev](https://pkg.go.dev/golang.org/x/oauth2) |
gcloud/README.md (4)

13-13: Add language specification to code block

For better syntax highlighting and documentation consistency, specify the language for the code block.

-```
+```bash
 go run cmd/main.go

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 Markdownlint (0.35.0)</summary>

13-13: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)

</details>

</details>

---

`17-17`: **Fix typo in Cloud Run section**

Correct the spelling of "enviroment" to "environment".

```diff
-This step will build a Docker Image, publish to Google Cloud Registry and deploy on Cloud Run Managed enviroment.
+This step will build a Docker Image, publish to Google Cloud Registry and deploy on Cloud Run Managed environment.

34-34: Fix typo in App Engine section

Correct the spelling of "enviroment" to "environment".

-This step will deploy the app to Google App Engine Standard Go enviroment. The app configuration and additional configurations can be tweaked on the `app.yaml` file.
+This step will deploy the app to Google App Engine Standard Go environment. The app configuration and additional configurations can be tweaked on the `app.yaml` file.

Line range hint 43-52: Update Cloud Function section

  1. Fix the spelling of "enviroment" to "environment"
  2. Update the deprecated Go 1.11 runtime to a supported version
-This step will deploy a HTTP Cloud Function using Go enviroment. You can use the `deploy.sh` script. Just edit your project id on it.
+This step will deploy a HTTP Cloud Function using Go environment. You can use the `deploy.sh` script. Just edit your project id on it.

 For the Cloud Functions env, Google enforces us to deploy a function that is a `http.HandlerFunc`, so on the file `functions.go` there is a workaround to reroute the HTTP call to the Fiber app instance.

 * Run on the command line:

-gcloud functions deploy MyCloudFunction --runtime go111 --trigger-http
+gcloud functions deploy MyCloudFunction --runtime go121 --trigger-http

Note: Go 1.11 runtime is deprecated in Cloud Functions. Please update to a supported version (e.g., Go 1.21).

🧰 Tools
🪛 LanguageTool

[misspelling] ~45-~45: Use “an” instead of ‘a’ if the following word starts with a vowel sound, e.g. ‘an article’, ‘an hour’.
Context: ...e Cloud Function This step will deploy a HTTP Cloud Function using Go enviroment...

(EN_A_VS_AN)

geoip/README.md (3)

1-4: Consider enhancing front matter metadata.

The front matter could be enriched with additional fields to improve documentation organization:

 ---
 title: GeoIP
 keywords: [geoip, maxmind, ip]
+description: A guide to implementing GeoIP lookup using Fiber framework
+sidebar_position: 1
+slug: /recipes/geoip
 ---

80-84: Consider adding more helpful references.

Suggest adding:

  • Link to MaxMind account creation
  • Link to GeoIP2 API documentation
  • Link to example response format documentation

8-9: Add security considerations section.

Consider adding a "Security Considerations" section that covers:

  • Rate limiting recommendations
  • IP address privacy handling
  • Database update procedures
  • Production deployment best practices
gorm-mysql/README.md (3)

6-8: Consider enhancing the introduction with more context

While the introduction is clear, it would be helpful to briefly explain what GORM and Fiber are for newcomers. Consider adding a sentence about their roles and benefits.

 # GORM MySQL Example

-This is a sample program demonstrating how to use GORM as an ORM to connect to a MySQL database with the Fiber web framework.
+This is a sample program demonstrating how to use GORM (Go Object Relational Mapper) to interact with a MySQL database in a Go application. The example uses the Fiber web framework, a fast and minimalist web framework for Go, to create a RESTful API.

10-14: Add MySQL version requirement

Consider specifying the minimum MySQL version required for this example to ensure compatibility.

 ## Prerequisites

 - Go 1.16 or higher
-  - MySQL database
+  - MySQL 5.7 or higher
 - Go modules

40-47: Add troubleshooting guidance

Consider adding a troubleshooting section to help users diagnose common issues, such as database connection problems or port conflicts.

 2. The server will start on `http://localhost:3000`.

+## Troubleshooting
+
+If you encounter issues:
+
+1. Ensure MySQL is running and accessible
+2. Verify the database credentials in `config.json`
+3. Check if port 3000 is available
+4. Review the application logs for detailed error messages
sse/README.md (4)

12-12: Consider adding practical use cases to the description.

While the description explains SSE well, consider adding specific examples of when to use SSE, such as:

  • Stock market price updates
  • Social media feed updates
  • Live sports scores
  • System monitoring dashboards

This would help readers better understand the practical applications of SSE.


27-30: Add verification steps after dependency installation.

Consider adding steps to verify the setup was successful, such as:

 2. Install dependencies:
     ```sh
     go mod tidy
     ```
+
+3. Verify the setup:
+    ```sh
+    go mod verify
+    ```

53-59: Expand the code overview with implementation details.

Consider adding more details about the implementation, such as:

  • Event types and their purposes
  • Data format for messages
  • Error handling approach
  • Connection management details

This would help users better understand the implementation and customize it for their needs.


65-67: Add Fiber-specific resources.

Consider adding Fiber-specific resources to help users understand how SSE integrates with Fiber:

 For more information on SSE, you can refer to the following resources:
 - [Server-Sent Events on MDN](https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events)
 - [Server-Sent Events on Wikipedia](https://en.wikipedia.org/wiki/Server-sent_events)
+- [Fiber Context Documentation](https://docs.gofiber.io/api/ctx)
+- [Fiber Response Documentation](https://docs.gofiber.io/api/ctx#set)
neo4j/README.md (2)

1-4: Consider expanding keywords for better discoverability

Consider adding more relevant keywords such as: golang, go, fiber-framework, database-connection, graph-database

 ---
 title: Neo4j
-keywords: [neo4j, database]
+keywords: [neo4j, database, golang, go, fiber-framework, database-connection, graph-database]
 ---

89-94: Enhance documentation with troubleshooting and production sections

Consider adding the following sections to make the documentation more comprehensive:

  1. Troubleshooting guide for common issues
  2. Production deployment considerations
  3. Performance tuning recommendations

Example additions:

## Troubleshooting

Common issues and their solutions:
- Connection timeout
- Authentication failures
- Query performance issues

## Production Considerations

- Connection pooling configuration
- Error handling strategies
- Monitoring and logging
- Security best practices
gorm-postgres/README.md (3)

1-4: Consider enhancing frontmatter metadata.

Consider adding additional metadata fields such as:

  • description for SEO
  • sidebar_position for documentation ordering
  • slug for URL customization
 ---
 title: GORM + PostgreSQL
 keywords: [gorm, postgres, database]
+description: Learn how to integrate GORM with PostgreSQL in a Fiber application
+sidebar_position: 1
+slug: /database/gorm-postgres
 ---

14-17: Specify version requirements for dependencies.

Consider adding minimum version requirements for each dependency to ensure compatibility:

-Golang
-[Fiber](https://github.com/gofiber/fiber) package
-[GORM](https://gorm.io/) package
-PostgreSQL
+- Go 1.16 or later
+- [Fiber v2](https://github.com/gofiber/fiber) package
+- [GORM v1.21](https://gorm.io/) package
+- PostgreSQL 12 or later

96-100: Consider adding security and best practices references.

Add links to security best practices and common patterns:

 ## References

 - [Fiber Documentation](https://docs.gofiber.io)
 - [GORM Documentation](https://gorm.io/docs/)
 - [PostgreSQL Documentation](https://www.postgresql.org/docs/)
+- [Go Security Best Practices](https://go.dev/security/best-practices)
+- [OWASP API Security Top 10](https://owasp.org/www-project-api-security/)
rss-feed/README.md (3)

1-9: Consider enhancing the frontmatter and introduction

The documentation could be more helpful with these additions:

  1. Additional relevant keywords like: golang, fiber, gorilla-feeds, xml
  2. Mention the endpoint URL (:3000/rss) in the introduction for quick reference
 ---
 title: RSS Feed
-keywords: [rss, feed]
+keywords: [rss, feed, golang, fiber, gorilla-feeds, xml]
 ---
 
 # RSS Feed
 
-This project demonstrates how to create an RSS feed in a Go application using the Fiber framework.
+This project demonstrates how to create an RSS feed in a Go application using the Fiber framework. The feed will be available at `http://localhost:3000/rss`.

41-90: Enhance the example code with best practices

The example could be improved with:

  1. Error handling for app.Listen
  2. Configuration variables for feed details
  3. Input validation
  4. Code comments explaining key components
 ```go
 package main

 import (
     "github.com/gofiber/fiber/v2"
     "github.com/gorilla/feeds"
     "time"
+    "log"
 )

+// FeedConfig holds the RSS feed configuration
+type FeedConfig struct {
+    Title       string
+    Link        string
+    Description string
+    Author      string
+    Email       string
+}
+
 func main() {
+    // Configure feed details
+    config := FeedConfig{
+        Title:       "Example RSS Feed",
+        Link:        "http://example.com/rss",
+        Description: "This is an example RSS feed",
+        Author:      "John Doe",
+        Email:       "[email protected]",
+    }
+
     app := fiber.New()

     app.Get("/rss", func(c *fiber.Ctx) error {
         feed := &feeds.Feed{
-            Title:       "Example RSS Feed",
-            Link:        &feeds.Link{Href: "http://example.com/rss"},
-            Description: "This is an example RSS feed",
-            Author:      &feeds.Author{Name: "John Doe", Email: "[email protected]"},
+            Title:       config.Title,
+            Link:        &feeds.Link{Href: config.Link},
+            Description: config.Description,
+            Author:      &feeds.Author{Name: config.Author, Email: config.Email},
             Created:     time.Now(),
         }

         // ... rest of the code ...

         c.Set("Content-Type", "application/rss+xml")
         return c.SendString(rss)
     })

-    app.Listen(":3000")
+    log.Fatal(app.Listen(":3000"))
 }

92-95: Add more helpful references

Consider adding these additional resources:

  1. RSS 2.0 Specification
  2. Go XML package documentation
  3. Example of a complete RSS feed output
 ## References

 - [Fiber Documentation](https://docs.gofiber.io)
 - [Gorilla Feeds Documentation](https://pkg.go.dev/github.com/gorilla/feeds)
+- [RSS 2.0 Specification](https://cyber.harvard.edu/rss/rss.html)
+- [Go XML Package](https://pkg.go.dev/encoding/xml)
+
+## Example Output
+
+```xml
+<?xml version="1.0" encoding="UTF-8"?>
+<rss version="2.0">
+  <channel>
+    <title>Example RSS Feed</title>
+    <!-- ... rest of the feed XML ... -->
+  </channel>
+</rss>
+```
cloud-run/README.md (4)

1-4: Consider expanding keywords for better discoverability.

The current keywords are good, but consider adding more relevant terms like golang, fiber, serverless, cloud-native to improve searchability.

---
title: Cloud Run
-keywords: [cloud run, deploy, google, docker, gcp]
+keywords: [cloud run, deploy, google, docker, gcp, golang, fiber, serverless, cloud-native]
---

Line range hint 13-17: Enhance requirements section with version information.

Consider specifying minimum versions for Docker and Google Cloud SDK to ensure compatibility.

## Requirements

- [Go](https://golang.org/dl/) 1.18 or higher
-[Docker](https://www.docker.com/get-started)
-[Google Cloud SDK](https://cloud.google.com/sdk/docs/install)
+[Docker](https://www.docker.com/get-started) 20.10.0 or higher
+[Google Cloud SDK](https://cloud.google.com/sdk/docs/install) 400.0.0 or higher
- [Git](https://git-scm.com/downloads)

Line range hint 67-98: Improve cloud build configuration flexibility.

The current configuration has several points that could be made more flexible:

  1. The GCR registry is hardcoded to asia.gcr.io
  2. The port is hardcoded to 3000
  3. Missing comments explaining the configuration
steps:
  - name: 'gcr.io/kaniko-project/executor:latest'
    id: 'build-and-push'
    args:
-      - '--destination=asia.gcr.io/$PROJECT_ID/$_SERVICE_NAME:$SHORT_SHA'
-      - '--destination=asia.gcr.io/$PROJECT_ID/$_SERVICE_NAME:latest'
+      # Build and push to regional GCR
+      - '--destination=${_REGISTRY_REGION}.gcr.io/$PROJECT_ID/$_SERVICE_NAME:$SHORT_SHA'
+      - '--destination=${_REGISTRY_REGION}.gcr.io/$PROJECT_ID/$_SERVICE_NAME:latest'
      - '--dockerfile=Dockerfile'
      - '--context=.'
      - '--cache=true'
      - '--cache-ttl=120h'

  - id: 'Deploy to Cloud Run'
    name: 'gcr.io/cloud-builders/gcloud'
    entrypoint: 'bash'
    args:
      - '-c'
      - |
        gcloud run deploy $_SERVICE_NAME \
-        --image=asia.gcr.io/$PROJECT_ID/$_SERVICE_NAME:$SHORT_SHA \
+        --image=${_REGISTRY_REGION}.gcr.io/$PROJECT_ID/$_SERVICE_NAME:$SHORT_SHA \
        --region=$_REGION --platform managed --allow-unauthenticated \
-        --port=3000
+        --port=$_PORT

options:
  substitutionOption: ALLOW_LOOSE

substitutions:
  _SERVICE_NAME: cloud-run-example
-  _REGION: asia-southeast1
+  _REGION: us-central1  # Default region
+  _REGISTRY_REGION: us  # Default registry region
+  _PORT: 3000  # Default port

Line range hint 44-57: Add troubleshooting guidance for common deployment issues.

Consider adding a troubleshooting section after the deployment steps to help users handle common issues:

3. Deploy the image to Cloud Run:
    ```bash
    gcloud run deploy cloud-run-example --image gcr.io/[YOUR_PROJECT_ID]/cloud-run-example --platform managed --region [YOUR_REGION] --allow-unauthenticated
    ```

Replace `[YOUR_PROJECT_ID]` and `[YOUR_REGION]` with your Google Cloud project ID and desired region.

+## Troubleshooting
+
+### Common Issues
+
+1. **Authentication Errors**:
+   ```bash
+   gcloud auth configure-docker  # Run this if you see docker authentication errors
+   ```
+
+2. **Deployment Failures**:
+   - Ensure billing is enabled for your project
+   - Verify Cloud Run API is enabled: `gcloud services enable run.googleapis.com`
+
+3. **Container Startup Failures**:
+   - Check logs: `gcloud run services logs read cloud-run-example`
k8s/README.md (4)

12-19: Enhance prerequisites section with version requirements and links

Consider adding:

  • Minimum version requirements for each tool
  • Links to installation guides for all tools (not just Minikube)
  • Additional prerequisites like minimum system requirements

34-37: Add multi-platform build support

Consider adding platform-specific build instructions for multi-architecture support:

-    docker build -t fiber-k8s-example .
+    docker buildx build --platform linux/amd64,linux/arm64 -t fiber-k8s-example .

49-61: Add operational and troubleshooting instructions

Consider adding:

  • Commands to verify service status (kubectl get svc)
  • Common troubleshooting steps
  • Cleanup instructions for removing the deployment

144-148: Expand references section

Consider adding:

  • Links to Kubernetes best practices
  • Container security guidelines
  • Specific sections of Fiber docs related to deployment
  • Links to relevant blog posts or tutorials
hexagonal/README.md (5)

10-10: Add alt text for better accessibility

The image should include descriptive alt text for accessibility purposes.

-![Hexagonal Architecture](Hexagonal-Arch.png)
+![A diagram illustrating the hexagonal architecture pattern with core domain, ports, and adapters](Hexagonal-Arch.png "Hexagonal Architecture")

31-37: Enhance configuration instructions

The MongoDB configuration section could be improved by:

  1. Providing a sample valid MongoDB URI format
  2. Adding validation steps to verify the connection
 3. Configure the MongoDB connection in the `config.json` file:
     ```json
     {
-      "DB_URI": "your_mongodb_uri",
-      "DB_Name": "your_db_name"
+      "DB_URI": "mongodb://localhost:27017",
+      "DB_Name": "product_catalog"
     }
     ```
+
+    To verify the connection:
+    ```sh
+    go run main.go testconnection
+    ```

70-73: Enhance API documentation with response examples and error cases

The API documentation would be more helpful with:

  1. Example response payloads
  2. Error response scenarios and status codes
 ### Create a New Product
 ```sh
 curl -X POST http://localhost:3000/api/v1/product -d '{"name": "New Product", "price": 100}' -H "Content-Type: application/json"

+Example Success Response:
+```json
+{

  • "id": "123",
  • "name": "New Product",
  • "price": 100,
  • "created_at": "2024-11-20T10:00:00Z"
    +}
    +```

+Possible Error Responses:
+- 400 Bad Request: Invalid product data
+- 500 Internal Server Error: Database connection error


---

`87-87`: **Simplify the architectural explanation**

The explanation could be more concise by removing wordy phrases.

```diff
-Hexagonal architecture, also known as ports and adapters architecture, is a design pattern used to create loosely coupled application components that can be easily connected to their software environment by means of ports and adapters.
+Hexagonal architecture, also known as ports and adapters architecture, is a design pattern that creates loosely coupled application components connected to their software environment through ports and adapters.
🧰 Tools
🪛 LanguageTool

[style] ~87-~87: ‘by means of’ might be wordy. Consider a shorter alternative.
Context: ...connected to their software environment by means of ports and adapters. This architecture a...

(EN_WORDINESS_PREMIUM_BY_MEANS_OF)


91-93: Diversify and organize external resources

Consider organizing resources by category and adding more diverse sources.

 For more information on hexagonal architecture, you can refer to the following resources:
-Hexagonal Architecture](https://alistair.cockburn.us/hexagonal-architecture/)
-[Hexagonal Architecture in Golang](https://medium.com/@matryer/hexagonal-architecture-in-go-2b5e0df2d8f8)
+### Core Concepts
+- [Original Hexagonal Architecture Article by Alistair Cockburn](https://alistair.cockburn.us/hexagonal-architecture/)
+
+### Golang Implementation
+- [Hexagonal Architecture in Go](https://medium.com/@matryer/hexagonal-architecture-in-go-2b5e0df2d8f8)
+- [Go Clean Architecture](https://github.com/bxcodec/go-clean-arch)
+
+### Testing Strategies
+- [Testing Hexagonal Architectures](https://netflixtechblog.com/ready-for-changes-with-hexagonal-architecture-b315ec967749)
🧰 Tools
🪛 LanguageTool

[grammar] ~92-~92: This phrase is duplicated. You should probably use “Hexagonal Architecture” only once.
Context: ...an refer to the following resources: - Hexagonal Architecture - [Hexagonal Architecture in Golang](https://medium.com/@matryer/...

(PHRASE_REPETITION)

overview.go (2)

24-24: Improve readability of directory filtering logic

The directory filtering condition is complex and could be split into separate checks for better readability and maintainability.

Consider refactoring like this:

-if info.IsDir() && path != root && filepath.Dir(path) == root && !strings.HasPrefix(info.Name(), ".") {
+func shouldProcessDirectory(info os.FileInfo, path, root string) bool {
+    return info.IsDir() &&            // Is a directory
+           path != root &&            // Not the root directory
+           filepath.Dir(path) == root && // Direct child of root
+           !strings.HasPrefix(info.Name(), ".") // Not hidden
+}
+
+if shouldProcessDirectory(info, path, root) {

63-67: Define constants for regex pattern and file permissions

Move the regex pattern and file permissions to package-level constants for better maintainability and reusability.

Add these constants at the package level:

+const (
+    autoGenPattern = `(?s)<!-- AUTO-GENERATED-CONTENT:START -->(.*?)<!-- AUTO-GENERATED-CONTENT:END -->`
+    readmeFileMode = 0644
+)
+
-re := regexp.MustCompile(`(?s)<!-- AUTO-GENERATED-CONTENT:START -->(.*?)<!-- AUTO-GENERATED-CONTENT:END -->`)
+re := regexp.MustCompile(autoGenPattern)
 
-err = os.WriteFile(readmePath, []byte(newContent), 0644)
+err = os.WriteFile(readmePath, []byte(newContent), readmeFileMode)
sqlboiler/README.md (4)

1-5: Enhance the frontmatter and introduction section

Consider adding more descriptive keywords and a brief project description to improve documentation discoverability and user understanding.

 ---
 title: Sqlboiler
-keywords: [sqlboiler, database, docker]
+keywords: [sqlboiler, database, docker, postgresql, orm, golang, fiber, web-framework]
 ---
+
+This example demonstrates how to integrate the Fiber web framework with Sqlboiler ORM using PostgreSQL as the database backend. It includes complete setup instructions from database initialization to model generation.

Line range hint 7-28: Improve setup instructions with prerequisites and verification steps

The Docker setup instructions could be more robust:

  1. Add prerequisites (Docker and Docker Compose versions)
  2. Replace arbitrary wait time with a database readiness check
  3. Include instructions for verifying the database connection
 ## 👀 Usage
+
+### Prerequisites
+- Docker (version 20.10 or higher)
+- Docker Compose (version 2.0 or higher)
+
 #### 1. Run Postgres
 ```bash
 $ docker compose build
-```
-```bash
 $ docker compose up

-#### 2. Wait 1-2 minutes
+
+#### 2. Verify Database Readiness
+Wait for the following log message indicating the database is ready:

-[+] Running 2/0
- ✔ Network sqlboiler_default  Created                                                                                0.0s
- ✔ Container postgres         Created                                                                                0.0s
-Attaching to postgres
-postgres  |
-postgres  | PostgreSQL Database directory appears to contain a database; Skipping initialization
-postgres  |
-postgres  | 2023-09-22 01:09:46.453 UTC [1] LOG:  starting PostgreSQL 16.0 (Debian 16.0-1.pgdg120+1) on aarch64-unknown-linux-gnu, compiled by gcc (Debian 12.2.0-14) 12.2.0, 64-bit
-postgres  | 2023-09-22 01:09:46.453 UTC [1] LOG:  listening on IPv4 address "0.0.0.0", port 5432
-postgres  | 2023-09-22 01:09:46.453 UTC [1] LOG:  listening on IPv6 address "::", port 5432
-postgres  | 2023-09-22 01:09:46.454 UTC [1] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
-postgres  | 2023-09-22 01:09:46.461 UTC [30] LOG:  database system was shut down at 2023-09-22 01:09:44 UTC
postgres  | 2023-09-22 01:09:46.468 UTC [1] LOG:  database system is ready to accept connections

+Verify the connection:
+bash +$ docker exec postgres pg_isready -U user -d fiber_demo +


<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 Markdownlint (0.35.0)</summary>

8-8: Expected: h2; Actual: h4
Heading levels should only increment by one level at a time

(MD001, heading-increment)

</details>

</details>

---

Line range hint `29-65`: **Enhance migration documentation with schema details and security considerations**

The migration section needs improvements:
1. Add example schema for the initial migration
2. Use environment variables for database credentials
3. Add error handling guidance

```diff
 #### 3. You have to migrate the database.
 > ###### 🎯 It is a "database-first" ORM as opposed to "code-first" (like gorm/gorp). That means you must first create your database schema.
 > ###### 🎯 I used [golang-migrate](https://github.com/golang-migrate/migrate) to proceed with the migrate.
+
 ###### 1. Make Migration files
 ```bash
 $ migrate create -ext sql -dir ./migrations -seq create_initial_table

-console -sqlboiler/migrations/000001_create_initial_table.up.sql -sqlboiler/migrations/000001_create_initial_table.up.sql + +Add the following schema to `000001_create_initial_table.up.sql`: +sql
+CREATE TABLE authors (

  • id SERIAL PRIMARY KEY,
  • name VARCHAR(255) NOT NULL,
  • created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
    +);

+CREATE TABLE posts (

  • id SERIAL PRIMARY KEY,
  • author_id INTEGER REFERENCES authors(id),
  • title VARCHAR(255) NOT NULL,
  • content TEXT,
  • created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
    +);
+
+And the corresponding down migration to `000001_create_initial_table.down.sql`:
+```sql
+DROP TABLE IF EXISTS posts;
+DROP TABLE IF EXISTS authors;
+```
+
###### 2. Migrate
+Export database credentials as environment variables:
```bash
-$ migrate -path migrations -database "postgresql://user:password@localhost:5432/fiber_demo?sslmode=disable" -verbose up
+$ export DB_USER=user
+$ export DB_PASSWORD=password
+$ export DB_NAME=fiber_demo
+$ migrate -path migrations -database "postgresql://${DB_USER}:${DB_PASSWORD}@localhost:5432/${DB_NAME}?sslmode=disable" -verbose up

-console -2023/09/22 20:00:00 Start buffering 1/u create_initial_table -2023/09/22 20:00:00 Read and execute 1/u create_initial_table -2023/09/22 20:00:00 Finished 1/u create_initial_table (read 24.693541ms, ran 68.30925ms) -2023/09/22 20:00:00 Finished after 100.661625ms -2023/09/22 20:00:00 Closing source and database + +If the migration fails, check the error and: +1. Ensure the database is running and accessible +2. Verify the connection credentials +3. Check for syntax errors in migration files +

🧰 Tools
🪛 Markdownlint (0.35.0)

8-8: Expected: h2; Actual: h4
Heading levels should only increment by one level at a time

(MD001, heading-increment)


Line range hint 66-107: Improve Sqlboiler configuration and usage documentation

The Sqlboiler setup section needs the following improvements:

  1. Use environment variables in configuration
  2. Explain the purpose of generated files
  3. Add example usage of generated models
 ###### 2. Create a configuration file
 > ###### 🎯 The configuration file should be named sqlboiler.toml
 ###### Example
+Create `sqlboiler.toml`:
 ```toml
 output   = "models"
 wipe     = true
 no-tests = true
 add-enum-types = true
 
 [psql]
-  dbname = "fiber_demo"
+  dbname = "${DB_NAME}"
   host   = "localhost"
   port   = 5432
-  user   = "user"
-  pass   = "password"
-  schema = "schema"
+  user   = "${DB_USER}"
+  pass   = "${DB_PASSWORD}"
+  schema = "public"
   blacklist = ["migrations", "other"]
3. Create models
🎯 After creating a configuration file that points at the database we want to generate models for, we can invoke the sqlboiler command line utility.
$ sqlboiler psql

-text -models/ -├── author.go -├── boil_queries.go -├── boil_table_names.go -├── boil_types.go -├── boil_view_names.go -├── post.go -├── schema_migrations.go + +This will generate the following files in the `models` directory: +text
+models/
+├── author.go # Author model with CRUD operations
+├── post.go # Post model with CRUD operations
+├── boil_queries.go # Common database query helpers
+├── boil_table_names.go # Table name constants
+├── boil_types.go # Common type definitions
+├── boil_view_names.go # View name constants
+ + +Example usage of generated models: +go
+package main
+
+import (

  • "context"
  • "database/sql"
  • "log"
  • "your-module/models"
  • _ "github.com/lib/pq"
    +)

+func main() {

  • db, err := sql.Open("postgres", "postgresql://user:password@localhost:5432/fiber_demo?sslmode=disable")
  • if err != nil {
  •    log.Fatal(err)
    
  • }
  • // Create a new author
  • author := models.Author{
  •    Name: "John Doe",
    
  • }
  • err = author.Insert(context.Background(), db, boil.Infer())
  • if err != nil {
  •    log.Fatal(err)
    
  • }
    +}

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 Markdownlint (0.35.0)</summary>

8-8: Expected: h2; Actual: h4
Heading levels should only increment by one level at a time

(MD001, heading-increment)

</details>

</details>

</blockquote></details>
<details>
<summary>csrf-with-session/README.md (2)</summary><blockquote>

Line range hint `9-24`: **Consider enhancing security documentation.**

While the security practices are well documented, consider adding:
- A note about the importance of HTTPS in production
- References to OWASP CSRF cheat sheet
- Explanation of the chosen 30-minute expiration time

---

`115-115`: **Add comma for better readability.**

Add a comma after "In this example" to improve sentence structure.

```diff
-In this example we set a session variable `loggedIn`
+In this example, we set a session variable `loggedIn`
🧰 Tools
🪛 LanguageTool

[typographical] ~115-~115: It appears that a comma is missing.
Context: ...when using the CSRF middleware. In this example we set a session variable loggedIn to...

(DURING_THAT_TIME_COMMA)

sqlc/README.md (5)

1-4: Front matter looks good, consider adding more relevant keywords.

The front matter follows the correct format and includes relevant keywords. Consider adding more specific keywords like "migrations", "orm", "go", "fiber-example" to improve discoverability.


Line range hint 9-39: Consider adding prerequisites and troubleshooting sections.

While the usage instructions are well-structured, consider adding:

  1. Prerequisites section listing required tools (Docker, Go version, etc.)
  2. Troubleshooting section for common issues
  3. System requirements (memory, disk space for Docker)
🧰 Tools
🪛 Markdownlint (0.35.0)

8-8: Expected: h2; Actual: h4
Heading levels should only increment by one level at a time

(MD001, heading-increment)


Line range hint 40-89: Use environment variables for database credentials.

The migration commands expose database credentials in plain text. Consider:

  1. Using environment variables or a .env file
  2. Updating the examples to use placeholders:
- postgresql://user:password@localhost:5432/fiber_demo?sslmode=disable
+ postgresql://${DB_USER}:${DB_PASSWORD}@localhost:5432/${DB_NAME}?sslmode=disable
🧰 Tools
🪛 Markdownlint (0.35.0)

8-8: Expected: h2; Actual: h4
Heading levels should only increment by one level at a time

(MD001, heading-increment)


Line range hint 90-139: Add descriptions for generated files.

The sqlc configuration and SQL examples are well documented, but consider adding brief descriptions for each generated file:

  • author.sql.go: Generated CRUD operations for authors
  • db.go: Database connection and interface definitions
  • models.go: Generated data models
  • post.sql.go: Generated CRUD operations for posts

140-140: Consider adding more relevant references.

The reference section could be enhanced with links to:

  • Fiber documentation
  • golang-migrate documentation
  • PostgreSQL documentation
  • Docker documentation
aws-sam-container/README.md (3)

38-39: Minor text improvements needed.

Consider these refinements for better readability:

  1. Add a comma after "In this example"
  2. Consider restructuring to: "In this example, we use the built-in sam build command to build a Docker image from a Dockerfile. The build process then copies your application's source code inside the Docker image."
-In this example we use the built-in `sam build` to build a docker image from a Dockerfile and then copy the source of your application inside the Docker image.
+In this example, we use the built-in `sam build` command to build a Docker image from a Dockerfile. The build process then copies your application's source code inside the Docker image.
🧰 Tools
🪛 LanguageTool

[typographical] ~38-~38: It appears that a comma is missing.
Context: ...ndencies & building the target In this example we use the built-in sam build to buil...

(DURING_THAT_TIME_COMMA)


Line range hint 92-106: Add placeholder note in CLI example.

The Lambda permissions section is well-documented with both manual and automated approaches. Consider adding a note about replacing the placeholder in the CLI command.

 aws lambda add-permission \
-  --function-name <your-function-name> \
+  --function-name <your-function-name> \  # Replace with your actual function name
   --action lambda:InvokeFunctionUrl \
   --principal "*" \
   --function-url-auth-type "NONE" \
-  --statement-id unique-statement-id
+  --statement-id unique-statement-id  # Use a unique identifier for this permission

6-6: Consider adding a table of contents.

To improve navigation in this comprehensive guide, consider adding a table of contents after the title. This would align with documentation best practices and make it easier for users to find specific sections.

 # AWS SAM Container
+
+## Table of Contents
+
+- [Features](#features)
+- [Requirements](#requirements)
+- [Setup Process](#setup-process)
+  - [Installing Dependencies & Building](#installing-dependencies--building-the-target)
+  - [Local Development](#local-development)
+- [Packaging and Deployment](#packaging-and-deployment)
+- [Add Permission to Lambda Function](#add-permission-to-the-lambda-function-for-public-access)
+- [Appendix](#appendix)
+  - [Golang Installation](#golang-installation)
aws-sam/README.md (5)

29-30: Fix grammatical error

Add a comma after the introductory phrase for better readability.

-In this example we use the built-in `sam build` to automatically download all the dependencies and package our build target.
+In this example, we use the built-in `sam build` to automatically download all the dependencies and package our build target.
🧰 Tools
🪛 LanguageTool

[typographical] ~29-~29: It appears that a comma is missing.
Context: ...ndencies & building the target In this example we use the built-in sam build to auto...

(DURING_THAT_TIME_COMMA)


27-30: Consider enhancing setup instructions

The setup process would be clearer with numbered steps and expected outcomes.

Consider restructuring like this:

### Installing dependencies & building the target

1. Use the built-in `sam build` command to download dependencies and package the build target:
   ```shell
   sam build --use-container
  1. Verify the build completed successfully by checking the .aws-sam directory.

For more information about SAM Build, see the official documentation.


<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 LanguageTool</summary>

[typographical] ~29-~29: It appears that a comma is missing.
Context: ...ndencies & building the target  In this example we use the built-in `sam build` to auto...

(DURING_THAT_TIME_COMMA)

</details>

</details>

---

`43-45`: **Enhance example response documentation**

The example shows a successful response but doesn't explain its structure. Consider adding a brief explanation of the response fields.

Add an explanation like this:

```markdown
# Example response explained:
{
  "statusCode": 200,        // HTTP status code indicating success
  "headers": null,          // No custom headers
  "multiValueHeaders": {    // Response headers
    "Content-Type": ["application/json"]
  },
  "body": "{\"message\":\"Hello World\"}"  // Response payload
}

Line range hint 92-116: Add security considerations for public Lambda URLs

While the permissions section is comprehensive, it should include security best practices and warnings about public access.

Consider adding these important security notes:

### Security Considerations

When making a Lambda function URL public, consider:

1. **Rate Limiting**: Implement AWS WAF rules to prevent abuse
2. **Input Validation**: Ensure robust request validation
3. **Monitoring**: Set up CloudWatch alarms for unusual traffic patterns
4. **Cost Control**: Configure concurrent execution limits
5. **Audit Logging**: Enable CloudTrail for API invocations

Line range hint 146-152: Enhance learning resources section

Consider adding more modern serverless learning resources and examples.

Add these valuable resources:

* [AWS Serverless Patterns Collection](https://serverlessland.com/patterns)
* [AWS Lambda Power Tuning](https://github.com/alexcasalboni/aws-lambda-power-tuning)
* [AWS Serverless Developer Portal](https://aws.amazon.com/serverless/developer-tools/)
firebase-functions/README.md (3)

Line range hint 89-116: Enhance security guidance for credentials handling

While the code includes a TODO comment about replacing credentials, it's recommended to:

  1. Add a warning about never committing real credentials to version control
  2. Provide guidance on using environment variables or secret management services
  3. Document the process of obtaining and securing Firebase credentials safely

Consider adding this security notice before the credentials section:

 func credentials() []byte {
+  // SECURITY WARNING: Never commit real credentials to version control!
+  // For production, use environment variables or secret management services.
+  // See: https://firebase.google.com/docs/admin/setup#initialize-sdk
   // TODO: Replace with your Credentials

Line range hint 379-384: Enhance deployment instructions

The deployment section would benefit from additional guidance:

  1. Prerequisites verification steps
  2. Environment setup instructions
  3. Post-deployment verification steps
  4. Troubleshooting common issues

Consider adding these sections before the deployment commands:

### Prerequisites Check
```bash
# Verify gcloud CLI installation
gcloud --version

# Verify you're authenticated
gcloud auth list

Environment Setup

  1. Enable required APIs in Google Cloud Console:
    • Cloud Functions API
    • Cloud Build API

Post-Deployment Verification

# Get the deployed function URL
gcloud functions describe MyCloudFunction --format='value(httpsTrigger.url)'

# Test the deployment
curl -X GET <function-url>

Troubleshooting

Common issues and their solutions:

  • Permission errors: Ensure proper IAM roles are assigned
  • Deployment failures: Check Cloud Build logs
  • Runtime errors: Monitor Cloud Functions logs

---

`418-418`: **Format Medium post link using proper markdown syntax**

Convert the bare URL to a properly formatted markdown link.

```diff
-https://medium.com/@kmltrk07/how-to-deploy-gofiber-app-to-firebase-functions-8d4d537a4464
+[Read the full tutorial on Medium](https://medium.com/@kmltrk07/how-to-deploy-gofiber-app-to-firebase-functions-8d4d537a4464)
🧰 Tools
🪛 Markdownlint (0.35.0)

418-418: null
Bare URL used

(MD034, no-bare-urls)

docker-mariadb-clean-arch/README.md (2)

1-4: Consider enhancing the metadata section for better documentation discoverability.

While the current metadata is good, consider adding these fields to improve SEO and searchability:

  • description field summarizing the example
  • Additional relevant keywords like rest-api, golang, fiber, jwt
---
title: Docker + MariaDB
+description: A REST API example showcasing Clean Architecture with Fiber, MariaDB, and JWT authentication using Docker
keywords: [docker, mariadb, clean architecture, makefile]
+keywords: [docker, mariadb, clean architecture, makefile, rest-api, golang, fiber, jwt, authentication]
---

Line range hint 5-24: Enhance documentation structure and content for better user experience.

The documentation is comprehensive but could benefit from these improvements:

  1. Add a table of contents at the beginning for easier navigation
  2. Include request/response examples for each API endpoint
  3. Document environment variables and configuration options
  4. Use consistent formatting for command blocks (some use bash, others don't specify the language)

Here's an example of how to add a table of contents:

# Docker MariaDB Clean Architecture

[TOC]

## Prerequisites
...

And an example of how to document an API endpoint with request/response:

### Users

#### GET /api/v1/users
Retrieves all users.

**Request:**
```curl
curl -X GET http://localhost:8080/api/v1/users

Response:

{
  "users": [
    {
      "id": 1,
      "name": "John Doe"
    }
  ]
}

</blockquote></details>

</blockquote></details>

<details>
<summary>📜 Review details</summary>

**Configuration used: CodeRabbit UI**
**Review profile: CHILL**

<details>
<summary>📥 Commits</summary>

Reviewing files that changed from the base of the PR and between 7830f514bafd639200454a603504ec6b851a63df and 67fef9977c963ab956cc02645693e58518cc44a4.

</details>

<details>
<summary>⛔ Files ignored due to path filters (24)</summary>

* `.github/workflows/sync-docs.yml` is excluded by `!**/*.yml`
* `bootstrap/go.mod` is excluded by `!**/*.mod`
* `bootstrap/go.sum` is excluded by `!**/*.sum`, `!**/*.sum`
* `colly-gorm/app/go.mod` is excluded by `!**/*.mod`
* `colly-gorm/app/go.sum` is excluded by `!**/*.sum`, `!**/*.sum`
* `colly-gorm/docker-compose.yml` is excluded by `!**/*.yml`
* `envoy-extauthz/app/go.mod` is excluded by `!**/*.mod`
* `envoy-extauthz/app/go.sum` is excluded by `!**/*.sum`, `!**/*.sum`
* `envoy-extauthz/authz/go.mod` is excluded by `!**/*.mod`
* `envoy-extauthz/authz/go.sum` is excluded by `!**/*.sum`, `!**/*.sum`
* `envoy-extauthz/docker-compose.yaml` is excluded by `!**/*.yaml`
* `envoy-extauthz/envoy/envoy.yaml` is excluded by `!**/*.yaml`
* `go.mod` is excluded by `!**/*.mod`
* `grpc/go.mod` is excluded by `!**/*.mod`
* `grpc/go.sum` is excluded by `!**/*.sum`, `!**/*.sum`
* `grpc/proto/service.pb.go` is excluded by `!**/*.pb.go`, `!**/*.pb.go`
* `oauth2/go.mod` is excluded by `!**/*.mod`
* `oauth2/go.sum` is excluded by `!**/*.sum`, `!**/*.sum`
* `svelte-netlify/go.mod` is excluded by `!**/*.mod`
* `svelte-netlify/go.sum` is excluded by `!**/*.sum`, `!**/*.sum`
* `svelte-netlify/netlify.toml` is excluded by `!**/*.toml`
* `svelte-netlify/public/build/bundle.css.map` is excluded by `!**/*.map`, `!**/*.map`
* `svelte-netlify/public/build/bundle.js.map` is excluded by `!**/*.map`, `!**/*.map`
* `testOauth2/.vscode/launch.json` is excluded by `!**/*.json`

</details>

<details>
<summary>📒 Files selected for processing (82)</summary>

* `.github/CONTRIBUTING.md` (1 hunks)
* `.github/scripts/sync_docs.sh` (1 hunks)
* `.github/scripts/sync_local.sh` (1 hunks)
* `.gitignore` (1 hunks)
* `404-handler/README.md` (1 hunks)
* `Makefile` (1 hunks)
* `README.md` (2 hunks)
* `air/README.md` (1 hunks)
* `auth-docker-postgres-jwt/README.md` (1 hunks)
* `auth-jwt/README.md` (1 hunks)
* `autocert/README.md` (1 hunks)
* `aws-eb/README.md` (1 hunks)
* `aws-sam-container/README.md` (3 hunks)
* `aws-sam/README.md` (4 hunks)
* `bootstrap/README.md` (3 hunks)
* `clean-architecture/README.md` (1 hunks)
* `cloud-run/README.md` (1 hunks)
* `colly-gorm/README.md` (2 hunks)
* `colly-gorm/app/internals/services/database/models.go` (1 hunks)
* `csrf-with-session/README.md` (2 hunks)
* `csrf/README.md` (1 hunks)
* `docker-mariadb-clean-arch/README.md` (1 hunks)
* `docker-nginx-loadbalancer/README.md` (1 hunks)
* `dummyjson/README.md` (2 hunks)
* `ent-mysql/README.md` (2 hunks)
* `entgo-sveltekit/README.md` (1 hunks)
* `envoy-extauthz/README.md` (3 hunks)
* `envoy-extauthz/authz/main.go` (1 hunks)
* `fiber-colly-gorm/app/.idea/.gitignore` (0 hunks)
* `fiber-colly-gorm/app/internals/services/database/models.go` (0 hunks)
* `fiber-grpc/README.md` (0 hunks)
* `file-server/README.md` (1 hunks)
* `firebase-auth/README.md` (2 hunks)
* `firebase-functions/README.md` (2 hunks)
* `gcloud-firebase/README.md` (3 hunks)
* `gcloud/README.md` (4 hunks)
* `geoip-maxmind/README.md` (3 hunks)
* `geoip/README.md` (1 hunks)
* `gorm-mysql/README.md` (1 hunks)
* `gorm-postgres/README.md` (1 hunks)
* `gorm/README.md` (1 hunks)
* `graceful-shutdown/README.md` (2 hunks)
* `graphql/README.md` (1 hunks)
* `grpc/README.md` (1 hunks)
* `hello-world/README.md` (1 hunks)
* `heroku/README.md` (1 hunks)
* `hexagonal/README.md` (1 hunks)
* `https-pkcs12-tls/README.md` (1 hunks)
* `https-tls/README.md` (1 hunks)
* `i18n/README.md` (1 hunks)
* `jwt/README.md` (1 hunks)
* `k8s/README.md` (1 hunks)
* `memgraph/README.md` (4 hunks)
* `minio/README.md` (1 hunks)
* `mongodb/README.md` (1 hunks)
* `multiple-ports/README.md` (1 hunks)
* `mysql/README.md` (1 hunks)
* `neo4j/README.md` (1 hunks)
* `oauth2-google/README.md` (1 hunks)
* `oauth2/README.md` (1 hunks)
* `oauth2/app.go` (1 hunks)
* `oauth2/handlers/handlers.go` (1 hunks)
* `oauth2/makefile` (1 hunks)
* `oauth2/middleware/auth.go` (1 hunks)
* `oauth2/router/router.go` (1 hunks)
* `optional-parameter/README.md` (1 hunks)
* `overview.go` (1 hunks)
* `parsley/README.md` (2 hunks)
* `postgresql/README.md` (1 hunks)
* `prefork/README.md` (1 hunks)
* `rabbitmq/README.md` (1 hunks)
* `react-router/README.md` (1 hunks)
* `recover/README.md` (1 hunks)
* `rss-feed/README.md` (1 hunks)
* `server-timing/README.md` (1 hunks)
* `sessions-sqlite3/README.md` (1 hunks)
* `socketio/README.md` (1 hunks)
* `spa/README.md` (1 hunks)
* `sqlboiler/README.md` (1 hunks)
* `sqlc/README.md` (2 hunks)
* `sse/README.md` (1 hunks)
* `stream-request-body/README.md` (1 hunks)

</details>

<details>
<summary>⛔ Files not processed due to max files limit (15)</summary>

* svelte-netlify/README.md
* sveltekit-embed/README.md
* swagger/README.md
* tableflip/README.md
* template-asset-bundling/README.md
* template/README.md
* testOauth2/makefile
* todo-app-with-auth-gorm/README.md
* unit-test/README.md
* upload-file/README.md
* url-shortener-api/README.md
* validation/README.md
* vercel/README.md
* websocket-chat/README.md
* websocket/README.md

</details>

<details>
<summary>💤 Files with no reviewable changes (3)</summary>

* fiber-colly-gorm/app/.idea/.gitignore
* fiber-colly-gorm/app/internals/services/database/models.go
* fiber-grpc/README.md

</details>

<details>
<summary>✅ Files skipped from review due to trivial changes (39)</summary>

* 404-handler/README.md
* air/README.md
* auth-docker-postgres-jwt/README.md
* auth-jwt/README.md
* autocert/README.md
* aws-eb/README.md
* clean-architecture/README.md
* colly-gorm/README.md
* csrf/README.md
* dummyjson/README.md
* ent-mysql/README.md
* entgo-sveltekit/README.md
* envoy-extauthz/README.md
* envoy-extauthz/authz/main.go
* file-server/README.md
* geoip-maxmind/README.md
* gorm/README.md
* graceful-shutdown/README.md
* graphql/README.md
* hello-world/README.md
* https-pkcs12-tls/README.md
* https-tls/README.md
* i18n/README.md
* minio/README.md
* mysql/README.md
* oauth2/README.md
* oauth2/handlers/handlers.go
* oauth2/middleware/auth.go
* oauth2/router/router.go
* optional-parameter/README.md
* parsley/README.md
* postgresql/README.md
* prefork/README.md
* rabbitmq/README.md
* react-router/README.md
* recover/README.md
* server-timing/README.md
* spa/README.md
* stream-request-body/README.md

</details>

<details>
<summary>🧰 Additional context used</summary>

<details>
<summary>🪛 LanguageTool</summary>

<details>
<summary>.github/CONTRIBUTING.md</summary>

[uncategorized] ~19-~19: Loose punctuation mark.
Context: ...keyword3]     ---     ```      - `title`: A short and descriptive title for your ...

(UNLIKELY_OPENING_PUNCTUATION)

---

[uncategorized] ~20-~20: Loose punctuation mark.
Context: ...title for your example.     - `keywords`: A list of relevant keywords (excluding ...

(UNLIKELY_OPENING_PUNCTUATION)

</details>
<details>
<summary>README.md</summary>

[grammar] ~22-~22: This phrase is duplicated. You should probably use “AWS SAM” only once.
Context: ... - [AWS Elastic Beanstalk](./aws-eb) - [AWS SAM](./aws-sam) - [AWS SAM Container](./aws-sam-container) - [Boot...

(PHRASE_REPETITION)

---

[duplication] ~28-~28: Possible typo: you repeated a word
Context: ...ud-run) - [Colly Gorm](./colly-gorm) - [CSRF](./csrf) - [CSRF + Session](./csrf-with-session) - [Dock...

(ENGLISH_WORD_REPEAT_RULE)

---

[duplication] ~41-~41: Possible typo: you repeated a word
Context: ...e Cloud Firebase](./gcloud-firebase) - [GeoIP](./geoip) - [GeoIP + MaxMind](./geoip-maxmind) - [GORM](./...

(ENGLISH_WORD_REPEAT_RULE)

---

[duplication] ~43-~43: Possible typo: you repeated a word
Context: ...- [GeoIP + MaxMind](./geoip-maxmind) - [GORM](./gorm) - [GORM MySQL](./gorm-mysql) - [GORM + PostgreS...

(ENGLISH_WORD_REPEAT_RULE)

---

[duplication] ~85-~85: Possible typo: you repeated a word
Context: ...) - [Tableflip Example](./tableflip) - [Template](./template) - [Template Asset Bundling](./template-asset-bundli...

(ENGLISH_WORD_REPEAT_RULE)

---

[grammar] ~87-~87: It appears that a hyphen is missing in the noun “To-do” (= task) or did you mean the verb “to do”?
Context: ...Bundling](./template-asset-bundling) - [Todo App + Auth + GORM](./todo-app-with-auth...

(TO_DO_HYPHEN)

---

[duplication] ~93-~93: Possible typo: you repeated a word
Context: ...](./validation) - [Vercel](./vercel) - [WebSocket](./websocket) - [WebSocket Chat](./websocket-chat) <!-- AUTO-GENER...

(ENGLISH_WORD_REPEAT_RULE)

</details>
<details>
<summary>aws-sam-container/README.md</summary>

[typographical] ~38-~38: It appears that a comma is missing.
Context: ...ndencies & building the target  In this example we use the built-in `sam build` to buil...

(DURING_THAT_TIME_COMMA)

</details>
<details>
<summary>aws-sam/README.md</summary>

[typographical] ~29-~29: It appears that a comma is missing.
Context: ...ndencies & building the target  In this example we use the built-in `sam build` to auto...

(DURING_THAT_TIME_COMMA)

</details>
<details>
<summary>bootstrap/README.md</summary>

[uncategorized] ~36-~36: Possible missing comma found.
Context: ...tp://localhost:4000/` if the port is in use you may modify it in the `.env` you jus...

(AI_HYDRA_LEO_MISSING_COMMA)

</details>
<details>
<summary>csrf-with-session/README.md</summary>

[typographical] ~115-~115: It appears that a comma is missing.
Context: ...when using the CSRF middleware. In this example we set a session variable `loggedIn` to...

(DURING_THAT_TIME_COMMA)

</details>
<details>
<summary>firebase-auth/README.md</summary>

[uncategorized] ~8-~8: This verb does not appear to agree with the subject. Consider using a different form.
Context: ...se Authentication Example  This example use  [gofiber-firebaseauth middleware ](htt...

(AI_EN_LECTOR_REPLACEMENT_VERB_AGREEMENT)

</details>
<details>
<summary>hexagonal/README.md</summary>

[style] ~87-~87: ‘by means of’ might be wordy. Consider a shorter alternative.
Context: ...connected to their software environment by means of ports and adapters. This architecture a...

(EN_WORDINESS_PREMIUM_BY_MEANS_OF)

---

[grammar] ~92-~92: This phrase is duplicated. You should probably use “Hexagonal Architecture” only once.
Context: ...an refer to the following resources: - [Hexagonal Architecture](https://alistair.cockburn.us/hexagonal-architecture/) - [Hexagonal Architecture in Golang](https://medium.com/@matryer/...

(PHRASE_REPETITION)

</details>
<details>
<summary>mongodb/README.md</summary>

[duplication] ~16-~16: Possible typo: you repeated a word
Context: ...s://github.com/gofiber/fiber) package - MongoDB - [MongoDB Go Driver](https://github.com/mongodb/m...

(ENGLISH_WORD_REPEAT_RULE)

---

[grammar] ~87-~87: This phrase is duplicated. You should probably use “Documentation MongoDB” only once.
Context: ...:3000")) } ```  ## References  - [Fiber Documentation](https://docs.gofiber.io) - [MongoDB Documentation](https://docs.mongodb.com) - [MongoDB Go Driver Documentation](https://pkg.go...

(PHRASE_REPETITION)

</details>
<details>
<summary>neo4j/README.md</summary>

[duplication] ~16-~16: Possible typo: you repeated a word
Context: ...s://github.com/gofiber/fiber) package - Neo4j - [Neo4j Go Driver](https://github.com/neo4j/neo...

(ENGLISH_WORD_REPEAT_RULE)

</details>

</details>
<details>
<summary>🪛 Markdownlint (0.35.0)</summary>

<details>
<summary>.github/CONTRIBUTING.md</summary>

11-11: Expected: 0; Actual: 2
Unordered list indentation

(MD007, ul-indent)

---

19-19: Expected: 2; Actual: 4
Unordered list indentation

(MD007, ul-indent)

---

20-20: Expected: 2; Actual: 4
Unordered list indentation

(MD007, ul-indent)

---

22-22: Expected: 0; Actual: 2
Unordered list indentation

(MD007, ul-indent)

---

23-23: Expected: 2; Actual: 4
Unordered list indentation

(MD007, ul-indent)

---

24-24: Expected: 2; Actual: 4
Unordered list indentation

(MD007, ul-indent)

---

25-25: Expected: 2; Actual: 4
Unordered list indentation

(MD007, ul-indent)

---

26-26: Expected: 2; Actual: 4
Unordered list indentation

(MD007, ul-indent)

</details>
<details>
<summary>README.md</summary>

32-32: null
Spaces inside link text

(MD039, no-space-in-links)

---

84-84: null
Spaces inside link text

(MD039, no-space-in-links)

</details>
<details>
<summary>firebase-auth/README.md</summary>

8-8: null
Spaces inside link text

(MD039, no-space-in-links)

---

8-8: null
Spaces inside link text

(MD039, no-space-in-links)

---

20-20: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)

</details>
<details>
<summary>firebase-functions/README.md</summary>

418-418: null
Bare URL used

(MD034, no-bare-urls)

</details>
<details>
<summary>gcloud-firebase/README.md</summary>

13-13: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)

</details>
<details>
<summary>gcloud/README.md</summary>

13-13: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)

</details>
<details>
<summary>grpc/README.md</summary>

6-6: Punctuation: '.'
Trailing punctuation in heading

(MD026, no-trailing-punctuation)

</details>
<details>
<summary>heroku/README.md</summary>

42-42: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)

</details>
<details>
<summary>memgraph/README.md</summary>

58-58: null
Bare URL used

(MD034, no-bare-urls)

</details>
<details>
<summary>socketio/README.md</summary>

40-40: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)

</details>

</details>
<details>
<summary>🪛 Shellcheck (0.10.0)</summary>

<details>
<summary>.github/scripts/sync_docs.sh</summary>

[warning] 23-23: For loops over find output are fragile. Use find -exec or a while read loop.

(SC2044)

---

[warning] 27-27: Quote this to prevent word splitting.

(SC2046)

</details>
<details>
<summary>.github/scripts/sync_local.sh</summary>

[warning] 12-12: For loops over find output are fragile. Use find -exec or a while read loop.

(SC2044)

---

[warning] 14-14: Quote this to prevent word splitting.

(SC2046)

</details>

</details>

</details>

<details>
<summary>🔇 Additional comments (29)</summary>

<details>
<summary>colly-gorm/app/internals/services/database/models.go (2)</summary>

`1-3`: **LGTM!**

Package declaration and imports are clean and follow Go conventions.

---

`12-20`: _:hammer_and_wrench: Refactor suggestion_

**Improve Course struct definition and field types**

Several improvements can be made to enhance the model:
1. Remove redundant `ID` field
2. Change Rating to a numeric type
3. Move `gorm.Model` embedding to the top
4. Add GORM tags for proper database column specifications
5. Consider URL validation

Here's the suggested improvement:

```diff
 type Course struct {
-	ID          int    `json:"id"`
-	Title       string `json:"title"`
-	Description string `json:"description"`
-	Creator     string `json:"creator"`
-	URL         string `json:"url"`
-	Rating      string `json:"rating"`
-	gorm.Model
+	gorm.Model
+	Title       string  `json:"title" gorm:"type:varchar(255);not null"`
+	Description string  `json:"description" gorm:"type:text"`
+	Creator     string  `json:"creator" gorm:"type:varchar(100);not null"`
+	URL         string  `json:"url" gorm:"type:varchar(2048);not null;uniqueIndex"`
+	Rating      float64 `json:"rating" gorm:"type:decimal(3,2);default:0"`
 }

Let's verify if there are any URL validation utilities in the codebase:

✅ Verification successful

Improve Course struct definition with consideration for existing usage

The suggested improvements should be modified based on the actual usage in the codebase:

 type Course struct {
-	ID          int    `json:"id"`
-	Title       string `json:"title"`
-	Description string `json:"description"`
-	Creator     string `json:"creator"`
-	URL         string `json:"url"`
-	Rating      string `json:"rating"`
-	gorm.Model
+	gorm.Model
+	Title       string `json:"title" gorm:"type:varchar(255);not null"`
+	Description string `json:"description" gorm:"type:text"`
+	Creator     string `json:"creator" gorm:"type:varchar(100)"`
+	URL         string `json:"url" gorm:"type:varchar(2048);uniqueIndex"`
+	Rating      string `json:"rating" gorm:"type:varchar(10)"`
 }

After analyzing the codebase:

  1. Rating should remain as string since it's scraped directly from Coursera's HTML (span.css-bbd009) and may include non-numeric characters
  2. Creator can be nullable as the scraper might not always find instructor information
  3. URL should have uniqueIndex to prevent duplicate courses
  4. The redundant ID field can still be removed as gorm.Model provides it
  5. Added appropriate GORM tags for column specifications
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Search for URL validation patterns or utilities
rg -l "url.*valid|valid.*url" --type go

Length of output: 41


Script:

#!/bin/bash
# Let's verify if there are any dependencies on the Course struct and its Rating field
rg -A 2 "Course.*Rating" --type go

# Check if there are any database migrations or schema definitions
fd -e sql

# Check if there are any existing database operations using the Course struct
rg "Course\{" --type go

# Look for any test files that might be using the Course struct
fd "_test.go$" | xargs rg "Course"

Length of output: 656


Script:

#!/bin/bash
# Let's check the content of the database migration file
cat colly-gorm/db/create_db.sql

# Check how Course struct is used in database operations
cat colly-gorm/app/internals/services/database/database.go

# Check how Course struct is used in scraper
cat colly-gorm/app/internals/services/scrapers/coursera_courses.go

Length of output: 3163

oauth2/makefile (1)

24-25: LGTM!

The release target correctly combines clean and buildrelease targets.

.gitignore (1)

28-28: LGTM! Verify build process compatibility.

Adding vendor/ to .gitignore follows Go project best practices. However, let's ensure this change aligns with the project's build process and CI/CD pipeline.

✅ Verification successful

Ignoring vendor/ directory is appropriate for this Go-based repository

The change to ignore the vendor/ directory is well-aligned with the codebase:

  • This is clearly a Go-based repository with numerous Go modules (multiple go.mod files)
  • Existing documentation in CSRF examples already instructs users to run go mod vendor after cloning
  • The vendor reference in firebase-functions is only in watch-mode exclusions

The change follows Go project conventions and won't impact builds since the vendor directory can be recreated using go mod vendor as already documented.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check if there are any build scripts or documentation referencing the vendor directory
# that might need updates due to this change.

# Check for vendor directory references in build files and documentation
rg -l "vendor" --type md --type makefile --type yaml

Length of output: 85


Script:

#!/bin/bash
# Let's try a more comprehensive search for vendor-related configurations and build scripts
# Check common build and config files
fd -e yml -e yaml -e Makefile -e mk -e sh -e json -X rg -l "vendor"

# Also check if there's any Go-related files that might need vendor
fd -e go -e mod -e sum -X rg -l "vendor"

# Check documentation files separately
fd -e md -X rg -l "vendor"

Length of output: 213


Script:

#!/bin/bash
# Let's check the content of these README files to understand the vendor references
echo "=== csrf/README.md ==="
rg -C 3 "vendor" ./csrf/README.md

echo -e "\n=== csrf-with-session/README.md ==="
rg -C 3 "vendor" ./csrf-with-session/README.md

echo -e "\n=== firebase-functions/README.md ==="
rg -C 3 "vendor" ./firebase-functions/README.md

# Also check if there's a go.mod file indicating this is a Go project
fd "go.mod$"

Length of output: 2659

firebase-auth/README.md (1)

1-5: LGTM! Well-structured Docusaurus metadata

The frontmatter is properly formatted and includes relevant keywords for the Firebase authentication example.

Makefile (3)

1-6: LGTM! Well-structured help target

The help target is implemented correctly using standard Unix tools and provides clear, formatted output.


24-28: LGTM! Well-implemented lint target

Good practice using a pinned version for golangci-lint.


1-32: Verify availability of required tools

The Makefile depends on several external tools. Let's verify their availability in the environment.

socketio/README.md (3)

1-4: LGTM! Well-structured metadata block.

The frontmatter includes relevant keywords that will improve documentation searchability.


6-9: LGTM! Clear and informative introduction.

The introduction effectively communicates the purpose and functionality of the example.


28-36: LGTM! Clear running instructions.

The instructions provide all necessary information to start the application.

.github/CONTRIBUTING.md (2)

1-4: LGTM! Clear and welcoming introduction.

The introduction effectively sets the tone and purpose of the contributing guidelines.


32-33: LGTM! Appropriate conclusion.

The conclusion effectively reinforces the importance of following the guidelines while maintaining a positive tone.

gcloud/README.md (1)

1-4: LGTM! Well-structured metadata block.

The metadata block follows the correct frontmatter format and includes relevant keywords for searchability.

gorm-mysql/README.md (1)

1-4: LGTM! Well-structured frontmatter

The metadata header is properly formatted with relevant title and keywords, which aligns well with Docusaurus requirements.

sse/README.md (1)

1-4: LGTM! Well-structured frontmatter for Docusaurus.

The frontmatter includes relevant keywords and proper formatting, which aligns well with Docusaurus requirements.

oauth2/app.go (2)

8-10: LGTM! Package imports refactored appropriately.

The transition from testOauth2/* to oauth2/* improves the package structure and makes it more production-ready.


8-10: Verify the package rename impact.

Please ensure that the package rename from testOauth2 to oauth2 has been consistently applied across the entire codebase.

✅ Verification successful

Let me verify the imports in the files that use the "oauth2" package to ensure they are consistent.


Package rename has been consistently applied

After reviewing all the relevant files, the package rename from testOauth2 to oauth2 has been consistently applied across the codebase. All imports and references use the new oauth2 package name correctly in:

  • oauth2/app.go
  • oauth2/router/router.go
  • oauth2/middleware/auth.go
  • oauth2/handlers/handlers.go

No references to the old package name testOauth2 were found.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check for any remaining references to the old package name
# and verify the consistency of the new package name usage

echo "Checking for any remaining references to 'testOauth2'..."
rg -l "testOauth2"

echo "Verifying consistent usage of 'oauth2' package..."
rg -l "\"oauth2/"

Length of output: 373


Script:

#!/bin/bash
# Check the actual import statements in the files that use oauth2
echo "Content of oauth2/app.go:"
cat oauth2/app.go

echo -e "\nContent of oauth2/router/router.go:"
cat oauth2/router/router.go

echo -e "\nContent of oauth2/middleware/auth.go:"
cat oauth2/middleware/auth.go

echo -e "\nContent of oauth2/handlers/handlers.go:"
cat oauth2/handlers/handlers.go

Length of output: 10691

README.md (4)

Line range hint 1-100: Overall structure looks good for Docusaurus integration

The README maintains a consistent theme while successfully incorporating Docusaurus elements. The auto-generated content ensures maintainability, and the contributing section encourages participation.

🧰 Tools
🪛 LanguageTool

[grammar] ~22-~22: This phrase is duplicated. You should probably use “AWS SAM” only once.
Context: ... - AWS Elastic Beanstalk - AWS SAM - AWS SAM Container - [Boot...

(PHRASE_REPETITION)


[duplication] ~28-~28: Possible typo: you repeated a word
Context: ...ud-run) - Colly Gorm - CSRF - CSRF + Session - [Dock...

(ENGLISH_WORD_REPEAT_RULE)


[duplication] ~41-~41: Possible typo: you repeated a word
Context: ...e Cloud Firebase](./gcloud-firebase) - GeoIP - GeoIP + MaxMind - [GORM](./...

(ENGLISH_WORD_REPEAT_RULE)


[duplication] ~43-~43: Possible typo: you repeated a word
Context: ...- GeoIP + MaxMind - GORM - GORM MySQL - [GORM + PostgreS...

(ENGLISH_WORD_REPEAT_RULE)


[duplication] ~85-~85: Possible typo: you repeated a word
Context: ...) - Tableflip Example - Template - [Template Asset Bundling](./template-asset-bundli...

(ENGLISH_WORD_REPEAT_RULE)


[grammar] ~87-~87: It appears that a hyphen is missing in the noun “To-do” (= task) or did you mean the verb “to do”?
Context: ...Bundling](./template-asset-bundling) - [Todo App + Auth + GORM](./todo-app-with-auth...

(TO_DO_HYPHEN)


[duplication] ~93-~93: Possible typo: you repeated a word
Context: ...](./validation) - Vercel - WebSocket - WebSocket Chat <!-- AUTO-GENER...

(ENGLISH_WORD_REPEAT_RULE)

🪛 Markdownlint (0.35.0)

32-32: null
Spaces inside link text

(MD039, no-space-in-links)


84-84: null
Spaces inside link text

(MD039, no-space-in-links)


Line range hint 97-100: Verify alignment with contributing guidelines

The contributing section looks good but should be verified against the new CONTRIBUTING.md file mentioned in the PR summary.

🧰 Tools
🪛 LanguageTool

[grammar] ~22-~22: This phrase is duplicated. You should probably use “AWS SAM” only once.
Context: ... - AWS Elastic Beanstalk - AWS SAM - AWS SAM Container - [Boot...

(PHRASE_REPETITION)


[duplication] ~28-~28: Possible typo: you repeated a word
Context: ...ud-run) - Colly Gorm - CSRF - CSRF + Session - [Dock...

(ENGLISH_WORD_REPEAT_RULE)


[duplication] ~41-~41: Possible typo: you repeated a word
Context: ...e Cloud Firebase](./gcloud-firebase) - GeoIP - GeoIP + MaxMind - [GORM](./...

(ENGLISH_WORD_REPEAT_RULE)


[duplication] ~43-~43: Possible typo: you repeated a word
Context: ...- GeoIP + MaxMind - GORM - GORM MySQL - [GORM + PostgreS...

(ENGLISH_WORD_REPEAT_RULE)


[duplication] ~85-~85: Possible typo: you repeated a word
Context: ...) - Tableflip Example - Template - [Template Asset Bundling](./template-asset-bundli...

(ENGLISH_WORD_REPEAT_RULE)


[grammar] ~87-~87: It appears that a hyphen is missing in the noun “To-do” (= task) or did you mean the verb “to do”?
Context: ...Bundling](./template-asset-bundling) - [Todo App + Auth + GORM](./todo-app-with-auth...

(TO_DO_HYPHEN)


[duplication] ~93-~93: Possible typo: you repeated a word
Context: ...](./validation) - Vercel - WebSocket - WebSocket Chat <!-- AUTO-GENER...

(ENGLISH_WORD_REPEAT_RULE)

🪛 Markdownlint (0.35.0)

32-32: null
Spaces inside link text

(MD039, no-space-in-links)


84-84: null
Spaces inside link text

(MD039, no-space-in-links)


15-95: Enhance naming consistency in the table of contents

While the auto-generated content is comprehensive, consider standardizing the naming conventions:

  1. Use consistent prefixes (e.g., "GORM", "AWS", "WebSocket")
  2. Use proper hyphenation ("Todo" → "To-do")
🧰 Tools
🪛 LanguageTool

[grammar] ~22-~22: This phrase is duplicated. You should probably use “AWS SAM” only once.
Context: ... - AWS Elastic Beanstalk - AWS SAM - AWS SAM Container - [Boot...

(PHRASE_REPETITION)


[duplication] ~28-~28: Possible typo: you repeated a word
Context: ...ud-run) - Colly Gorm - CSRF - CSRF + Session - [Dock...

(ENGLISH_WORD_REPEAT_RULE)


[duplication] ~41-~41: Possible typo: you repeated a word
Context: ...e Cloud Firebase](./gcloud-firebase) - GeoIP - GeoIP + MaxMind - [GORM](./...

(ENGLISH_WORD_REPEAT_RULE)


[duplication] ~43-~43: Possible typo: you repeated a word
Context: ...- GeoIP + MaxMind - GORM - GORM MySQL - [GORM + PostgreS...

(ENGLISH_WORD_REPEAT_RULE)


[duplication] ~85-~85: Possible typo: you repeated a word
Context: ...) - Tableflip Example - Template - [Template Asset Bundling](./template-asset-bundli...

(ENGLISH_WORD_REPEAT_RULE)


[grammar] ~87-~87: It appears that a hyphen is missing in the noun “To-do” (= task) or did you mean the verb “to do”?
Context: ...Bundling](./template-asset-bundling) - [Todo App + Auth + GORM](./todo-app-with-auth...

(TO_DO_HYPHEN)


[duplication] ~93-~93: Possible typo: you repeated a word
Context: ...](./validation) - Vercel - WebSocket - WebSocket Chat <!-- AUTO-GENER...

(ENGLISH_WORD_REPEAT_RULE)

🪛 Markdownlint (0.35.0)

32-32: null
Spaces inside link text

(MD039, no-space-in-links)


84-84: null
Spaces inside link text

(MD039, no-space-in-links)


1-5: Verify Docusaurus frontmatter structure

The metadata structure looks good for Docusaurus integration. However, let's verify it matches the expected structure.

overview.go (2)

1-9: LGTM!

The package declaration and imports are appropriate for this CLI tool.


106-107: Verify regex patterns against existing README files

Let's ensure the regex patterns can handle all README.md formats in the repository.

✅ Verification successful

Regex patterns successfully match all README.md files in the repository

The verification shows that the regex patterns in overview.go correctly match the format used across all README.md files in the repository:

  • All README files (except template files) follow the exact format title: value
  • All README files (except the main README and template files) follow the exact format keywords: [value1, value2, ...]

The two template files that don't match the pattern are expected exceptions as they are scaffolding files:

  • sveltekit-embed/template/README.md
  • entgo-sveltekit/template/README.md
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify if the regex patterns match existing README.md files

# Find all README.md files
echo "Checking README.md files for title and keywords format..."
fd -t f "README.md" -x sh -c '
    echo "\nChecking {}"
    echo "Title matches:"
    grep -E "^title: .+" "{}" || echo "No title found"
    echo "Keywords matches:"
    grep -E "^keywords: \[.+\]" "{}" || echo "No keywords found"
'

Length of output: 11074

csrf-with-session/README.md (1)

1-4: LGTM! Well-structured front matter.

The front matter is properly formatted and includes relevant keywords that will enhance discoverability.

aws-sam-container/README.md (1)

1-4: LGTM! Front matter properly configured for Docusaurus.

The added YAML front matter with title and relevant keywords aligns well with the Docusaurus integration objectives.

aws-sam/README.md (2)

1-4: LGTM! Well-structured front matter

The YAML front matter is properly formatted and includes relevant keywords for AWS SAM documentation.


Line range hint 1-152: Verify documentation structure consistency

Let's ensure the documentation structure aligns with other examples in the repository.

🧰 Tools
🪛 LanguageTool

[typographical] ~29-~29: It appears that a comma is missing.
Context: ...ndencies & building the target In this example we use the built-in sam build to auto...

(DURING_THAT_TIME_COMMA)

firebase-functions/README.md (1)

1-4: LGTM! Well-structured front matter.

The front matter is properly formatted and includes relevant keywords that will improve documentation discoverability.

colly-gorm/app/internals/services/database/models.go Outdated Show resolved Hide resolved
oauth2/makefile Show resolved Hide resolved
oauth2/makefile Show resolved Hide resolved
oauth2/makefile Show resolved Hide resolved
.github/scripts/sync_local.sh Outdated Show resolved Hide resolved
k8s/README.md Outdated
Comment on lines 23 to 27
1. Clone the repository:
```sh
git clone https://github.com/gofiber/recipes.git
cd recipes/kubernetes
```
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

Update repository path and directory name

The clone instructions need to be updated:

  • The repository URL appears to be incorrect
  • The directory name in the cd command doesn't match the actual path
-    git clone https://github.com/gofiber/recipes.git
-    cd recipes/kubernetes
+    git clone <correct-repository-url>
+    cd k8s

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

Comment on lines +108 to +142
```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: fiber-k8s-example
spec:
replicas: 2
selector:
matchLabels:
app: fiber-k8s-example
template:
metadata:
labels:
app: fiber-k8s-example
spec:
containers:
- name: fiber-k8s-example
image: fiber-k8s-example:latest
ports:
- containerPort: 3000
---
apiVersion: v1
kind: Service
metadata:
name: fiber-k8s-example
spec:
type: NodePort
selector:
app: fiber-k8s-example
ports:
- protocol: TCP
port: 3000
targetPort: 3000
nodePort: 30001
```
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

Implement Kubernetes deployment best practices

The deployment configuration needs several improvements for production readiness:

  1. Avoid using the latest tag for container images
  2. Add resource requests and limits
  3. Implement health checks
  4. Define security context

Here's an improved deployment configuration:

 apiVersion: apps/v1
 kind: Deployment
 metadata:
   name: fiber-k8s-example
 spec:
   replicas: 2
   selector:
     matchLabels:
       app: fiber-k8s-example
   template:
     metadata:
       labels:
         app: fiber-k8s-example
     spec:
       containers:
       - name: fiber-k8s-example
-        image: fiber-k8s-example:latest
+        image: fiber-k8s-example:1.0.0
         ports:
         - containerPort: 3000
+        resources:
+          requests:
+            cpu: "100m"
+            memory: "128Mi"
+          limits:
+            cpu: "200m"
+            memory: "256Mi"
+        livenessProbe:
+          httpGet:
+            path: /
+            port: 3000
+          initialDelaySeconds: 5
+          periodSeconds: 10
+        readinessProbe:
+          httpGet:
+            path: /
+            port: 3000
+          initialDelaySeconds: 5
+          periodSeconds: 10
+        securityContext:
+          runAsNonRoot: true
+          runAsUser: 1000
+          allowPrivilegeEscalation: false
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: fiber-k8s-example
spec:
replicas: 2
selector:
matchLabels:
app: fiber-k8s-example
template:
metadata:
labels:
app: fiber-k8s-example
spec:
containers:
- name: fiber-k8s-example
image: fiber-k8s-example:latest
ports:
- containerPort: 3000
---
apiVersion: v1
kind: Service
metadata:
name: fiber-k8s-example
spec:
type: NodePort
selector:
app: fiber-k8s-example
ports:
- protocol: TCP
port: 3000
targetPort: 3000
nodePort: 30001
```
apiVersion: apps/v1
kind: Deployment
metadata:
name: fiber-k8s-example
spec:
replicas: 2
selector:
matchLabels:
app: fiber-k8s-example
template:
metadata:
labels:
app: fiber-k8s-example
spec:
containers:
- name: fiber-k8s-example
image: fiber-k8s-example:1.0.0
ports:
- containerPort: 3000
resources:
requests:
cpu: "100m"
memory: "128Mi"
limits:
cpu: "200m"
memory: "256Mi"
livenessProbe:
httpGet:
path: /
port: 3000
initialDelaySeconds: 5
periodSeconds: 10
readinessProbe:
httpGet:
path: /
port: 3000
initialDelaySeconds: 5
periodSeconds: 10
securityContext:
runAsNonRoot: true
runAsUser: 1000
allowPrivilegeEscalation: false
---
apiVersion: v1
kind: Service
metadata:
name: fiber-k8s-example
spec:
type: NodePort
selector:
app: fiber-k8s-example
ports:
- protocol: TCP
port: 3000
targetPort: 3000
nodePort: 30001

//go:generate go run overview.go
func main() {
// fetch current file directory
root, _ := os.Getwd()
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

Add error handling for os.Getwd()

The error from os.Getwd() is being ignored. This could lead to silent failures if the working directory cannot be determined.

Apply this diff:

-root, _ := os.Getwd()
+root, err := os.Getwd()
+if err != nil {
+    fmt.Println("Error getting working directory:", err)
+    os.Exit(1)
+}
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
root, _ := os.Getwd()
root, err := os.Getwd()
if err != nil {
fmt.Println("Error getting working directory:", err)
os.Exit(1)
}

Comment on lines +74 to +98
if len(missingReadmeDirs) > 0 {
fmt.Println("Directories without README.md:")
for _, dir := range missingReadmeDirs {
fmt.Println("-", dir)
}
}

if len(missingTitleDirs) > 0 {
fmt.Println("Directories without Docusaurus title:")
for _, dir := range missingTitleDirs {
fmt.Println("-", dir)
}
}

if len(missingKeywordsDirs) > 0 {
fmt.Println("Directories without Docusaurus keywords:")
for _, dir := range missingKeywordsDirs {
fmt.Println("-", dir)
}
}

if len(missingReadmeDirs) > 0 || len(missingTitleDirs) > 0 || len(missingKeywordsDirs) > 0 {
fmt.Println("Error: Some directories are missing README.md files, Docusaurus title, or keywords.")
os.Exit(1)
}
Copy link
Contributor

Choose a reason for hiding this comment

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

🛠️ Refactor suggestion

Improve error reporting structure

The current error reporting mechanism could be enhanced for better clarity and maintainability.

Consider these improvements:

  1. Define error types as constants
  2. Create a structured error reporting function
  3. Use different exit codes for different error types
+const (
+    exitCodeMissingReadme    = 1
+    exitCodeMissingTitle     = 2
+    exitCodeMissingKeywords  = 3
+    exitCodeMultipleIssues   = 4
+)
+
+func reportMissingComponents(
+    missingReadme, missingTitle, missingKeywords []string,
+) (exitCode int) {
+    if len(missingReadme) > 0 {
+        fmt.Println("Directories without README.md:")
+        for _, dir := range missingReadme {
+            fmt.Printf("- %s\n", dir)
+        }
+        exitCode = exitCodeMissingReadme
+    }
+    // Similar blocks for title and keywords
+    return exitCode
+}

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

overview.go Outdated
Comment on lines 101 to 126
func extractTitleAndKeywords(readmePath string) (string, []string, error) {
content, err := os.ReadFile(readmePath)
if err != nil {
return "", nil, err
}
titleRe := regexp.MustCompile(`(?m)^title: (.+)`)
keywordsRe := regexp.MustCompile(`(?m)^keywords: \[(.+)\]`)

titleMatches := titleRe.FindSubmatch(content)
keywordsMatches := keywordsRe.FindSubmatch(content)

var title string
if len(titleMatches) > 1 {
title = string(titleMatches[1])
}

var keywords []string
if len(keywordsMatches) > 1 {
keywords = strings.Split(string(keywordsMatches[1]), ",")
for i := range keywords {
keywords[i] = strings.TrimSpace(keywords[i])
}
}

return title, keywords, nil
}
Copy link
Contributor

Choose a reason for hiding this comment

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

🛠️ Refactor suggestion

Enhance metadata extraction robustness

The title and keywords extraction could be improved with content validation and optimized regex handling.

  1. Precompile regex patterns at package level
  2. Add content validation
  3. Handle edge cases
+var (
+    titleRegex    = regexp.MustCompile(`(?m)^title: (.+)`)
+    keywordsRegex = regexp.MustCompile(`(?m)^keywords: \[(.+)\]`)
+)
+
+func validateTitle(title string) error {
+    if strings.TrimSpace(title) == "" {
+        return fmt.Errorf("title cannot be empty")
+    }
+    return nil
+}
+
+func validateKeywords(keywords []string) error {
+    for i, k := range keywords {
+        if strings.TrimSpace(k) == "" {
+            return fmt.Errorf("keyword at position %d is empty", i)
+        }
+    }
+    return nil
+}

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

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: 1

🧹 Outside diff range and nitpick comments (5)
.github/scripts/sync_local.sh (2)

1-2: Add additional safety flags for better error handling

Consider adding these additional safety flags to make the script more robust:

 #!/usr/bin/env bash
-set -e
+set -euo pipefail
+IFS=$'\n\t'

This change will:

  • -u: Exit on undefined variables
  • -o pipefail: Exit on pipe failures
  • IFS: Set safer field separator

1-1: Add script documentation and logging capabilities

Consider adding:

  1. A header comment block describing the script's purpose, usage, and requirements
  2. Logging functionality for better debugging
 #!/usr/bin/env bash
+
+# sync_local.sh - Synchronize documentation files to fiberDocs directory
+#
+# Usage: ./sync_local.sh [repo_dir]
+#   repo_dir: Target repository directory (default: recipes)
+#
+# Example: ./sync_local.sh my_docs
+
+# Logging function
+log() {
+    echo "[$(date +'%Y-%m-%d %H:%M:%S')] $*" >&2
+}
+
+# Enable debug mode with DEBUG=1 ./sync_local.sh
+if [[ "${DEBUG:-}" == "1" ]]; then
+    set -x
+fi
sessions-sqlite3/README.md (1)

8-14: Improve phrasing in the introduction.

The explanation is clear and informative, but there's a minor language improvement opportunity.

-This example uses the SQLite3 storage package to persist user sessions. While the storage package can automatically create the sessions table at initialization, we create it manually to add an additional "u" column. This custom column serves several purposes:
+This example uses the SQLite3 storage package to persist user sessions. While the storage package can automatically create the sessions table at initialization, we create it manually to add a custom "u" column. This column serves several purposes:
🧰 Tools
🪛 LanguageTool

[style] ~8-~8: This phrase might be redundant. Consider either removing or replacing the adjective ‘additional’.
Context: ...nitialization, we create it manually to add an additional "u" column. This custom column serves sev...

(ADD_AN_ADDITIONAL)

README.md (2)

87-87: Consider using "To-do" instead of "Todo"

The correct hyphenated form is "To-do" when used as a noun.

-- [Todo App + Auth + GORM](./todo-app-with-auth-gorm)
++ [To-do App + Auth + GORM](./todo-app-with-auth-gorm)
🧰 Tools
🪛 LanguageTool

[grammar] ~87-~87: It appears that a hyphen is missing in the noun “To-do” (= task) or did you mean the verb “to do”?
Context: ...Bundling](./template-asset-bundling) - [Todo App + Auth + GORM](./todo-app-with-auth...

(TO_DO_HYPHEN)


15-95: Well-organized table of contents with minor formatting suggestions

The auto-generated table of contents is comprehensive and well-structured. Consider removing spaces inside link texts for consistency (e.g., in "Tableflip Example" and similar entries).

🧰 Tools
🪛 LanguageTool

[grammar] ~22-~22: This phrase is duplicated. You should probably use “AWS SAM” only once.
Context: ... - AWS Elastic Beanstalk - AWS SAM - AWS SAM Container - [Boot...

(PHRASE_REPETITION)


[duplication] ~28-~28: Possible typo: you repeated a word
Context: ...ud-run) - Colly Gorm - CSRF - CSRF + Session - [Dock...

(ENGLISH_WORD_REPEAT_RULE)


[duplication] ~41-~41: Possible typo: you repeated a word
Context: ...e Cloud Firebase](./gcloud-firebase) - GeoIP - GeoIP + MaxMind - [GORM](./...

(ENGLISH_WORD_REPEAT_RULE)


[duplication] ~43-~43: Possible typo: you repeated a word
Context: ...- GeoIP + MaxMind - GORM - GORM MySQL - [GORM + PostgreS...

(ENGLISH_WORD_REPEAT_RULE)


[duplication] ~85-~85: Possible typo: you repeated a word
Context: ...) - Tableflip Example - Template - [Template Asset Bundling](./template-asset-bundli...

(ENGLISH_WORD_REPEAT_RULE)


[grammar] ~87-~87: It appears that a hyphen is missing in the noun “To-do” (= task) or did you mean the verb “to do”?
Context: ...Bundling](./template-asset-bundling) - [Todo App + Auth + GORM](./todo-app-with-auth...

(TO_DO_HYPHEN)


[duplication] ~93-~93: Possible typo: you repeated a word
Context: ...](./validation) - Vercel - WebSocket - WebSocket Chat <!-- AUTO-GENER...

(ENGLISH_WORD_REPEAT_RULE)

🪛 Markdownlint (0.35.0)

32-32: null
Spaces inside link text

(MD039, no-space-in-links)


84-84: null
Spaces inside link text

(MD039, no-space-in-links)

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

Reviewing files that changed from the base of the PR and between 67fef99 and 2971450.

📒 Files selected for processing (6)
  • .github/scripts/sync_local.sh (1 hunks)
  • README.md (2 hunks)
  • colly-gorm/app/internals/services/database/models.go (1 hunks)
  • k8s/README.md (1 hunks)
  • overview.go (1 hunks)
  • sessions-sqlite3/README.md (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (3)
  • colly-gorm/app/internals/services/database/models.go
  • k8s/README.md
  • overview.go
🧰 Additional context used
🪛 Shellcheck (0.10.0)
.github/scripts/sync_local.sh

[warning] 12-12: For loops over find output are fragile. Use find -exec or a while read loop.

(SC2044)


[warning] 14-14: Quote this to prevent word splitting.

(SC2046)

🪛 LanguageTool
README.md

[grammar] ~22-~22: This phrase is duplicated. You should probably use “AWS SAM” only once.
Context: ... - AWS Elastic Beanstalk - AWS SAM - AWS SAM Container - [Boot...

(PHRASE_REPETITION)


[duplication] ~28-~28: Possible typo: you repeated a word
Context: ...ud-run) - Colly Gorm - CSRF - CSRF + Session - [Dock...

(ENGLISH_WORD_REPEAT_RULE)


[duplication] ~41-~41: Possible typo: you repeated a word
Context: ...e Cloud Firebase](./gcloud-firebase) - GeoIP - GeoIP + MaxMind - [GORM](./...

(ENGLISH_WORD_REPEAT_RULE)


[duplication] ~43-~43: Possible typo: you repeated a word
Context: ...- GeoIP + MaxMind - GORM - GORM MySQL - [GORM + PostgreS...

(ENGLISH_WORD_REPEAT_RULE)


[duplication] ~85-~85: Possible typo: you repeated a word
Context: ...) - Tableflip Example - Template - [Template Asset Bundling](./template-asset-bundli...

(ENGLISH_WORD_REPEAT_RULE)


[grammar] ~87-~87: It appears that a hyphen is missing in the noun “To-do” (= task) or did you mean the verb “to do”?
Context: ...Bundling](./template-asset-bundling) - [Todo App + Auth + GORM](./todo-app-with-auth...

(TO_DO_HYPHEN)


[duplication] ~93-~93: Possible typo: you repeated a word
Context: ...](./validation) - Vercel - WebSocket - WebSocket Chat <!-- AUTO-GENER...

(ENGLISH_WORD_REPEAT_RULE)

sessions-sqlite3/README.md

[style] ~8-~8: This phrase might be redundant. Consider either removing or replacing the adjective ‘additional’.
Context: ...nitialization, we create it manually to add an additional "u" column. This custom column serves sev...

(ADD_AN_ADDITIONAL)

🪛 Markdownlint (0.35.0)
README.md

32-32: null
Spaces inside link text

(MD039, no-space-in-links)


84-84: null
Spaces inside link text

(MD039, no-space-in-links)

🔇 Additional comments (6)
sessions-sqlite3/README.md (5)

1-4: LGTM! Well-structured frontmatter.

The added metadata will improve documentation discoverability and organization.


16-20: SQLite3 prerequisite is missing.

A past review comment already addressed this issue. The suggestion to add SQLite3 installation instructions remains valid.


34-42: SQLite3 setup instructions need enhancement.

A past review comment already addressed this issue. The suggestion to add database creation context remains valid.


46-51: Testing steps are missing.

A past review comment already addressed this issue. The suggestion to add testing and verification steps remains valid.


55-55: 🛠️ Refactor suggestion

Remove redundant explanation.

This explanation duplicates the information already provided in the introduction section. Consider removing this line to avoid redundancy.

-This example uses the SQLite3 storage package to persist user sessions. The storage package can create the sessions table for you at initialization, but for the purpose of this example, the table is created manually with an additional "u" column to better query all user-related sessions.

Likely invalid or redundant comment.

README.md (1)

1-5: LGTM! Well-structured Docusaurus frontmatter

The metadata follows Docusaurus conventions and appropriately positions this as the main overview page.

.github/scripts/sync_local.sh Outdated Show resolved Hide resolved
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: 3

🧹 Outside diff range and nitpick comments (2)
README.md (1)

87-87: Consider using "To-do" instead of "Todo"

For better readability and grammatical correctness, consider updating "Todo" to "To-do" in the example name.

-- [Todo App + Auth + GORM](./todo-app-with-auth-gorm)
++ [To-do App + Auth + GORM](./todo-app-with-auth-gorm)
🧰 Tools
🪛 LanguageTool

[grammar] ~87-~87: It appears that a hyphen is missing in the noun “To-do” (= task) or did you mean the verb “to do”?
Context: ...Bundling](./template-asset-bundling) - [Todo App + Auth + GORM](./todo-app-with-auth...

(TO_DO_HYPHEN)

overview.go (1)

29-53: Simplify directory filtering logic

The current directory filtering logic is complex and could be simplified for better maintainability.

-if info.IsDir() && path != root && filepath.Dir(path) == root && !strings.HasPrefix(info.Name(), ".") {
+func shouldProcessDirectory(path, root string, info os.FileInfo) bool {
+    return info.IsDir() &&
+        path != root &&
+        filepath.Dir(path) == root &&
+        !strings.HasPrefix(info.Name(), ".")
+}
+
+if shouldProcessDirectory(path, root, info) {
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

Reviewing files that changed from the base of the PR and between 2971450 and a6f4b27.

📒 Files selected for processing (2)
  • README.md (2 hunks)
  • overview.go (1 hunks)
🧰 Additional context used
🪛 LanguageTool
README.md

[grammar] ~22-~22: This phrase is duplicated. You should probably use “AWS SAM” only once.
Context: ... - AWS Elastic Beanstalk - AWS SAM - AWS SAM Container - [Boot...

(PHRASE_REPETITION)


[duplication] ~28-~28: Possible typo: you repeated a word
Context: ...ud-run) - Colly Gorm - CSRF - CSRF + Session - [Dock...

(ENGLISH_WORD_REPEAT_RULE)


[duplication] ~41-~41: Possible typo: you repeated a word
Context: ...e Cloud Firebase](./gcloud-firebase) - GeoIP - GeoIP + MaxMind - [GORM](./...

(ENGLISH_WORD_REPEAT_RULE)


[duplication] ~43-~43: Possible typo: you repeated a word
Context: ...- GeoIP + MaxMind - GORM - GORM MySQL - [GORM + PostgreS...

(ENGLISH_WORD_REPEAT_RULE)


[duplication] ~85-~85: Possible typo: you repeated a word
Context: ...) - Tableflip Example - Template - [Template Asset Bundling](./template-asset-bundli...

(ENGLISH_WORD_REPEAT_RULE)


[grammar] ~87-~87: It appears that a hyphen is missing in the noun “To-do” (= task) or did you mean the verb “to do”?
Context: ...Bundling](./template-asset-bundling) - [Todo App + Auth + GORM](./todo-app-with-auth...

(TO_DO_HYPHEN)


[duplication] ~93-~93: Possible typo: you repeated a word
Context: ...](./validation) - Vercel - WebSocket - WebSocket Chat <!-- AUTO-GENER...

(ENGLISH_WORD_REPEAT_RULE)

🔇 Additional comments (5)
README.md (3)

1-5: LGTM! Well-structured Docusaurus frontmatter

The frontmatter is properly formatted and includes all necessary metadata for Docusaurus integration.


Line range hint 6-14: LGTM! Clear and engaging introduction

The introduction effectively sets the context and maintains a consistent cookbook theme throughout.


15-95: LGTM! Well-organized table of contents

The auto-generated table of contents is comprehensive and well-structured:

  • Maintains alphabetical ordering for easy navigation
  • Uses clear, descriptive example names
  • Includes proper auto-generation markers
🧰 Tools
🪛 LanguageTool

[grammar] ~22-~22: This phrase is duplicated. You should probably use “AWS SAM” only once.
Context: ... - AWS Elastic Beanstalk - AWS SAM - AWS SAM Container - [Boot...

(PHRASE_REPETITION)


[duplication] ~28-~28: Possible typo: you repeated a word
Context: ...ud-run) - Colly Gorm - CSRF - CSRF + Session - [Dock...

(ENGLISH_WORD_REPEAT_RULE)


[duplication] ~41-~41: Possible typo: you repeated a word
Context: ...e Cloud Firebase](./gcloud-firebase) - GeoIP - GeoIP + MaxMind - [GORM](./...

(ENGLISH_WORD_REPEAT_RULE)


[duplication] ~43-~43: Possible typo: you repeated a word
Context: ...- GeoIP + MaxMind - GORM - GORM MySQL - [GORM + PostgreS...

(ENGLISH_WORD_REPEAT_RULE)


[duplication] ~85-~85: Possible typo: you repeated a word
Context: ...) - Tableflip Example - Template - [Template Asset Bundling](./template-asset-bundli...

(ENGLISH_WORD_REPEAT_RULE)


[grammar] ~87-~87: It appears that a hyphen is missing in the noun “To-do” (= task) or did you mean the verb “to do”?
Context: ...Bundling](./template-asset-bundling) - [Todo App + Auth + GORM](./todo-app-with-auth...

(TO_DO_HYPHEN)


[duplication] ~93-~93: Possible typo: you repeated a word
Context: ...](./validation) - Vercel - WebSocket - WebSocket Chat <!-- AUTO-GENER...

(ENGLISH_WORD_REPEAT_RULE)

overview.go (2)

19-19: Error handling issue already reported

A previous review already highlighted the need to handle the error from os.Getwd().


79-103: Error reporting improvements already suggested

A previous review already provided detailed suggestions for improving the error reporting structure.

overview.go Outdated Show resolved Hide resolved
overview.go Show resolved Hide resolved
overview.go Outdated Show resolved Hide resolved
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: 0

🧹 Outside diff range and nitpick comments (3)
README.md (3)

15-95: Consider organizing related examples and standardizing naming conventions.

While the auto-generated table of contents is comprehensive, there are opportunities for improvement:

  1. Related examples could be grouped together, such as:

    • AWS-related examples (AWS EB, AWS SAM)
    • Database examples (GORM, MongoDB, PostgreSQL)
    • Authentication examples (Auth JWT, Firebase Auth)
  2. Some naming inconsistencies were noticed:

    • "MongoDB Example" vs "MongoDB"
    • "Recover Middleware Example" vs "Recover"
    • "Todo App" should be "To-do App" for correct hyphenation

This aligns with the PR objective to "create an issue to identify and combine identical examples into a single consolidated list." Would you like me to help draft the issue with a detailed proposal for reorganization?

🧰 Tools
🪛 LanguageTool

[grammar] ~22-~22: This phrase is duplicated. You should probably use “AWS SAM” only once.
Context: ...astic Beanstalk](./aws-eb/README.md) - AWS SAM - [AWS SAM Container](./aws-sam-container/README.m...

(PHRASE_REPETITION)


[duplication] ~28-~28: Possible typo: you repeated a word
Context: ...Colly Gorm - CSRF - [CSRF + Session](./csrf-with-session/README.m...

(ENGLISH_WORD_REPEAT_RULE)


[duplication] ~41-~41: Possible typo: you repeated a word
Context: ...rebase](./gcloud-firebase/README.md) - GeoIP - GeoIP + MaxMind -...

(ENGLISH_WORD_REPEAT_RULE)


[duplication] ~43-~43: Possible typo: you repeated a word
Context: ... MaxMind](./geoip-maxmind/README.md) - GORM - GORM MySQL - [GORM ...

(ENGLISH_WORD_REPEAT_RULE)


[duplication] ~85-~85: Possible typo: you repeated a word
Context: ...flip Example](./tableflip/README.md) - Template - [Template Asset Bundling](./template-asset-bundli...

(ENGLISH_WORD_REPEAT_RULE)


[grammar] ~87-~87: It appears that a hyphen is missing in the noun “To-do” (= task) or did you mean the verb “to do”?
Context: ..../template-asset-bundling/README.md) - [Todo App + Auth + GORM](./todo-app-with-auth...

(TO_DO_HYPHEN)


[duplication] ~93-~93: Possible typo: you repeated a word
Context: ...E.md) - Vercel - WebSocket - WebSocket Chat <!-- ...

(ENGLISH_WORD_REPEAT_RULE)


Line range hint 97-100: Consider enhancing the contributing section with more details.

The contributing section could be more helpful by:

  1. Linking to the new CONTRIBUTING.md guidelines
  2. Mentioning the auto-generation process for the table of contents
  3. Explaining how to properly format example documentation for Docusaurus

Would you like me to propose an expanded version of this section?

🧰 Tools
🪛 LanguageTool

[grammar] ~22-~22: This phrase is duplicated. You should probably use “AWS SAM” only once.
Context: ...astic Beanstalk](./aws-eb/README.md) - AWS SAM - [AWS SAM Container](./aws-sam-container/README.m...

(PHRASE_REPETITION)


[duplication] ~28-~28: Possible typo: you repeated a word
Context: ...Colly Gorm - CSRF - [CSRF + Session](./csrf-with-session/README.m...

(ENGLISH_WORD_REPEAT_RULE)


[duplication] ~41-~41: Possible typo: you repeated a word
Context: ...rebase](./gcloud-firebase/README.md) - GeoIP - GeoIP + MaxMind -...

(ENGLISH_WORD_REPEAT_RULE)


[duplication] ~43-~43: Possible typo: you repeated a word
Context: ... MaxMind](./geoip-maxmind/README.md) - GORM - GORM MySQL - [GORM ...

(ENGLISH_WORD_REPEAT_RULE)


[duplication] ~85-~85: Possible typo: you repeated a word
Context: ...flip Example](./tableflip/README.md) - Template - [Template Asset Bundling](./template-asset-bundli...

(ENGLISH_WORD_REPEAT_RULE)


[grammar] ~87-~87: It appears that a hyphen is missing in the noun “To-do” (= task) or did you mean the verb “to do”?
Context: ..../template-asset-bundling/README.md) - [Todo App + Auth + GORM](./todo-app-with-auth...

(TO_DO_HYPHEN)


[duplication] ~93-~93: Possible typo: you repeated a word
Context: ...E.md) - Vercel - WebSocket - WebSocket Chat <!-- ...

(ENGLISH_WORD_REPEAT_RULE)


Documentation structure needs to be updated for Docusaurus compatibility

The verification reveals that none of the example directories have the required Docusaurus frontmatter structure (with id and title fields) in their README.md files, despite the main README.md being updated for Docusaurus compatibility.

  • All 70+ example directories need to be updated with proper frontmatter
  • Two template directories also need updates:
    • ./entgo-sveltekit/template/README.md
    • ./sveltekit-embed/template/README.md
🔗 Analysis chain

Line range hint 1-100: Verify documentation structure across example directories.

Let's ensure all linked examples follow the new Docusaurus-compatible structure.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check if all example directories have properly structured README files with frontmatter

# Find all README.md files in example directories
echo "Checking README.md files in example directories..."
fd "^README\.md$" . -x sh -c '
  if ! grep -q "^---$" "{}" || ! grep -q "^id:" "{}" || ! grep -q "^title:" "{}"; then
    echo "Missing or incomplete frontmatter in: {}"
  fi
'

Length of output: 5303

🧰 Tools
🪛 LanguageTool

[grammar] ~22-~22: This phrase is duplicated. You should probably use “AWS SAM” only once.
Context: ...astic Beanstalk](./aws-eb/README.md) - AWS SAM - [AWS SAM Container](./aws-sam-container/README.m...

(PHRASE_REPETITION)


[duplication] ~28-~28: Possible typo: you repeated a word
Context: ...Colly Gorm - CSRF - [CSRF + Session](./csrf-with-session/README.m...

(ENGLISH_WORD_REPEAT_RULE)


[duplication] ~41-~41: Possible typo: you repeated a word
Context: ...rebase](./gcloud-firebase/README.md) - GeoIP - GeoIP + MaxMind -...

(ENGLISH_WORD_REPEAT_RULE)


[duplication] ~43-~43: Possible typo: you repeated a word
Context: ... MaxMind](./geoip-maxmind/README.md) - GORM - GORM MySQL - [GORM ...

(ENGLISH_WORD_REPEAT_RULE)


[duplication] ~85-~85: Possible typo: you repeated a word
Context: ...flip Example](./tableflip/README.md) - Template - [Template Asset Bundling](./template-asset-bundli...

(ENGLISH_WORD_REPEAT_RULE)


[grammar] ~87-~87: It appears that a hyphen is missing in the noun “To-do” (= task) or did you mean the verb “to do”?
Context: ..../template-asset-bundling/README.md) - [Todo App + Auth + GORM](./todo-app-with-auth...

(TO_DO_HYPHEN)


[duplication] ~93-~93: Possible typo: you repeated a word
Context: ...E.md) - Vercel - WebSocket - WebSocket Chat <!-- ...

(ENGLISH_WORD_REPEAT_RULE)

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

Reviewing files that changed from the base of the PR and between a6f4b27 and c1bd70d.

📒 Files selected for processing (2)
  • README.md (2 hunks)
  • overview.go (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • overview.go
🧰 Additional context used
🪛 LanguageTool
README.md

[grammar] ~22-~22: This phrase is duplicated. You should probably use “AWS SAM” only once.
Context: ...astic Beanstalk](./aws-eb/README.md) - AWS SAM - [AWS SAM Container](./aws-sam-container/README.m...

(PHRASE_REPETITION)


[duplication] ~28-~28: Possible typo: you repeated a word
Context: ...Colly Gorm - CSRF - [CSRF + Session](./csrf-with-session/README.m...

(ENGLISH_WORD_REPEAT_RULE)


[duplication] ~41-~41: Possible typo: you repeated a word
Context: ...rebase](./gcloud-firebase/README.md) - GeoIP - GeoIP + MaxMind -...

(ENGLISH_WORD_REPEAT_RULE)


[duplication] ~43-~43: Possible typo: you repeated a word
Context: ... MaxMind](./geoip-maxmind/README.md) - GORM - GORM MySQL - [GORM ...

(ENGLISH_WORD_REPEAT_RULE)


[duplication] ~85-~85: Possible typo: you repeated a word
Context: ...flip Example](./tableflip/README.md) - Template - [Template Asset Bundling](./template-asset-bundli...

(ENGLISH_WORD_REPEAT_RULE)


[grammar] ~87-~87: It appears that a hyphen is missing in the noun “To-do” (= task) or did you mean the verb “to do”?
Context: ..../template-asset-bundling/README.md) - [Todo App + Auth + GORM](./todo-app-with-auth...

(TO_DO_HYPHEN)


[duplication] ~93-~93: Possible typo: you repeated a word
Context: ...E.md) - Vercel - WebSocket - WebSocket Chat <!-- ...

(ENGLISH_WORD_REPEAT_RULE)

🔇 Additional comments (1)
README.md (1)

1-5: LGTM! Frontmatter metadata properly configured for Docusaurus.

The metadata section is correctly structured with the necessary fields for Docusaurus integration.

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: 1

🧹 Outside diff range and nitpick comments (2)
firebase-auth/README.md (2)

6-8: Fix grammar issues in the introduction.

The sentence structure needs improvement for better readability.

Apply these changes:

-This example use [gofiber-firebaseauth middleware](https://github.com/sacsand/gofiber-firebaseauth) to authenticate the endpoints. Find the documentation for middleware here for more configurations options [docs](https://github.com/sacsand/gofiber-firebaseauth)
+This example uses [gofiber-firebaseauth middleware](https://github.com/sacsand/gofiber-firebaseauth) to authenticate the endpoints. For more configuration options, refer to the middleware [documentation](https://github.com/sacsand/gofiber-firebaseauth).
🧰 Tools
🪛 LanguageTool

[uncategorized] ~8-~8: This verb does not appear to agree with the subject. Consider using a different form.
Context: ...se Authentication Example This example use [gofiber-firebaseauth middleware](https...

(AI_EN_LECTOR_REPLACEMENT_VERB_AGREEMENT)


19-23: Improve start instructions formatting and clarity.

The start section needs proper code block formatting and additional context.

Apply these changes:

-## Start
-```
-go build
-go run main
-```
+## Running the Application
+
+1. Install dependencies:
+```bash
+go mod download
+```
+
+2. Build and run the application:
+```bash
+go build
+./firebase-auth  # or go run main.go
+```
+
+The server will start on the default port. You can test the authentication using a valid Firebase ID token in your requests.
🧰 Tools
🪛 Markdownlint (0.35.0)

20-20: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

Reviewing files that changed from the base of the PR and between c1bd70d and cc5cd54.

📒 Files selected for processing (1)
  • firebase-auth/README.md (1 hunks)
🧰 Additional context used
🪛 LanguageTool
firebase-auth/README.md

[uncategorized] ~8-~8: This verb does not appear to agree with the subject. Consider using a different form.
Context: ...se Authentication Example This example use [gofiber-firebaseauth middleware](https...

(AI_EN_LECTOR_REPLACEMENT_VERB_AGREEMENT)


[uncategorized] ~13-~13: This verb does not appear to agree with the subject. Consider using a different form.
Context: ...e Service Account Credential (JSON file contain credential). You can get all these conf...

(AI_EN_LECTOR_REPLACEMENT_VERB_AGREEMENT)


[grammar] ~13-~13: The plural determiner ‘these’ does not agree with the singular noun ‘config’.
Context: ...le contain credential). You can get all these config from Firebase Console. ``` SERVICE_ACC...

(THIS_NNS)


[uncategorized] ~13-~13: You might be missing the article “the” here.
Context: ...ial). You can get all these config from Firebase Console. ``` SERVICE_ACCOUNT_JSON = "p...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)

🪛 Markdownlint (0.35.0)
firebase-auth/README.md

15-15: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)


20-20: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)

🔇 Additional comments (1)
firebase-auth/README.md (1)

1-4: LGTM! Well-structured metadata section.

The frontmatter includes relevant title and keywords that will help with documentation organization and searchability.

firebase-auth/README.md Show resolved Hide resolved
ReneWerner87 and others added 2 commits November 26, 2024 19:03
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
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: 35

🧹 Outside diff range and nitpick comments (137)
.github/scripts/sync_local.sh (1)

1-2: Enhance script safety with additional options

Consider adding these safety options to make the script more robust:

 #!/usr/bin/env bash
-set -e
+set -euo pipefail
+IFS=$'\n\t'

This change:

  • u: Exits on undefined variables
  • o pipefail: Prevents masking of pipe failures
  • IFS: Safer iteration defaults
firebase-auth/README.md (3)

10-10: Fix grammar in introduction.

The sentence has a subject-verb agreement issue.

-This example use [gofiber-firebaseauth middleware](https://github.com/sacsand/gofiber-firebaseauth) to authenticate the endpoints. Find the documentation for middleware here for more configurations options [docs](https://github.com/sacsand/gofiber-firebaseauth)
+This example uses [gofiber-firebaseauth middleware](https://github.com/sacsand/gofiber-firebaseauth) to authenticate the endpoints. Find the documentation for middleware here for more configuration options [here](https://github.com/sacsand/gofiber-firebaseauth).
🧰 Tools
🪛 LanguageTool

[grammar] ~10-~10: The verb form ‘use’ does not appear to fit in this context.
Context: ...ecipes/tree/master/firebase-auth) This example use [gofiber-firebaseauth middleware](https...

(SINGULAR_NOUN_VERB_AGREEMENT)


17-19: Specify language for code block.

Add the environment variable language identifier to the code block.

-```
+```env
 SERVICE_ACCOUNT_JSON = "path to service account credential json"

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 Markdownlint (0.35.0)</summary>

17-17: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)

</details>

</details>

---

`22-25`: **Specify language for code block.**

Add the shell language identifier to the code block.

```diff
-```
+```shell
 go build
 go run main

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 Markdownlint (0.35.0)</summary>

22-22: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)

</details>

</details>

</blockquote></details>
<details>
<summary>ent-mysql/README.md (1)</summary><blockquote>

Line range hint `32-40`: **Fix typo in endpoint URL**

There's a typo in the endpoints table - `/book:id` should be `/book/:id` to maintain consistent URL parameter format.

```diff
 | Method | URL         | Description     |
 |--------|-------------|-----------------|
 | GET    | /book       | All Books Info  |
-| GET    | /book:id    | One Book Info   |
+| GET    | /book/:id   | One Book Info   |
 | POST   | /create     | One Book Add    |
 | PUT    | /update/:id | One Book Update |
 | DELETE | /delete/:id | One Book Delete |
docker-nginx-loadbalancer/README.md (5)

1-7: LGTM! Consider expanding keywords for better discoverability.

The front matter structure is clean and follows Docusaurus conventions.

Consider adding more relevant keywords like "load-balancing", "container-orchestration", "microservices" to improve documentation discoverability.


8-8: LGTM! Consider adding badge descriptions.

The badges provide useful quick links with consistent styling.

Consider adding a brief note about what users should expect when clicking these badges (e.g., "View source code on GitHub" and "Try this example on StackBlitz").


Line range hint 10-13: Enhance feature descriptions for better clarity.

While the current features are well-listed, users would benefit from more detailed information about the Nginx load balancer configuration and its benefits.

Consider expanding the Docker and Nginx feature point to include:

  • Load balancing strategy used (e.g., round-robin, least connections)
  • Benefits of using 5 replicas
  • How the Nginx load balancer improves scalability and reliability

Line range hint 15-19: Add response details to the endpoints table.

The endpoint table is well-structured but missing important API details.

Consider adding:

  • Expected response format and example
  • Response status codes
  • Rate limiting information (if any)
  • Example curl command for testing

Line range hint 21-31: Enhance Getting Started with prerequisites and troubleshooting.

The instructions are clear but could be more comprehensive.

Consider adding:

  1. Prerequisites section listing required software (Docker, Docker Compose versions)
  2. System requirements
  3. Troubleshooting section for common issues
  4. Instructions for stopping and cleaning up the containers
  5. How to verify the load balancer is working correctly
bootstrap/README.md (3)

10-10: Consider expanding the description

While concise, the description could be enhanced by adding:

  • The purpose of this bootstrap template
  • Key features or benefits
  • Target audience or use cases

12-25: Consider adding configuration details

The components and router sections could be enhanced by:

  • Adding version information for each component
  • Including configuration examples for middleware
  • Providing links to the official documentation for each component

28-39: Fix formatting and enhance setup instructions

  1. Add language specifiers to code blocks
  2. Fix grammar in the final sentence
  3. Consider adding database schema setup instructions

Apply these changes:

-    ```
+    ```bash
     cp .env.example .env
     ```

-    ```
+    ```bash
     go run main.go
     ```
-Your api should be running at `http://localhost:4000/` if the port is in use you may modify it in the `.env` you just created.
+Your api should be running at `http://localhost:4000/`. If the port is in use, you may modify it in the `.env` you just created.

Consider adding:

  • Database schema setup instructions or migrations
  • Example .env file structure
  • Troubleshooting section
🧰 Tools
🪛 LanguageTool

[uncategorized] ~39-~39: Possible missing comma found.
Context: ...tp://localhost:4000/if the port is in use you may modify it in the.env` you jus...

(AI_HYDRA_LEO_MISSING_COMMA)

🪛 Markdownlint (0.35.0)

29-29: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)


36-36: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)

url-shortener-api/README.md (3)

1-4: Consider adding more Docusaurus metadata fields.

The frontmatter is good but could be enhanced with additional Docusaurus-specific fields for better documentation organization:

 ---
 title: URL Shortener
 keywords: [url shortener, redis, api]
+description: A URL shortening service with Redis and Golang
+sidebar_label: URL Shortener
+sidebar_position: 1
 ---

8-8: Consider adding more informative badges.

The current badges are good, but adding more badges would provide valuable information at a glance:

 [![Github](https://img.shields.io/static/v1?label=&message=Github&color=2ea44f&style=for-the-badge&logo=github)](https://github.com/gofiber/recipes/tree/master/url-shortener-api) [![StackBlitz](https://img.shields.io/static/v1?label=&message=StackBlitz&color=2ea44f&style=for-the-badge&logo=StackBlitz)](https://stackblitz.com/github/gofiber/recipes/tree/master/url-shortener-api)
+[![Go Version](https://img.shields.io/github/go-mod/go-version/gofiber/recipes?style=for-the-badge)](https://go.dev/doc/devel/release)
+[![License](https://img.shields.io/github/license/gofiber/recipes?style=for-the-badge)](https://github.com/gofiber/recipes/blob/master/LICENSE)

12-15: Enhance the Tech Stack section with version information.

Consider adding version requirements and links to official documentation:

 ## Tech Stack

- Golang
- Redis
+- [Go](https://go.dev/) (v1.16 or higher)
+- [Redis](https://redis.io/) (v6.0 or higher)
+- [Fiber](https://gofiber.io/) (v2.x)
template-asset-bundling/README.md (3)

1-4: LGTM! Consider expanding keywords for better discoverability.

The front matter is well-structured and follows Docusaurus conventions.

Consider adding more relevant keywords such as "golang", "fiber", "asset-bundling", "npm" to improve documentation searchability.


10-11: LGTM! Consider adding a screenshot or demo.

The introduction clearly explains the purpose and technologies used.

Consider adding a screenshot or GIF demonstrating the end result to help users quickly understand what they'll be building.


20-31: Add verification steps for successful setup.

The setup instructions are clear, but users would benefit from knowing how to verify successful installation.

Consider adding:

 2. Install dependencies:
     ```sh
     npm install
     ```
+
+ 3. Verify setup:
+     ```sh
+     # Verify Golang installation
+     go version
+     
+     # Verify Node.js and npm installation
+     node --version
+     npm --version
+     ```
socketio/README.md (1)

41-44: Add language specification to code block

The WebSocket URL code block should specify a language for proper formatting.

-```
+```plaintext
 ws://localhost:3000/ws/<user-id>

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 Markdownlint (0.35.0)</summary>

42-42: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)

</details>

</details>

</blockquote></details>
<details>
<summary>hello-world/README.md (4)</summary><blockquote>

`14-18`: **Add version requirements and go.mod reference.**

Consider enhancing the prerequisites section with:
- Minimum required Go version
- Compatible Fiber version range
- Reference to the go.mod file for dependency management

```diff
 Ensure you have the following installed:

- Golang
+ Golang (1.x or higher)
- [Fiber](https://github.com/gofiber/fiber) package
+ [Fiber](https://github.com/gofiber/fiber) v2.x
+
+ The project uses Go modules for dependency management. See `go.mod` for specific versions.

21-30: Make setup instructions more robust.

Consider making the directory navigation more flexible for different clone locations.

 1. Clone the repository:
     ```sh
     git clone https://github.com/gofiber/recipes.git
-    cd recipes/hello-world
+    # Navigate to the example directory
+    cd recipes
+    cd hello-world    # or use the full path to the example
     ```

45-62: Consider adding explanatory comments to the code example.

The code is well-structured, but adding comments would help readers understand key Fiber concepts.

 package main

 import (
     "log"
     "github.com/gofiber/fiber/v2"
 )

 func main() {
+    // Initialize a new Fiber application
     app := fiber.New()

+    // Define a route handler for the root path
     app.Get("/", func(c *fiber.Ctx) error {
         return c.SendString("Hello, World!")
     })

+    // Start the server on port 3000
     log.Fatal(app.Listen(":3000"))
 }

64-67: Consider adding more specific reference links.

The references section could be enhanced with:

  • Version-specific documentation links
  • Links to related examples or tutorials
  • Link to Fiber's middleware documentation
 ## References

 - [Fiber Documentation](https://docs.gofiber.io)
 - [Golang Documentation](https://golang.org/doc/)
+ - [Fiber v2 API Reference](https://docs.gofiber.io/api/fiber)
+ - [Fiber Middleware](https://docs.gofiber.io/api/middleware)
+ - [Go Modules Reference](https://golang.org/ref/mod)
todo-app-with-auth-gorm/README.md (5)

6-6: Fix hyphenation in "Todo" references

According to common style guides, the correct spelling is "To-do" when used as a noun.

-# Todo App with Auth using GORM
+# To-do App with Auth using GORM

-This project demonstrates a Todo application with authentication using GORM.
+This project demonstrates a To-do application with authentication using GORM.

Also applies to: 10-10

🧰 Tools
🪛 LanguageTool

[grammar] ~6-~6: It appears that a hyphen is missing in the noun “To-do” (= task) or did you mean the verb “to do”?
Context: ...[todo app, gorm, authentication] --- # Todo App with Auth using GORM [![Github](ht...

(TO_DO_HYPHEN)


10-10: Consider expanding the project description

The current description is quite brief. Consider adding more details about:

  • Key features of the To-do app
  • Authentication method used
  • Why GORM was chosen
🧰 Tools
🪛 LanguageTool

[grammar] ~10-~10: It appears that a hyphen is missing in the noun “To-do” (= task) or did you mean the verb “to do”?
Context: ...auth-gorm) This project demonstrates a Todo application with authentication using G...

(TO_DO_HYPHEN)


14-18: Enhance prerequisites section

Consider adding:

  • Minimum version requirements for Golang and tools
  • Database prerequisites (since GORM is used)
  • Instructions for installing the prerequisites

22-38: Enhance installation and running instructions

Consider adding:

  • Expected output or success indicators
  • Troubleshooting steps
  • How to verify the application is running correctly
  • Port information and how to access the application

40-42: LGTM! Well-documented environment variables.

The environment variables section is comprehensive with clear descriptions and defaults. Consider adding an example .env file template to help users get started quickly.

prefork/README.md (3)

1-4: Consider enhancing frontmatter metadata for better documentation.

To improve searchability and documentation organization, consider adding more metadata fields such as:

  • description: A brief overview of the example
  • difficulty: Indicating complexity level (e.g., beginner, intermediate)
  • category: The type of example (e.g., performance, configuration)
 ---
 title: Prefork Example
 keywords: [prefork]
+description: Learn how to use Fiber's Prefork feature to improve performance by utilizing multiple CPU cores
+difficulty: intermediate
+category: performance
 ---

19-30: Add verification and troubleshooting steps to setup instructions.

The setup section would benefit from:

  1. A verification step to confirm successful setup
  2. Common troubleshooting scenarios
  3. System requirements (e.g., minimum Go version)
 ## Setup

+### Requirements
+- Go 1.16 or higher
+- Unix-like operating system (for optimal prefork support)
+
 1. Clone the repository:
     ```sh
     git clone https://github.com/gofiber/recipes.git
     cd recipes/prefork
     ```

 2. Install dependencies:
     ```sh
     go get
     ```
+
+3. Verify setup:
+    ```sh
+    go build
+    ```
+
+### Troubleshooting
+- If you see "address already in use" errors, ensure no other services are using port 3000
+- On Windows, prefork behavior might differ due to platform limitations

68-71: Expand references section with additional resources.

Consider adding:

  1. Links to related examples (e.g., custom server configuration)
  2. Performance benchmarks or articles about prefork
  3. Links to Fiber's middleware documentation
 ## References

 - [Fiber Documentation](https://docs.gofiber.io)
 - [Fiber Prefork Documentation](https://docs.gofiber.io/api/fiber#prefork)
+- [Custom Server Configuration](https://docs.gofiber.io/api/fiber#config)
+- [Performance Tuning Guide](https://docs.gofiber.io/guide/performance)
+- [Related Example: Custom Configuration](../custom-config/README.md)
recover/README.md (6)

1-4: Consider enhancing the keywords metadata.

The keywords could be more comprehensive to improve discoverability. Consider adding related terms like: error-handling, panic, fiber-middleware, go, golang.


6-8: Consider adding more informative badges.

While the current badges are helpful, consider adding:

  • Go version badge
  • License badge
  • Go Report Card badge
    These would provide valuable information at a glance.

10-10: Enhance the introduction with more context.

Consider expanding the introduction to include:

  • Why someone would want to use the recover middleware
  • Common use cases
  • Benefits of implementing recovery mechanisms

21-30: Enhance setup instructions with verification steps.

Consider adding:

  1. A step to verify the installation was successful
  2. Common troubleshooting tips
  3. Expected output of successful setup

43-64: Enhance the example with more scenarios and explanations.

The current example demonstrates a basic panic scenario. Consider:

  1. Adding comments explaining the recovery process
  2. Including multiple examples showing different types of panics
  3. Demonstrating how to customize the recover middleware

66-69: Consider adding more reference links.

Helpful additions could include:

  • Link to Go's built-in recover documentation
  • Related middleware documentation
  • Community examples or discussions
memgraph/README.md (2)

Line range hint 23-28: Fix Docker command formatting.

The Docker run command uses an em-dash (–) instead of standard hyphens (-), which could cause issues when users try to copy and paste the command.

Replace the command with:

-docker run –name memgraph -it -p 7687:7687 -p 7444:7444 -p 3000:3000 -v mg_lib:/var/lib/memgraph memgraph/memgraph-platform
+docker run --name memgraph -it -p 7687:7687 -p 7444:7444 -p 3000:3000 -v mg_lib:/var/lib/memgraph memgraph/memgraph-platform

Line range hint 11-22: Consider adding version information for prerequisites.

To help users avoid compatibility issues, consider specifying minimum required versions for Go and the package dependencies.

Example addition:

Go is an obvious prerequisite. Make sure it is installed and configured properly.
+
+Minimum versions:
+- Go 1.16 or later
+- Fiber v2.x
+- Neo4j driver v5.x

After that you need two Go packages: Fiber and Neo4j driver for Go.
grpc/README.md (3)

6-6: Remove trailing period from heading.

According to markdown best practices, headings should not end with punctuation.

-# Example for fiber as a client to gRPC server.
+# Example for fiber as a client to gRPC server
🧰 Tools
🪛 Markdownlint (0.35.0)

6-6: Punctuation: '.'
Trailing punctuation in heading

(MD026, no-trailing-punctuation)


32-42: Add operational details for better user experience.

Consider adding the following information:

  • What to do if port 3000 is already in use
  • How to gracefully stop the server and client
  • Any environment variables that can be configured

44-58: Enhance API documentation with additional details.

Consider adding:

  • Error response examples and status codes
  • Response content type (application/json)
  • Request/response schema documentation
server-timing/README.md (3)

1-4: Consider expanding keywords for better discoverability.

The current keywords could be enhanced to improve searchability. Consider adding more relevant terms such as: golang, fiber, http headers, performance monitoring, timing headers.

 ---
 title: Server Timing
-keywords: [server timing]
+keywords: [server timing, golang, fiber, http headers, performance monitoring, timing headers]
 ---

21-30: Enhance setup instructions with version requirements.

Add Go version requirements and consider mentioning the option to download just this example.

 1. Clone the repository:
     ```sh
     git clone https://github.com/gofiber/recipes.git
     cd recipes/server-timing
     ```
+    Alternatively, download just this example using svn:
+    ```sh
+    svn export https://github.com/gofiber/recipes/trunk/server-timing
+    cd server-timing
+    ```

 2. Install dependencies:
+    Requires Go 1.17 or later
     ```sh
     go get
     ```

70-73: Consider adding more relevant references.

Add links to related resources that would be helpful for users implementing server timing.

 ## References

 - [Fiber Documentation](https://docs.gofiber.io)
 - [Server-Timing Header Documentation](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Server-Timing)
+- [W3C Server Timing Specification](https://w3c.github.io/server-timing/)
+- [Performance Monitoring Best Practices](https://web.dev/custom-metrics/)
tableflip/README.md (4)

1-4: Consider enhancing the frontmatter metadata for Docusaurus.

While the current metadata is good, consider adding these commonly used Docusaurus fields:

  • description - For SEO and documentation overview
  • sidebar_position - To control the order in navigation
  • tags - For better categorization
 ---
 title: Tableflip Example
 keywords: [tableflip, golang, graceful upgrade]
+description: Learn how to implement graceful upgrades in Go applications using tableflip
+sidebar_position: 1
+tags: [example, upgrade, production]
 ---

18-22: Consider expanding the goals section with examples.

While the goals are clear, adding brief examples or explanations would help readers better understand each point. For instance:

  • "No old code keeps running" - Explain how this prevents memory leaks
  • "Grace period for initialization" - Mention typical use cases
 - No old code keeps running after a successful upgrade.
+  > This ensures clean upgrades and prevents memory leaks from old processes.
 - The new process has a grace period for initialization.
+  > Useful for warming up caches or establishing database connections.
 - Crashing during initialization is acceptable.
+  > The old process continues serving if the new one fails to start.
 - Only a single upgrade is ever run in parallel.
+  > Prevents cascade failures and resource exhaustion.
 - Tableflip works on Linux and macOS.
+  > Uses OS-specific mechanisms for process management.

26-51: Enhance the steps section with additional context.

Consider adding:

  • Expected output for each command
  • Common troubleshooting tips
  • Note about the HUP signal behavior

Would you like me to provide a detailed example of these enhancements?

🧰 Tools
🪛 Markdownlint (0.35.0)

37-37: Expected: 0; Actual: 2
Unordered list indentation

(MD007, ul-indent)


38-38: Expected: 0; Actual: 2
Unordered list indentation

(MD007, ul-indent)


53-53: Consider adding a "Learn More" section.

The closing statement effectively summarizes the benefits. Consider adding links to:

  • Tableflip's advanced configuration options
  • Real-world usage examples
  • Troubleshooting guide
https-tls/README.md (2)

1-4: Consider enhancing frontmatter metadata.

The frontmatter could be enriched with additional metadata fields to improve documentation organization and searchability.

 ---
 title: HTTPS with TLS
 keywords: [https, tls, ssl, self-signed]
+description: Learn how to set up an HTTPS server with TLS in a Go application using the Fiber framework
+sidebar_position: 1
+slug: https-tls
 ---

68-71: Expand references with security resources.

Consider adding more relevant references for security best practices and TLS configuration.

Add these additional references:

## References

- [Fiber Documentation](https://docs.gofiber.io)
- [TLS in Go](https://golang.org/pkg/crypto/tls/)
- [Mozilla SSL Configuration Generator](https://ssl-config.mozilla.org/)
- [OWASP TLS Cheat Sheet](https://cheatsheetseries.owasp.org/cheatsheets/Transport_Layer_Security_Cheat_Sheet.html)
- [Let's Encrypt Documentation](https://letsencrypt.org/docs/)
svelte-netlify/README.md (4)

8-16: Fix heading hierarchy in the documentation.

The heading levels should only increment by one level at a time. Consider updating the heading structure:

# Deploying fiber on Netlify

[![Github...]
[![Netlify Status...]

-### Demo @ https://gofiber-svelte.netlify.app/
+## Demo
+
+https://gofiber-svelte.netlify.app/

-#### Based on the fiber-lambda API...
+### Based on the fiber-lambda API...
🧰 Tools
🪛 Markdownlint (0.35.0)

12-12: Expected: h2; Actual: h3
Heading levels should only increment by one level at a time

(MD001, heading-increment)


12-12: null
Bare URL used

(MD034, no-bare-urls)


Line range hint 16-45: Format bare URL as a proper link.

Convert the bare URL into a proper markdown link for better readability and to follow markdown best practices.

-### Demo @ https://gofiber-svelte.netlify.app/
+### Demo
+
+[View Demo](https://gofiber-svelte.netlify.app/)
🧰 Tools
🪛 Markdownlint (0.35.0)

12-12: Expected: h2; Actual: h3
Heading levels should only increment by one level at a time

(MD001, heading-increment)


12-12: null
Bare URL used

(MD034, no-bare-urls)


47-47: Fix grammar in the important note.

There's a subject-verb agreement issue in the sentence.

-Netlify functions allows you to have up to 125,000 requests a month.
+Netlify functions allow you to have up to 125,000 requests a month.
🧰 Tools
🪛 LanguageTool

[uncategorized] ~47-~47: This verb does not appear to agree with the subject. Consider using a different form.
Context: ...rects #### Important Netlify functions allows you to have up to 125,000 requests a mo...

(AI_EN_LECTOR_REPLACEMENT_VERB_AGREEMENT)


47-47: Consider expanding the caching recommendation.

The note about using cache is important given the request limits. Consider adding more specific caching recommendations or examples to help users implement effective caching strategies.

Would you like me to help provide some specific caching examples that could be added to the documentation?

🧰 Tools
🪛 LanguageTool

[uncategorized] ~47-~47: This verb does not appear to agree with the subject. Consider using a different form.
Context: ...rects #### Important Netlify functions allows you to have up to 125,000 requests a mo...

(AI_EN_LECTOR_REPLACEMENT_VERB_AGREEMENT)

sessions-sqlite3/README.md (1)

10-10: Consider removing redundant wording.

The word "additional" is redundant when used with "add". Consider rewording for conciseness:

-This example uses the SQLite3 storage package to persist user sessions. While the storage package can automatically create the sessions table at initialization, we create it manually to add an additional "u" column.
+This example uses the SQLite3 storage package to persist user sessions. While the storage package can automatically create the sessions table at initialization, we create it manually to add a "u" column.
🧰 Tools
🪛 LanguageTool

[style] ~10-~10: This phrase might be redundant. Consider either removing or replacing the adjective ‘additional’.
Context: ...nitialization, we create it manually to add an additional "u" column. This custom column serves sev...

(ADD_AN_ADDITIONAL)

multiple-ports/README.md (3)

1-4: Enhance keywords for better discoverability

Consider adding more relevant keywords to improve searchability:

 ---
 title: Multiple Ports
-keywords: [multiple ports, server, port]
+keywords: [multiple ports, server, port, golang, fiber, concurrent, goroutines, web server]
 ---

16-17: Add version requirements to prerequisites

Specify minimum version requirements for better clarity:

-Golang
-[Fiber](https://github.com/gofiber/fiber) package
+Golang (1.16 or later)
+[Fiber v2](https://github.com/gofiber/fiber) package (v2.0.0 or later)

81-83: Enhance references section

Consider adding more relevant documentation links:

 ## References

 - [Fiber Documentation](https://docs.gofiber.io)
+- [Go Concurrency Patterns](https://golang.org/doc/effective_go#concurrency)
+- [Fiber Routing Guide](https://docs.gofiber.io/guide/routing)
+- [Go WaitGroup Documentation](https://golang.org/pkg/sync/#WaitGroup)
autocert/README.md (5)

1-4: Consider expanding keywords for better discoverability.

The keywords list could be enhanced with additional relevant terms such as "certificate", "security", "golang", "fiber", "web", "automation" to improve SEO and documentation searchability.

 ---
 title: Autocert
-keywords: [autocert, tls, letsencrypt, ssl, https]
+keywords: [autocert, tls, letsencrypt, ssl, https, certificate, security, golang, fiber, web, automation]
 ---

Line range hint 32-39: Add security considerations for certificate cache directory.

The ./certs directory used for certificate cache should have proper permissions and security considerations. Consider adding a note about:

  • Required directory permissions
  • Backup recommendations
  • Production deployment considerations

Line range hint 44-44: Correct misleading information about localhost.

The statement about running on https://localhost is incorrect. Let's Encrypt doesn't issue certificates for localhost. Update this section to clarify that:

  1. A public domain is required
  2. The domain must be accessible from the internet
  3. Port 80/443 must be available for ACME challenges
-The application should now be running on `https://localhost`.
+The application should now be running on your configured domain. Note that:
+- Your domain must be publicly accessible
+- The server must be reachable on ports 80 and 443
+- DNS must be properly configured for your domain

Line range hint 46-48: Enhance the Example Usage section with important prerequisites.

The usage section should include critical prerequisites and potential issues:

  1. Domain ownership verification
  2. DNS configuration requirements
  3. Firewall/port forwarding setup if behind NAT
 ## Example Usage
 
+Before starting:
+1. Ensure your domain's DNS is properly configured to point to your server
+2. Verify that ports 80 and 443 are accessible from the internet
+3. If behind NAT, configure port forwarding for ports 80 and 443
+
 1. Open your browser and navigate to `https://yourdomain.com` (replace with your actual domain).
 
 2. You should see the message: `This is a secure server 👮`.

Line range hint 50-52: Expand the Conclusion with production deployment considerations.

The conclusion should include important notes about production deployment:

  1. Rate limiting considerations for Let's Encrypt
  2. Certificate renewal monitoring
  3. High availability setup recommendations
 ## Conclusion
 
-This example provides a basic setup for a Go Fiber application with automatic TLS certificate management using Let's Encrypt. It can be extended and customized further to fit the needs of more complex applications.
+This example provides a basic setup for a Go Fiber application with automatic TLS certificate management using Let's Encrypt. When deploying to production, consider:
+
+- Let's Encrypt rate limits and production quotas
+- Setting up monitoring for certificate renewal
+- Implementing proper error handling for certificate operations
+- Planning for high availability if needed
+
+The example can be extended and customized further to fit the needs of more complex applications.
oauth2/README.md (2)

9-9: Use relative URLs for internal repository links

The GitHub badge URL is hardcoded to the master branch. Consider using a relative URL to make it more maintainable:

-[![Github](https://img.shields.io/static/v1?label=&message=Github&color=2ea44f&style=for-the-badge&logo=github)](https://github.com/gofiber/recipes/tree/master/oauth2)
+[![Github](https://img.shields.io/static/v1?label=&message=Github&color=2ea44f&style=for-the-badge&logo=github)](../../tree/master/oauth2)

85-88: Add Fiber-specific references

Consider adding Fiber-specific documentation links:

 ## References
 
 - [OAuth2 Package Documentation](https://pkg.go.dev/golang.org/x/oauth2)
 - [Google OAuth2 Documentation](https://developers.google.com/identity/protocols/oauth2)
+- [Fiber Documentation](https://docs.gofiber.io)
+- [Fiber Session Middleware](https://docs.gofiber.io/api/middleware/session)
+- [Fiber Security Middleware](https://docs.gofiber.io/api/middleware/csrf)
oauth2-google/README.md (2)

41-46: Add troubleshooting section for common issues

Consider adding a troubleshooting section that covers common issues users might encounter when running the application, such as:

  • Port already in use
  • Invalid OAuth credentials
  • Network connectivity issues

68-71: Enhance packages section with versions and descriptions

Consider adding version information and brief descriptions for each package to help users understand their purpose in the project:

 ## Packages Used

-[Godotenv](https://github.com/joho/godotenv)
-[Fiber](https://github.com/gofiber/fiber)
-[OAuth2](https://github.com/golang/oauth2)
+- [Godotenv](https://github.com/joho/godotenv) v1.x - For loading environment variables
+- [Fiber](https://github.com/gofiber/fiber) v2.x - Fast HTTP web framework
+- [OAuth2](https://github.com/golang/oauth2) - For handling Google OAuth2 authentication
heroku/README.md (4)

8-8: Consider using relative branch references in badge URLs

The badge URLs currently point to the master branch explicitly. Consider using relative branch references to make the documentation more maintainable across different branches.

-[![Github](https://img.shields.io/static/v1?label=&message=Github&color=2ea44f&style=for-the-badge&logo=github)](https://github.com/gofiber/recipes/tree/master/heroku) [![StackBlitz](https://img.shields.io/static/v1?label=&message=StackBlitz&color=2ea44f&style=for-the-badge&logo=StackBlitz)](https://stackblitz.com/github/gofiber/recipes/tree/master/heroku)
+[![Github](https://img.shields.io/static/v1?label=&message=Github&color=2ea44f&style=for-the-badge&logo=github)](../../../tree/HEAD/heroku) [![StackBlitz](https://img.shields.io/static/v1?label=&message=StackBlitz&color=2ea44f&style=for-the-badge&logo=StackBlitz)](https://stackblitz.com/github/gofiber/recipes/tree/HEAD/heroku)

44-46: Add language specification to code block

The Procfile code block should specify a language for consistent formatting.

-    ```
+    ```procfile
     web: go run main.go
     ```
🧰 Tools
🪛 Markdownlint (0.35.0)

44-44: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)


50-53: Update git commands for branch flexibility

The deployment instructions assume 'master' as the branch name, which may not be accurate for all repositories. Consider using the current branch name or providing more flexible instructions.

-    git push heroku master
+    git push heroku HEAD:main

93-96: Consider adding more helpful references

The references section could be enhanced with additional useful resources for developers.

 ## References

 - [Fiber Documentation](https://docs.gofiber.io)
 - [Heroku Documentation](https://devcenter.heroku.com/)
+- [Heroku Go Support](https://devcenter.heroku.com/articles/go-support)
+- [Heroku Procfile Documentation](https://devcenter.heroku.com/articles/procfile)
+- [Go Modules Documentation](https://go.dev/ref/mod)
gcloud/README.md (5)

12-15: Add language specification to code block.

The code block for running locally should specify the language for better syntax highlighting.

-```
+```bash
 go run cmd/main.go

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 Markdownlint (0.35.0)</summary>

15-15: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)

</details>

</details>

---

Line range hint `19-33`: **Fix typo and improve command block formatting.**

1. "enviroment" is misspelled (should be "environment")
2. The command block contains an invalid character in the build command (em dash instead of double hyphen)

```diff
-This step will build a Docker Image, publish to Google Cloud Registry and deploy on Cloud Run Managed enviroment.
+This step will build a Docker Image, publish to Google Cloud Registry and deploy on Cloud Run Managed environment.

-gcloud builds submit — -tag gcr.io/$GCLOUD_PROJECT/gcloud-fiber .
+gcloud builds submit --tag gcr.io/$GCLOUD_PROJECT/gcloud-fiber .
🧰 Tools
🪛 Markdownlint (0.35.0)

15-15: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)


Line range hint 36-41: Fix typo in App Engine section.

"enviroment" is misspelled (should be "environment")

-This step will deploy the app to Google App Engine Standard Go enviroment.
+This step will deploy the app to Google App Engine Standard Go environment.

Line range hint 45-54: Fix typo and add language specification to code block.

  1. "enviroment" is misspelled (should be "environment")
  2. The code block should specify the language
-This step will deploy a HTTP Cloud Function using Go enviroment.
+This step will deploy a HTTP Cloud Function using Go environment.

-```
+```bash
 gcloud functions deploy MyCloudFunction --runtime go111 --trigger-http

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 LanguageTool</summary>

[misspelling] ~47-~47: Use “an” instead of ‘a’ if the following word starts with a vowel sound, e.g. ‘an article’, ‘an hour’.
Context: ...e Cloud Function  This step will deploy a HTTP Cloud Function using Go enviroment...

(EN_A_VS_AN)

</details>

</details>

---

Line range hint `1-54`: **Consider adding additional documentation sections.**

To enhance the documentation further, consider adding these sections:
1. Prerequisites (required GCP permissions, tools, etc.)
2. Environment variables configuration
3. Troubleshooting guide
4. Cost considerations for each deployment option


Would you like me to help create an issue to track these documentation improvements?

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 Markdownlint (0.35.0)</summary>

15-15: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)

</details>

</details>

</blockquote></details>
<details>
<summary>mysql/README.md (3)</summary><blockquote>

`1-4`: **Consider expanding keywords for better discoverability**

The keywords section could be enhanced to include more relevant terms such as: go, golang, fiber, database, example, recipe, web

```diff
 ---
 title: MySQL
-keywords: [mysql]
+keywords: [mysql, go, golang, fiber, database, example, recipe, web]
 ---

16-19: Add version requirements for dependencies

To ensure reproducibility, consider specifying minimum version requirements for each dependency.

-Golang
-[Fiber](https://github.com/gofiber/fiber) package
-MySQL
-[Go MySQL Driver](https://github.com/go-sql-driver/mysql)
+- Go 1.17 or later
+- [Fiber v2](https://github.com/gofiber/fiber) package
+- MySQL 5.7 or later
+- [Go MySQL Driver v1.6+](https://github.com/go-sql-driver/mysql)

85-89: Add security and configuration related references

Consider adding these valuable resources:

 ## References

 - [Fiber Documentation](https://docs.gofiber.io)
 - [MySQL Documentation](https://dev.mysql.com/doc/)
 - [Go MySQL Driver Documentation](https://pkg.go.dev/github.com/go-sql-driver/mysql)
+- [MySQL Security Best Practices](https://dev.mysql.com/doc/refman/8.0/en/security.html)
+- [Go Database Tutorial](https://go.dev/doc/tutorial/database-access)
+- [Twelve-Factor App - Config](https://12factor.net/config)
404-handler/README.md (5)

1-4: Consider adding a description field to the frontmatter.

Adding a description field would improve SEO and provide a quick summary when the page appears in search results.

---
title: 404 Handler
keywords: [404, not found, handler, errorhandler, custom]
+description: Learn how to implement a custom 404 Not Found handler in Fiber web framework for Go, including error handling and route management.
---

Line range hint 15-15: Enhance the description section with more context.

Consider adding information about:

  • Why custom 404 handling is important for security
  • How this improves user experience
  • Common use cases

Also applies to: 16-16

🧰 Tools
🪛 LanguageTool

[grammar] ~10-~10: Possible agreement error. The noun ‘handler’ seems to be countable.
Context: ...how to implement a custom 404 Not Found handler using the Fiber w...

(CD_NN)


Line range hint 19-21: Update Go version requirement and add Fiber dependency.

The Go version requirement seems outdated. Also, add the Fiber framework version requirement.

## Requirements

- [Go](https://golang.org/dl/) 1.18 or higher
+- [Go](https://golang.org/dl/) 1.21 or higher
- [Git](https://git-scm.com/downloads)
+- [Git](https://git-scm.com/downloads)
+- [Fiber](https://github.com/gofiber/fiber) v2.50.0 or higher
🧰 Tools
🪛 LanguageTool

[grammar] ~10-~10: Possible agreement error. The noun ‘handler’ seems to be countable.
Context: ...how to implement a custom 404 Not Found handler using the Fiber w...

(CD_NN)


Line range hint 41-61: Improve error handling in the code example.

The current implementation could be enhanced with:

  1. Better error messages
  2. Structured error response
  3. Logging for monitoring purposes
 // 404 Handler
 app.Use(func(c *fiber.Ctx) error {
-    return c.SendStatus(404) // => 404 "Not Found"
+    return c.Status(fiber.StatusNotFound).JSON(fiber.Map{
+        "error": "Route not found",
+        "path":  c.Path(),
+    })
 })
🧰 Tools
🪛 LanguageTool

[grammar] ~10-~10: Possible agreement error. The noun ‘handler’ seems to be countable.
Context: ...how to implement a custom 404 Not Found handler using the Fiber w...

(CD_NN)


Line range hint 64-66: Expand the conclusion with practical next steps.

The conclusion could provide more value by including:

  • Links to related examples
  • Advanced customization options
  • Best practices for production use
🧰 Tools
🪛 LanguageTool

[grammar] ~10-~10: Possible agreement error. The noun ‘handler’ seems to be countable.
Context: ...how to implement a custom 404 Not Found handler using the Fiber w...

(CD_NN)

spa/README.md (3)

1-10: Consider enhancing the metadata and project description.

While the basic structure is good, consider:

  • Adding more relevant keywords like fiber, golang, backend, frontend
  • Expanding the project description to mention key features or benefits
 ---
 title: Single Page Application (SPA)
-keywords: [spa, react, tailwindcss, parcel]
+keywords: [spa, react, tailwindcss, parcel, fiber, golang, backend, frontend]
 ---

 # Single Page Application (SPA)

 [![Github](https://img.shields.io/static/v1?label=&message=Github&color=2ea44f&style=for-the-badge&logo=github)](https://github.com/gofiber/recipes/tree/master/spa) [![StackBlitz](https://img.shields.io/static/v1?label=&message=StackBlitz&color=2ea44f&style=for-the-badge&logo=stackblitz)](https://stackblitz.com/github/gofiber/recipes/tree/master/spa)

-This project demonstrates how to set up a Single Page Application (SPA) using React for the frontend and Go with the Fiber framework for the backend.
+This project demonstrates how to set up a Single Page Application (SPA) using React for the frontend and Go with the Fiber framework for the backend. It showcases seamless integration between a modern React frontend and a high-performance Fiber backend, featuring static file serving, API routes, and middleware configuration.

42-61: Add more details to usage instructions.

Consider adding:

  • Development server port information
  • Environment variables or configuration details
  • Basic troubleshooting guide
 ### Building Frontend Assets

 1. Build the frontend assets:
     ```sh
     cd frontend
     npm run build
     ```

 2. Watch frontend assets for changes:
     ```sh
     npm run dev
     ```
+
+### Configuration
+
+The application can be configured using the following environment variables:
+- `PORT`: Server port (default: 3000)
+- `ENV`: Environment mode (default: development)
+
 ### Running the Application

 1. Start the Fiber backend application:
     ```sh
     cd backend
     go run main.go
     ```
+
+### Troubleshooting
+
+- If you encounter CORS issues, ensure the frontend development server matches the allowed origins
+- For build errors, try removing the `node_modules` and `dist` directories, then run `npm install` again

94-99: Expand the references section with more resources.

Consider adding:

  • Version-specific documentation links
  • Additional helpful resources like tutorials or best practices
 ## References

 - [Fiber Documentation](https://docs.gofiber.io)
 - [React Documentation](https://reactjs.org/docs/getting-started.html)
 - [Tailwind CSS Documentation](https://tailwindcss.com/docs)
 - [Parcel Documentation](https://parceljs.org/docs)
+- [Fiber Middleware Documentation](https://docs.gofiber.io/api/middleware)
+- [React + Go Tutorial](https://fiber.wiki/recipes#spa-with-react)
+- [Deployment Best Practices](https://docs.gofiber.io/guide/deployment)
mongodb/README.md (3)

1-4: Consider expanding keywords for better discoverability.

The current keywords are good but could be enhanced to improve searchability.

 ---
 title: MongoDB Example
-keywords: [mongodb, database]
+keywords: [mongodb, database, golang, fiber, nosql, web-framework, backend]
 ---

38-41: Add verification steps and expected output.

Help users verify their setup is working correctly by adding expected output and test steps.

 1. Start the application:
     ```sh
     go run main.go
     ```
+
+2. Verify the setup:
+   ```sh
+   curl http://localhost:3000
+   # Expected output: Hello, MongoDB!
+   ```
+
+The server should be running on http://localhost:3000

87-91: Improve references section organization and content.

The current references are good but could be better organized and include additional useful resources.

 ## References

-[Fiber Documentation](https://docs.gofiber.io)
-[MongoDB Documentation](https://docs.mongodb.com)
-[MongoDB Go Driver Documentation](https://pkg.go.dev/go.mongodb.org/mongo-driver)
+### Official Documentation
+- [Fiber](https://docs.gofiber.io)
+- [MongoDB](https://docs.mongodb.com)
+- [MongoDB Go Driver](https://pkg.go.dev/go.mongodb.org/mongo-driver)
+
+### Additional Resources
+- [MongoDB CRUD Operations](https://docs.mongodb.com/manual/crud/)
+- [Fiber Middleware](https://docs.gofiber.io/api/middleware)
+- [MongoDB Best Practices](https://www.mongodb.com/blog/post/performance-best-practices-mongodb)
🧰 Tools
🪛 LanguageTool

[grammar] ~89-~89: This phrase is duplicated. You should probably use “Documentation MongoDB” only once.
Context: ...:3000")) } ``` ## References - Fiber Documentation - MongoDB Documentation - [MongoDB Go Driver Documentation](https://pkg.go...

(PHRASE_REPETITION)

gorm-mysql/README.md (4)

1-10: Add GORM version compatibility information

Consider adding GORM version compatibility information to help users avoid potential version conflicts.

 # GORM MySQL Example

 [![Github](https://img.shields.io/static/v1?label=&message=Github&color=2ea44f&style=for-the-badge&logo=github)](https://github.com/gofiber/recipes/tree/master/gorm-mysql) [![StackBlitz](https://img.shields.io/static/v1?label=&message=StackBlitz&color=2ea44f&style=for-the-badge&logo=StackBlitz)](https://stackblitz.com/github/gofiber/recipes/tree/master/gorm-mysql)

 This is a sample program demonstrating how to use GORM as an ORM to connect to a MySQL database with the Fiber web framework.
+
+> **Compatibility Note**: This example is tested with GORM v1.x. For other versions, some modifications might be required.

14-16: Specify MySQL version requirements

Add the minimum supported MySQL version to help users avoid compatibility issues.

 - Go 1.16 or higher
-MySQL database
+- MySQL 5.7 or higher
 - Go modules

42-50: Enhance running instructions with environment variables and troubleshooting

Add support for environment variables and common troubleshooting steps to improve user experience.

 ## Running the Application

 1. Run the application:
     ```sh
     go run main.go
     ```

 2. The server will start on `http://localhost:3000`.
+
+### Environment Variables
+
+Alternatively, you can use environment variables instead of `config.json`:
+```sh
+export DB_USERNAME=your_db_username
+export DB_PASSWORD=your_db_password
+export DB_NAME=your_db_name
+export DB_HOST=localhost
+export DB_PORT=3306
+```
+
+### Troubleshooting
+
+- **Connection refused**: Ensure MySQL is running and accessible
+- **Access denied**: Verify database credentials and permissions
+- **Table doesn't exist**: Run the schema initialization SQL script

74-77: Document request payload validation rules

Add validation rules for the request payloads to help users understand the constraints.

 ### Create a New Book
 ```sh
 curl -X POST http://localhost:3000/book -d '{"title": "New Book", "author": "Author Name"}' -H "Content-Type: application/json"

+#### Validation Rules
+- title: Required, string, maximum 255 characters
+- author: Required, string, maximum 255 characters


</blockquote></details>
<details>
<summary>sse/README.md (1)</summary><blockquote>

`55-61`: **Enhance code overview with implementation details.**

The code overview section could be more helpful by including:
- Key implementation details of the SSE connection setup
- Event types and their structure
- Error handling approach
- Connection management details

Example:
```markdown
### `main.go`
The main Go file implements:
- SSE connection setup using Fiber's `c.Context()` for streaming
- Event structure with timestamp and message
- Graceful connection handling and cleanup
- Error handling for disconnections

### `index.html`
The client-side implementation includes:
- EventSource connection setup with error handling
- Event listeners for different message types
- Reconnection logic
neo4j/README.md (2)

1-4: Consider expanding keywords for better discoverability.

The current keywords cover the basics but could be enhanced to improve searchability.

 ---
 title: Neo4j
-keywords: [neo4j, database]
+keywords: [neo4j, database, golang, fiber, graph-database, example, tutorial]
 ---

94-96: Consider adding version-specific documentation links.

To ensure users follow the correct documentation for the versions used in the example, consider specifying version numbers in the links.

-[Fiber Documentation](https://docs.gofiber.io)
-[Neo4j Documentation](https://neo4j.com/docs/)
-[Neo4j Go Driver Documentation](https://pkg.go.dev/github.com/neo4j/neo4j-go-driver)
+[Fiber v2 Documentation](https://docs.gofiber.io/v2)
+[Neo4j 5.x Documentation](https://neo4j.com/docs/5.0/)
+[Neo4j Go Driver v5 Documentation](https://pkg.go.dev/github.com/neo4j/neo4j-go-driver/v5)
gcloud-firebase/README.md (4)

12-16: Add language specification to code block.

For better readability and syntax highlighting, specify the language in the code block.

-```
+```bash
 go run cmd/main.go

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 Markdownlint (0.35.0)</summary>

15-15: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)

</details>

</details>

---

Line range hint `19-36`: **Update deployment instructions for accuracy.**

A few improvements are needed in this section:
1. Fix typo: "enviroment" → "environment"
2. Update deprecated command: Remove `beta` from `gcloud run deploy` as it's now GA
3. Use consistent placeholder format: `[YOUR_PROJECT_ID]` vs `$GCLOUD_PROJECT`


```diff
-This step will build a Docker Image, publish to Google Cloud Registry and deploy on Cloud Run Managed enviroment.
+This step will build a Docker Image, publish to Google Cloud Registry and deploy on Cloud Run Managed environment.

-gcloud beta run deploy --platform managed --image gcr.io/$GCLOUD_PROJECT/gcloud-fiber-firebase \
+gcloud run deploy --platform managed --image gcr.io/$GCLOUD_PROJECT/gcloud-fiber-firebase \
🧰 Tools
🪛 Markdownlint (0.35.0)

15-15: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)


Line range hint 39-45: Fix typo and consider adding app.yaml example.

  1. Fix typo: "enviroment" → "environment"
  2. Consider adding an example app.yaml configuration to help users understand the required settings.
-This step will deploy the app to Google App Engine Standard Go enviroment.
+This step will deploy the app to Google App Engine Standard Go environment.

Would you like me to generate an example app.yaml configuration file for this deployment?


Line range hint 48-58: Update Cloud Functions deployment instructions.

Several improvements are needed:

  1. Fix typo: "enviroment" → "environment"
  2. Update to a newer Go runtime (go111 is deprecated)
  3. Consider including the contents of the referenced deploy.sh script
  4. Add example of the functions.go HTTP handler implementation mentioned in the documentation
-gcloud functions deploy HeroesAPI --runtime go111 --trigger-http
+gcloud functions deploy HeroesAPI --runtime go121 --trigger-http

Would you like me to:

  1. Generate an example deploy.sh script?
  2. Provide a sample implementation of the HTTP handler in functions.go?
🧰 Tools
🪛 LanguageTool

[misspelling] ~50-~50: Use “an” instead of ‘a’ if the following word starts with a vowel sound, e.g. ‘an article’, ‘an hour’.
Context: ...e Cloud Function This step will deploy a HTTP Cloud Function using Go enviroment...

(EN_A_VS_AN)

upload-file/README.md (3)

1-4: Consider enhancing front matter with additional Docusaurus metadata.

While the current front matter includes essential fields, consider adding commonly used Docusaurus metadata fields such as:

  • description: For SEO and documentation overview
  • sidebar_position: For controlling the order in navigation
  • slug: For URL customization
 ---
 title: File Upload
 keywords: [file upload, upload, form, multipart]
+description: Learn how to handle file uploads in Go Fiber with examples for single and multiple file uploads
+sidebar_position: 1
+slug: /recipes/file-upload
 ---

8-8: Consider adding more informative badges.

While the current badges provide repository links, consider adding badges that provide more information about the project:

  • Go version compatibility
  • License
  • Go Report Card
-[![Github](https://img.shields.io/static/v1?label=&message=Github&color=2ea44f&style=for-the-badge&logo=github)](https://github.com/gofiber/recipes/tree/master/upload-file) [![StackBlitz](https://img.shields.io/static/v1?label=&message=StackBlitz&color=2ea44f&style=for-the-badge&logo=StackBlitz)](https://stackblitz.com/github/gofiber/recipes/tree/master/upload-file)
+[![Github](https://img.shields.io/static/v1?label=&message=Github&color=2ea44f&style=for-the-badge&logo=github)](https://github.com/gofiber/recipes/tree/master/upload-file)
+[![StackBlitz](https://img.shields.io/static/v1?label=&message=StackBlitz&color=2ea44f&style=for-the-badge&logo=StackBlitz)](https://stackblitz.com/github/gofiber/recipes/tree/master/upload-file)
+[![Go Version](https://img.shields.io/github/go-mod/go-version/gofiber/recipes?style=for-the-badge)](go.mod)
+[![License](https://img.shields.io/github/license/gofiber/recipes?style=for-the-badge)](LICENSE)
+[![Go Report Card](https://goreportcard.com/badge/github.com/gofiber/recipes?style=for-the-badge)](https://goreportcard.com/report/github.com/gofiber/recipes)

Line range hint 11-99: Consider adding security considerations and troubleshooting sections.

The documentation is well-structured but could benefit from additional sections:

  1. Security Considerations:

    • File size limits
    • Allowed file types
    • Storage security
    • Input validation
  2. Troubleshooting Guide:

    • Common issues
    • Error messages
    • Solutions

Add these sections before the Conclusion:

## Security Considerations

When implementing file uploads, consider the following security measures:

- Set appropriate file size limits
- Validate file types and extensions
- Implement virus scanning (if applicable)
- Use secure file permissions
- Consider implementing rate limiting

Example configuration:
```go
app.Post("/upload", func(c *fiber.Ctx) error {
    // Limit file size to 10MB
    if err := c.ParseMultipartForm(10 * 1024 * 1024); err != nil {
        return err
    }
    // ... rest of the code
})

Troubleshooting

Common issues and solutions:

  1. File too large error

    • Check the file size limit in your configuration
    • Adjust the limit if necessary
  2. Permission denied

    • Ensure the upload directory has proper write permissions
    • Check file ownership
  3. Invalid file type

    • Verify the file extension is in the allowed list
    • Check the actual file content type

</blockquote></details>
<details>
<summary>entgo-sveltekit/README.md (5)</summary><blockquote>

`6-6`: **Consider standardizing the hyphenation of "To-do".**

For consistency with standard English usage, consider using the hyphenated form "To-do" when referring to the noun form (a task).

```diff
-# Todo Application
+# To-do Application
🧰 Tools
🪛 LanguageTool

[grammar] ~6-~6: It appears that a hyphen is missing in the noun “To-do” (= task) or did you mean the verb “to do”?
Context: ...ekit, tailwindcss, sqlite, rest] --- # Todo Application [![Github](https://img.shi...

(TO_DO_HYPHEN)


Line range hint 13-24: Enhance setup instructions with prerequisites.

For a full-stack application, it would be helpful to include:

  • Required Go version
  • Required Node.js/npm version
  • Any system prerequisites (e.g., SQLite)
  • Development environment setup steps

Consider adding a "Prerequisites" section before the "Run the Project" section:

## Prerequisites

- Go 1.x or later
- Node.js 16.x or later
- npm 8.x or later
- SQLite 3.x
🧰 Tools
🪛 LanguageTool

[grammar] ~6-~6: It appears that a hyphen is missing in the noun “To-do” (= task) or did you mean the verb “to do”?
Context: ...ekit, tailwindcss, sqlite, rest] --- # Todo Application [![Github](https://img.shi...

(TO_DO_HYPHEN)


[grammar] ~12-~12: It appears that a hyphen is missing in the noun “To-do” (= task) or did you mean the verb “to do”?
Context: ...ee52-724a-4cf4-8352-9cf6f5b007ef) This Todo application is a full-stack project bui...

(TO_DO_HYPHEN)


Line range hint 35-44: LGTM! Well-organized commands table.

The commands are clearly documented with their purposes. Consider adding example outputs or expected behavior for each command to help users verify successful execution.

🧰 Tools
🪛 LanguageTool

[grammar] ~6-~6: It appears that a hyphen is missing in the noun “To-do” (= task) or did you mean the verb “to do”?
Context: ...ekit, tailwindcss, sqlite, rest] --- # Todo Application [![Github](https://img.shi...

(TO_DO_HYPHEN)


[grammar] ~12-~12: It appears that a hyphen is missing in the noun “To-do” (= task) or did you mean the verb “to do”?
Context: ...ee52-724a-4cf4-8352-9cf6f5b007ef) This Todo application is a full-stack project bui...

(TO_DO_HYPHEN)


Line range hint 54-60: Consider enhancing API documentation with request/response examples.

The API routes table is well-structured, but would benefit from:

  • Request payload examples for POST/PUT endpoints
  • Response format examples for each endpoint
  • Error response scenarios and formats

Example addition:

### Example Requests/Responses

#### Create Todo
POST /api/v1/todo/create
```json
// Request
{
  "title": "Complete documentation",
  "completed": false
}

// Response
{
  "id": 1,
  "title": "Complete documentation",
  "completed": false,
  "created_at": "2024-11-20T..."
}

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 LanguageTool</summary>

[grammar] ~6-~6: It appears that a hyphen is missing in the noun “To-do” (= task) or did you mean the verb “to do”?
Context: ...ekit, tailwindcss, sqlite, rest] ---  # Todo Application  [![Github](https://img.shi...

(TO_DO_HYPHEN)

---

[grammar] ~12-~12: It appears that a hyphen is missing in the noun “To-do” (= task) or did you mean the verb “to do”?
Context: ...ee52-724a-4cf4-8352-9cf6f5b007ef)  This Todo application is a full-stack project bui...

(TO_DO_HYPHEN)

</details>

</details>

---

Line range hint `62-73`: **Add version requirements for dependencies.**

Consider specifying minimum version requirements or version ranges for each dependency to ensure reproducibility.

```diff
Go Dependencies
---------------

-   **Go Modules:** Go's built-in package manager used to manage dependencies for Go projects.
-   **Entgo:** A Golang Object Relational Mapping (ORM) tool used to define and generate database schemas.
+   **Go Modules:** Go's built-in package manager (Go 1.16+)
+   **Entgo:** (v0.x+) A Golang Object Relational Mapping (ORM) tool
🧰 Tools
🪛 LanguageTool

[grammar] ~6-~6: It appears that a hyphen is missing in the noun “To-do” (= task) or did you mean the verb “to do”?
Context: ...ekit, tailwindcss, sqlite, rest] --- # Todo Application [![Github](https://img.shi...

(TO_DO_HYPHEN)


[grammar] ~12-~12: It appears that a hyphen is missing in the noun “To-do” (= task) or did you mean the verb “to do”?
Context: ...ee52-724a-4cf4-8352-9cf6f5b007ef) This Todo application is a full-stack project bui...

(TO_DO_HYPHEN)

air/README.md (1)

Line range hint 1-100: Excellent documentation structure - Consider using as template.

The documentation is well-organized with clear sections for description, requirements, setup, configuration, and usage. This structure could serve as a template for standardizing other example READMEs across the repository.

Consider:

  1. Using this README structure as a baseline template for other examples
  2. Creating a documentation template in the contributing guidelines that follows this format
  3. Adding this structure to the PR/Issue templates for new examples
🧰 Tools
🪛 LanguageTool

[style] ~10-~10: Style-wise, it’s not ideal to insert an adverb (‘automatically’) in the middle of an infinitive construction (‘to reload’). Try moving the adverb to avoid split infinitives.
Context: ... purpose of this example is to show how to automatically reload your application during development whenever you make ch...

(SPLIT_INFINITIVE)


[style] ~10-~10: Consider shortening or rephrasing this to strengthen your wording.
Context: ...ication during development whenever you make changes to the source code. ## Description Live ...

(MAKE_CHANGES)

vercel/README.md (4)

8-8: Consider standardizing badge colors across examples.

While the badges are functional and well-formatted, consider establishing a consistent color scheme across all example READMEs to maintain visual consistency throughout the documentation.


Line range hint 41-52: Enhance deployment instructions.

Consider adding information about:

  • Environment variables that need to be configured
  • Project-specific Vercel settings
  • Common deployment issues and troubleshooting steps

Line range hint 58-103: Add more inline comments to the code example.

While the code is well-structured, adding more inline comments would help users understand:

  • The purpose of the middleware
  • The routing strategy
  • The response structure

Example enhancement:

 func handler() http.HandlerFunc {
  app := fiber.New()

+ // API version 1 endpoint
  app.Get("/v1", func(ctx *fiber.Ctx) error {
   return ctx.JSON(fiber.Map{
    "version": "v1",
   })
  })

+ // API version 2 endpoint
  app.Get("/v2", func(ctx *fiber.Ctx) error {
   return ctx.JSON(fiber.Map{
    "version": "v2",
   })
  })

+ // Root endpoint returns request details
  app.Get("/", func(ctx *fiber.Ctx) error {
   return ctx.JSON(fiber.Map{
    "uri":  ctx.Request().URI().String(),
    "path": ctx.Path(),
   })
  })

Update Go version requirement in README to match go.mod

The README should be updated to specify Go 1.23.3 as the minimum required version to match the version specified in go.mod.

🔗 Analysis chain

Line range hint 13-17: Verify Go version requirement.

The README specifies Go 1.18 or higher. Please verify if this aligns with the project's minimum supported Go version.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check Go version requirements across the project
rg -i "go 1\." go.mod

Length of output: 33

hexagonal/README.md (5)

12-12: Enhance image accessibility with a more descriptive caption

Consider adding a more descriptive alt text and caption for the architecture diagram to improve accessibility.

-![Hexagonal Architecture](Hexagonal-Arch.png)
+![Hexagonal Architecture diagram showing the layered structure of the application with domain, ports, and adapters](Hexagonal-Arch.png)

33-39: Add security considerations for MongoDB configuration

Consider adding a note about secure configuration practices:

  1. Recommend using environment variables instead of a config file for sensitive data
  2. Add a warning about not committing the actual MongoDB URI to version control
 3. Configure the MongoDB connection in the `config.json` file:
     ```json
     {
       "DB_URI": "your_mongodb_uri",
       "DB_Name": "your_db_name"
     }
     ```
+
+> **Security Note**: It's recommended to use environment variables for sensitive configuration data in production environments. Never commit actual database credentials to version control.
+
+Example using environment variables:
+```sh
+export MONGODB_URI="your_mongodb_uri"
+export DB_NAME="your_db_name"
+```

52-58: Enhance API documentation with response examples and status codes

The endpoints table would be more helpful with additional information about:

  1. Expected response formats
  2. HTTP status codes
  3. Error responses
 | Method | URL              | Description                      |
 | ------ | ---------------- | -------------------------------- |
-| GET    | /api/v1/products | Retrieves all products           |
+| GET    | /api/v1/products | Retrieves all products           | 
+|        |                  | Status: 200 OK                   |
+|        |                  | Response: `{"products": [{...}]}` |

89-89: Improve writing clarity and reduce repetition

A few style improvements would enhance readability:

  1. Replace "by means of" with "through" for conciseness
  2. Avoid repeating "Hexagonal Architecture" in the resources list
-...can be easily connected to their software environment by means of ports and adapters.
+...can be easily connected to their software environment through ports and adapters.

-For more information on hexagonal architecture, you can refer to the following resources:
-- [Hexagonal Architecture](https://alistair.cockburn.us/hexagonal-architecture/)
-- [Hexagonal Architecture in Golang](https://medium.com/@matryer/hexagonal-architecture-in-go-2b5e0df2d8f8)
+For more information, you can refer to the following resources:
+- [Original Pattern by Alistair Cockburn](https://alistair.cockburn.us/hexagonal-architecture/)
+- [Implementation in Golang](https://medium.com/@matryer/hexagonal-architecture-in-go-2b5e0df2d8f8)

Also applies to: 94-94

🧰 Tools
🪛 LanguageTool

[style] ~89-~89: ‘by means of’ might be wordy. Consider a shorter alternative.
Context: ...connected to their software environment by means of ports and adapters. This architecture a...

(EN_WORDINESS_PREMIUM_BY_MEANS_OF)


86-86: Consider adding a Testing section

Since this is an example project demonstrating hexagonal architecture, it would be valuable to include a section about:

  1. How to run the tests
  2. Examples of unit tests for different layers
  3. Integration testing approach

Would you like me to help draft a Testing section for the documentation?

csrf-with-session/README.md (3)

8-8: Consider using relative URLs for repository links.

While the badges look great, consider using relative URLs (e.g., ../../) instead of absolute paths to the master branch. This makes the documentation more maintainable if the repository structure changes.

-[![Github](https://img.shields.io/static/v1?label=&message=Github&color=2ea44f&style=for-the-badge&logo=github)](https://github.com/gofiber/recipes/tree/master/csrf-with-session)
+[![Github](https://img.shields.io/static/v1?label=&message=Github&color=2ea44f&style=for-the-badge&logo=github)](../../csrf-with-session)

Line range hint 11-15: Consider enhancing the security best practices section.

While the current security practices are well documented, consider adding:

  • Example of a CSRF token in a form
  • Code snippet showing how to validate tokens
  • Common attack scenarios and mitigations

This would make the documentation more actionable for implementers.


117-117: Add comma and consider clarifying session initialization.

  1. Add a comma after "In this example":
-In this example we set a session variable `loggedIn`
+In this example, we set a session variable `loggedIn`
  1. Consider adding a code snippet demonstrating how the session is initialized and the loggedIn flag is set, as this is a crucial implementation detail.
🧰 Tools
🪛 LanguageTool

[typographical] ~117-~117: It appears that a comma is missing.
Context: ...when using the CSRF middleware. In this example we set a session variable loggedIn to...

(DURING_THAT_TIME_COMMA)

sqlc/README.md (2)

Line range hint 89-90: Security: Use placeholders for database credentials

The migration commands contain hardcoded database credentials. This could lead to security issues if users copy these commands directly.

Replace the connection strings with placeholders:

-$ migrate -path database/migrations -database "postgresql://user:password@localhost:5432/fiber_demo?sslmode=disable" -verbose up
+$ migrate -path database/migrations -database "postgresql://${DB_USER}:${DB_PASSWORD}@localhost:5432/fiber_demo?sslmode=disable" -verbose up

-$ migrate -path database/migrations -database "postgresql://user:password@localhost:5432/fiber_demo?sslmode=disable" -verbose down
+$ migrate -path database/migrations -database "postgresql://${DB_USER}:${DB_PASSWORD}@localhost:5432/fiber_demo?sslmode=disable" -verbose down

Also, consider adding a note about using environment variables for security:

> ⚠️ **Security Note**: Replace `${DB_USER}` and `${DB_PASSWORD}` with your actual database credentials. For security, use environment variables instead of hardcoding credentials.

Also applies to: 94-95

🧰 Tools
🪛 Markdownlint (0.35.0)

10-10: Expected: h2; Actual: h4
Heading levels should only increment by one level at a time

(MD001, heading-increment)


Line range hint 9-142: Documentation is comprehensive and well-structured.

The usage instructions are clear, detailed, and include helpful console outputs. The step-by-step guide effectively walks users through the setup process.

Consider adding a troubleshooting section to address common issues users might encounter during setup.

🧰 Tools
🪛 Markdownlint (0.35.0)

10-10: Expected: h2; Actual: h4
Heading levels should only increment by one level at a time

(MD001, heading-increment)

overview.go (1)

136-178: Consider improving the link management implementation

  1. Move hardcoded URLs to configuration values for better maintainability
  2. Consider implementing a backup mechanism before file modifications
  3. The link format could be templated for better maintainability

Consider this approach:

+const (
+    githubBaseURL    = "https://github.com/gofiber/recipes/tree/master/"
+    stackblitzBaseURL = "https://stackblitz.com/github/gofiber/recipes/tree/master/"
+    linkTemplate     = "[![%s](https://img.shields.io/static/v1?label=&message=%s&color=2ea44f&style=for-the-badge&logo=%s)](%s%s)"
+)

 func addLinksToReadme(readmePath, dirName string) error {
+    // Create backup before modification
+    if err := os.WriteFile(readmePath+".bak", content, 0644); err != nil {
+        return fmt.Errorf("failed to create backup: %v", err)
+    }

     links := fmt.Sprintf(
-        "[![Github](https://img.shields.io/static/v1?label=&message=Github&color=2ea44f&style=for-the-badge&logo=github)](https://github.com/gofiber/recipes/tree/master/%s) "+
-            "[![StackBlitz](https://img.shields.io/static/v1?label=&message=StackBlitz&color=2ea44f&style=for-the-badge&logo=StackBlitz)](https://stackblitz.com/github/gofiber/recipes/tree/master/%s)",
-        dirName, dirName)
+        "%s %s",
+        fmt.Sprintf(linkTemplate, "Github", "Github", "github", githubBaseURL, dirName),
+        fmt.Sprintf(linkTemplate, "StackBlitz", "StackBlitz", "StackBlitz", stackblitzBaseURL, dirName))
aws-sam-container/README.md (2)

40-41: Add missing comma for better readability.

A comma should be added after the introductory phrase.

-In this example we use the built-in `sam build` to build a docker image from a Dockerfile and then copy the source of your application inside the Docker image.
+In this example, we use the built-in `sam build` to build a docker image from a Dockerfile and then copy the source of your application inside the Docker image.
🧰 Tools
🪛 LanguageTool

[typographical] ~40-~40: It appears that a comma is missing.
Context: ...ndencies & building the target In this example we use the built-in sam build to buil...

(DURING_THAT_TIME_COMMA)


Line range hint 89-95: Highlight the placeholder in AWS CLI command.

The AWS CLI command example is well-documented, but let's make the placeholder more noticeable to prevent copy-paste errors.

-  --function-name <your-function-name> \
+  --function-name YOUR_FUNCTION_NAME_HERE \

Also, consider adding a note about replacing unique-statement-id with a meaningful identifier.

aws-sam/README.md (3)

31-31: Add missing comma for better readability

A comma should be added after "In this example" to improve readability and grammar.

-In this example we use the built-in `sam build` to automatically download all the dependencies and package our build target.
+In this example, we use the built-in `sam build` to automatically download all the dependencies and package our build target.
🧰 Tools
🪛 LanguageTool

[typographical] ~31-~31: It appears that a comma is missing.
Context: ...ndencies & building the target In this example we use the built-in sam build to auto...

(DURING_THAT_TIME_COMMA)


148-148: Consider improving the API resource path example

The example path /hello/{proxy+} is mentioned without context about what the proxy+ parameter represents.

Consider adding a brief explanation:

-* Create an additional API resource (e.g. `/hello/{proxy+}`) and return the name requested through this new path
+* Create an additional API resource (e.g. `/hello/{proxy+}`) and return the name requested through this new path
+  - The `proxy+` parameter captures all child paths, allowing requests like `/hello/john` or `/hello/users/john`

Line range hint 1-148: Documentation structure aligns well with Docusaurus requirements

The documentation is well-structured with clear sections for setup, deployment, and configuration. It provides comprehensive guidance while maintaining consistency with the PR's objective of preparing for Docusaurus integration.

Consider adding these sections to further enhance the documentation:

  • Troubleshooting guide for common issues
  • Links to related AWS SAM examples or resources
clean-architecture/README.md (4)

Line range hint 9-20: Consider updating the version requirements.

The Go version requirement (1.18) seems outdated. Consider:

  • Updating to a more recent Go version (current is 1.21)
  • Specifying the minimum MongoDB version required
 ## Requirements

-[Go](https://golang.org/dl/) 1.18 or higher
-[MongoDB](https://www.mongodb.com/try/download/community)
+[Go](https://golang.org/dl/) 1.21 or higher
+[MongoDB](https://www.mongodb.com/try/download/community) 6.0 or higher
 [Git](https://git-scm.com/downloads)

Line range hint 21-45: Enhance setup instructions for better user experience.

Consider adding:

  • MongoDB authentication configuration
  • Troubleshooting section for common setup issues
  • Alternative MongoDB connection strings (e.g., MongoDB Atlas)

Example addition:

### MongoDB Configuration
The DB_URI can be configured for different scenarios:
- Local MongoDB: `mongodb://localhost:27017`
- With authentication: `mongodb://username:password@localhost:27017`
- MongoDB Atlas: `mongodb+srv://...`

### Troubleshooting
Common issues and solutions:
1. MongoDB Connection Failed
   - Ensure MongoDB service is running
   - Check authentication credentials
   - Verify network connectivity

Line range hint 46-85: Improve API documentation to follow REST best practices.

Consider these enhancements:

  1. Use path parameters for DELETE operation instead of request body
  2. Add response formats and status codes
  3. Include error handling examples

Example improvement:

 ## API Endpoints

 The following endpoints are available in the API:

-**GET /books**: List all books.
-**POST /books**: Add a new book.
-**PUT /books**: Update an existing book.
-**DELETE /books**: Remove a book.
+### GET /books
+Lists all books.
+
+Response (200 OK):
+```json
+{
+  "status": "success",
+  "data": [
+    {"id": "...", "title": "...", "author": "..."}
+  ]
+}
+```
+
+### POST /books
+Adds a new book.
+
+### PUT /books/{id}
+Updates an existing book.
+
+### DELETE /books/{id}
+Removes a book.
+
+Response codes:
+- 200: Success
+- 400: Bad Request
+- 404: Not Found
+- 500: Internal Server Error

Update the curl examples accordingly:

-curl -X DELETE http://localhost:3000/books -d '{"id":"<book_id>"}' -H "Content-Type: application/json"
+curl -X DELETE http://localhost:3000/books/<book_id>

Line range hint 86-256: Enhance architectural guidance with testing and DI examples.

The Clean Architecture explanation is good, but could be improved by adding:

  1. Dependency injection patterns
  2. Error handling strategies
  3. Testing examples for each layer

Example additions:

// Example of dependency injection
type BookHandler struct {
    service book.Service
}

func NewBookHandler(service book.Service) *BookHandler {
    return &BookHandler{service: service}
}

// Example of unit test
func TestBookService_InsertBook(t *testing.T) {
    mockRepo := NewMockBookRepository()
    service := NewBookService(mockRepo)
    
    book := &entities.Book{Title: "Test", Author: "Author"}
    result, err := service.InsertBook(book)
    
    assert.NoError(t, err)
    assert.NotNil(t, result)
}
firebase-functions/README.md (1)

420-420: Format the Medium post link using proper markdown syntax.

Instead of using a bare URL, please use proper markdown link syntax for better readability.

Apply this change:

-https://medium.com/@kmltrk07/how-to-deploy-gofiber-app-to-firebase-functions-8d4d537a4464
+[Read the full tutorial on Medium](https://medium.com/@kmltrk07/how-to-deploy-gofiber-app-to-firebase-functions-8d4d537a4464)
🧰 Tools
🪛 Markdownlint (0.35.0)

420-420: null
Bare URL used

(MD034, no-bare-urls)

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

Reviewing files that changed from the base of the PR and between cc5cd54 and 017a25c.

📒 Files selected for processing (81)
  • .github/scripts/sync_local.sh (1 hunks)
  • 404-handler/README.md (1 hunks)
  • air/README.md (1 hunks)
  • auth-docker-postgres-jwt/README.md (1 hunks)
  • auth-jwt/README.md (1 hunks)
  • autocert/README.md (1 hunks)
  • aws-eb/README.md (1 hunks)
  • aws-sam-container/README.md (3 hunks)
  • aws-sam/README.md (4 hunks)
  • bootstrap/README.md (1 hunks)
  • clean-architecture/README.md (1 hunks)
  • cloud-run/README.md (1 hunks)
  • colly-gorm/README.md (2 hunks)
  • csrf-with-session/README.md (2 hunks)
  • csrf/README.md (1 hunks)
  • docker-mariadb-clean-arch/README.md (1 hunks)
  • docker-nginx-loadbalancer/README.md (1 hunks)
  • dummyjson/README.md (2 hunks)
  • ent-mysql/README.md (2 hunks)
  • entgo-sveltekit/README.md (1 hunks)
  • envoy-extauthz/README.md (3 hunks)
  • file-server/README.md (1 hunks)
  • firebase-auth/README.md (1 hunks)
  • firebase-functions/README.md (2 hunks)
  • gcloud-firebase/README.md (3 hunks)
  • gcloud/README.md (4 hunks)
  • geoip-maxmind/README.md (3 hunks)
  • geoip/README.md (1 hunks)
  • gorm-mysql/README.md (1 hunks)
  • gorm-postgres/README.md (1 hunks)
  • gorm/README.md (1 hunks)
  • graceful-shutdown/README.md (2 hunks)
  • graphql/README.md (1 hunks)
  • grpc/README.md (1 hunks)
  • hello-world/README.md (1 hunks)
  • heroku/README.md (1 hunks)
  • hexagonal/README.md (1 hunks)
  • https-pkcs12-tls/README.md (1 hunks)
  • https-tls/README.md (1 hunks)
  • i18n/README.md (1 hunks)
  • jwt/README.md (1 hunks)
  • k8s/README.md (1 hunks)
  • memgraph/README.md (4 hunks)
  • minio/README.md (1 hunks)
  • mongodb/README.md (1 hunks)
  • multiple-ports/README.md (1 hunks)
  • mysql/README.md (1 hunks)
  • neo4j/README.md (1 hunks)
  • oauth2-google/README.md (1 hunks)
  • oauth2/README.md (1 hunks)
  • optional-parameter/README.md (1 hunks)
  • overview.go (1 hunks)
  • parsley/README.md (2 hunks)
  • postgresql/README.md (1 hunks)
  • prefork/README.md (1 hunks)
  • rabbitmq/README.md (1 hunks)
  • react-router/README.md (1 hunks)
  • recover/README.md (1 hunks)
  • rss-feed/README.md (1 hunks)
  • server-timing/README.md (1 hunks)
  • sessions-sqlite3/README.md (1 hunks)
  • socketio/README.md (1 hunks)
  • spa/README.md (1 hunks)
  • sqlboiler/README.md (1 hunks)
  • sqlc/README.md (2 hunks)
  • sse/README.md (1 hunks)
  • stream-request-body/README.md (1 hunks)
  • svelte-netlify/README.md (2 hunks)
  • sveltekit-embed/README.md (1 hunks)
  • swagger/README.md (1 hunks)
  • tableflip/README.md (1 hunks)
  • template-asset-bundling/README.md (1 hunks)
  • template/README.md (1 hunks)
  • todo-app-with-auth-gorm/README.md (1 hunks)
  • unit-test/README.md (1 hunks)
  • upload-file/README.md (1 hunks)
  • url-shortener-api/README.md (1 hunks)
  • validation/README.md (1 hunks)
  • vercel/README.md (1 hunks)
  • websocket-chat/README.md (1 hunks)
  • websocket/README.md (1 hunks)
✅ Files skipped from review due to trivial changes (6)
  • sveltekit-embed/README.md
  • template/README.md
  • unit-test/README.md
  • validation/README.md
  • websocket-chat/README.md
  • websocket/README.md
🚧 Files skipped from review as they are similar to previous changes (29)
  • auth-docker-postgres-jwt/README.md
  • auth-jwt/README.md
  • aws-eb/README.md
  • cloud-run/README.md
  • colly-gorm/README.md
  • csrf/README.md
  • docker-mariadb-clean-arch/README.md
  • dummyjson/README.md
  • envoy-extauthz/README.md
  • file-server/README.md
  • geoip-maxmind/README.md
  • geoip/README.md
  • gorm-postgres/README.md
  • gorm/README.md
  • graceful-shutdown/README.md
  • graphql/README.md
  • https-pkcs12-tls/README.md
  • i18n/README.md
  • jwt/README.md
  • k8s/README.md
  • minio/README.md
  • optional-parameter/README.md
  • parsley/README.md
  • postgresql/README.md
  • rabbitmq/README.md
  • react-router/README.md
  • rss-feed/README.md
  • sqlboiler/README.md
  • stream-request-body/README.md
🧰 Additional context used
🪛 Shellcheck (0.10.0)
.github/scripts/sync_local.sh

[warning] 21-21: For loops over find output are fragile. Use find -exec or a while read loop.

(SC2044)


[warning] 23-23: Quote this to prevent word splitting.

(SC2046)

🪛 LanguageTool
aws-sam-container/README.md

[typographical] ~40-~40: It appears that a comma is missing.
Context: ...ndencies & building the target In this example we use the built-in sam build to buil...

(DURING_THAT_TIME_COMMA)

aws-sam/README.md

[typographical] ~31-~31: It appears that a comma is missing.
Context: ...ndencies & building the target In this example we use the built-in sam build to auto...

(DURING_THAT_TIME_COMMA)

bootstrap/README.md

[uncategorized] ~39-~39: Possible missing comma found.
Context: ...tp://localhost:4000/if the port is in use you may modify it in the.env` you jus...

(AI_HYDRA_LEO_MISSING_COMMA)

csrf-with-session/README.md

[typographical] ~117-~117: It appears that a comma is missing.
Context: ...when using the CSRF middleware. In this example we set a session variable loggedIn to...

(DURING_THAT_TIME_COMMA)

entgo-sveltekit/README.md

[grammar] ~6-~6: It appears that a hyphen is missing in the noun “To-do” (= task) or did you mean the verb “to do”?
Context: ...ekit, tailwindcss, sqlite, rest] --- # Todo Application [![Github](https://img.shi...

(TO_DO_HYPHEN)

firebase-auth/README.md

[grammar] ~10-~10: The verb form ‘use’ does not appear to fit in this context.
Context: ...ecipes/tree/master/firebase-auth) This example use [gofiber-firebaseauth middleware](https...

(SINGULAR_NOUN_VERB_AGREEMENT)


[grammar] ~15-~15: The plural determiner ‘these’ does not agree with the singular noun ‘config’.
Context: ...le contain credential). You can get all these config from Firebase Console. ``` SERVICE_ACC...

(THIS_NNS)


[uncategorized] ~15-~15: You might be missing the article “the” here.
Context: ...ial). You can get all these config from Firebase Console. ``` SERVICE_ACCOUNT_JSON = "p...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)

hexagonal/README.md

[style] ~89-~89: ‘by means of’ might be wordy. Consider a shorter alternative.
Context: ...connected to their software environment by means of ports and adapters. This architecture a...

(EN_WORDINESS_PREMIUM_BY_MEANS_OF)


[grammar] ~94-~94: This phrase is duplicated. You should probably use “Hexagonal Architecture” only once.
Context: ...an refer to the following resources: - Hexagonal Architecture - [Hexagonal Architecture in Golang](https://medium.com/@matryer/...

(PHRASE_REPETITION)

mongodb/README.md

[duplication] ~18-~18: Possible typo: you repeated a word
Context: ...s://github.com/gofiber/fiber) package - MongoDB - [MongoDB Go Driver](https://github.com/mongodb/m...

(ENGLISH_WORD_REPEAT_RULE)


[grammar] ~89-~89: This phrase is duplicated. You should probably use “Documentation MongoDB” only once.
Context: ...:3000")) } ``` ## References - Fiber Documentation - MongoDB Documentation - [MongoDB Go Driver Documentation](https://pkg.go...

(PHRASE_REPETITION)

neo4j/README.md

[duplication] ~18-~18: Possible typo: you repeated a word
Context: ...s://github.com/gofiber/fiber) package - Neo4j - [Neo4j Go Driver](https://github.com/neo4j/neo...

(ENGLISH_WORD_REPEAT_RULE)

sessions-sqlite3/README.md

[style] ~10-~10: This phrase might be redundant. Consider either removing or replacing the adjective ‘additional’.
Context: ...nitialization, we create it manually to add an additional "u" column. This custom column serves sev...

(ADD_AN_ADDITIONAL)

svelte-netlify/README.md

[uncategorized] ~47-~47: This verb does not appear to agree with the subject. Consider using a different form.
Context: ...rects #### Important Netlify functions allows you to have up to 125,000 requests a mo...

(AI_EN_LECTOR_REPLACEMENT_VERB_AGREEMENT)

todo-app-with-auth-gorm/README.md

[grammar] ~6-~6: It appears that a hyphen is missing in the noun “To-do” (= task) or did you mean the verb “to do”?
Context: ...[todo app, gorm, authentication] --- # Todo App with Auth using GORM [![Github](ht...

(TO_DO_HYPHEN)


[grammar] ~10-~10: It appears that a hyphen is missing in the noun “To-do” (= task) or did you mean the verb “to do”?
Context: ...auth-gorm) This project demonstrates a Todo application with authentication using G...

(TO_DO_HYPHEN)

🪛 Markdownlint (0.35.0)
bootstrap/README.md

29-29: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)


36-36: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)

firebase-auth/README.md

17-17: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)


22-22: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)

firebase-functions/README.md

420-420: null
Bare URL used

(MD034, no-bare-urls)

gcloud-firebase/README.md

15-15: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)

gcloud/README.md

15-15: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)

grpc/README.md

6-6: Punctuation: '.'
Trailing punctuation in heading

(MD026, no-trailing-punctuation)

heroku/README.md

44-44: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)

memgraph/README.md

60-60: null
Bare URL used

(MD034, no-bare-urls)

socketio/README.md

42-42: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)

svelte-netlify/README.md

12-12: Expected: h2; Actual: h3
Heading levels should only increment by one level at a time

(MD001, heading-increment)


12-12: null
Bare URL used

(MD034, no-bare-urls)

tableflip/README.md

37-37: Expected: 0; Actual: 2
Unordered list indentation

(MD007, ul-indent)


38-38: Expected: 0; Actual: 2
Unordered list indentation

(MD007, ul-indent)

🔇 Additional comments (65)
.github/scripts/sync_local.sh (3)

4-13: LGTM: Robust argument handling and validation

The implementation includes proper argument handling and validation for REPO_DIR.


15-16: LGTM: Robust root directory determination

The implementation uses BASH_SOURCE correctly for reliable path resolution.


18-19: ⚠️ Potential issue

Add safety checks for destructive operations

The current rm -rf operation could be dangerous if variables are undefined or contain unexpected values.

-# remove all files in the docs directory
-rm -rf $ROOT/../fiberDocs/docs/${REPO_DIR}/*
+# remove all files in the docs directory
+target_dir="${ROOT}/../fiberDocs/docs/${REPO_DIR}"
+if [[ -n "${ROOT}" && -n "${REPO_DIR}" && -d "${target_dir}" ]]; then
+    rm -rf "${target_dir}"/*
+else
+    echo "Error: Target directory not found or variables undefined" >&2
+    exit 1
+fi

Likely invalid or redundant comment.

firebase-auth/README.md (1)

1-8: LGTM! Well-structured metadata and navigation.

The frontmatter and badges are properly configured for Docusaurus integration.

ent-mysql/README.md (3)

1-4: LGTM! Well-structured front matter

The addition of YAML front matter with title and relevant keywords aligns well with documentation standards and the PR's Docusaurus preparation objectives.


Line range hint 12-31: LGTM! Clear and well-structured instructions

The section header level adjustment improves document hierarchy, and the instructions are clear with properly formatted code examples.


6-8: Verify completeness of the documentation

The badges and title look good, but there appears to be a gap in the line numbers that might indicate missing content.

✅ Verification successful

Documentation is complete and well-structured

The gap in line numbers was due to the frontmatter section at the top of the file. The documentation is complete with:

  • Frontmatter metadata
  • Title and badges
  • Introduction text
  • Setup instructions
  • API endpoints table

No content is missing between sections, and the structure flows logically.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check if there's any content between the badges and the next section
# that might have been inadvertently removed

# Search for the original content in git history
git log -S "A sample program how to connect ent ORM" --patch -- ent-mysql/README.md

# Check if there are any other README files with similar structure
fd -e md -x grep -l "A sample program how to connect" {}

Length of output: 82


Script:

#!/bin/bash
# Let's check the current content of the README.md to see the full structure
cat ent-mysql/README.md

Length of output: 1251

docker-nginx-loadbalancer/README.md (1)

Line range hint 1-31: Verify README structure consistency across examples.

Let's ensure this README follows the standardized structure mentioned in the PR objectives.

✅ Verification successful

README structure follows recommended format and sets a good example

The verification shows that this README.md follows the recommended structure with all key sections present:

  • ✓ Has front matter
  • ✓ Has title
  • ✓ Has features section
  • ✓ Has getting started section

In fact, this README can serve as a template since it's one of the few examples that implements all the recommended sections consistently, while most other examples are missing features and getting started sections.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check for consistency in README structure across examples

# Find all README.md files in example directories
echo "Checking README structure consistency..."
fd README.md | while read -r file; do
  echo "=== $file ==="
  # Check for required sections
  echo "Checking front matter..."
  head -n 5 "$file" | grep -q "^---$" && echo "✓ Has front matter" || echo "✗ Missing front matter"
  
  echo "Checking main sections..."
  grep -q "^# " "$file" && echo "✓ Has title" || echo "✗ Missing title"
  grep -q "^## Features" "$file" && echo "✓ Has features section" || echo "✗ Missing features"
  grep -q "^## Getting Started" "$file" && echo "✓ Has getting started section" || echo "✗ Missing getting started"
done

Length of output: 47870

bootstrap/README.md (1)

1-4: LGTM! Well-structured front matter

The YAML front matter contains appropriate metadata with relevant keywords that match the content.

socketio/README.md (3)

1-4: LGTM! Metadata block follows Docusaurus format

The frontmatter metadata block is well-structured and contains relevant keywords for the Socket.IO chat example.


19-23: Directory path needs correction

The setup instructions still reference the incorrect directory name socketio-chat.


48-54: LGTM! Clear message format documentation

The JSON message format example is well-structured and clearly documents the expected payload format.

hello-world/README.md (3)

1-4: LGTM! Well-structured metadata.

The metadata section follows the correct format and includes relevant keywords for documentation organization.


1-67: Well-structured documentation that aligns with Docusaurus requirements.

The README provides a comprehensive guide for the Hello World example, following a clear structure with all necessary sections. The suggested improvements above would further enhance its usefulness, but the current version is already well-organized and informative.


8-8: Verify the default branch name in repository URLs.

The badge URLs reference the master branch. Please verify if this is the correct default branch name for the repository.

✅ Verification successful

Branch reference in badges is correct

The repository's default branch is indeed master, matching the branch referenced in the badge URLs. No changes are needed.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check the default branch name
git symbolic-ref refs/remotes/origin/HEAD | sed 's@^refs/remotes/origin/@@'

Length of output: 84

todo-app-with-auth-gorm/README.md (1)

1-4: LGTM! Well-structured front matter for Docusaurus.

The YAML front matter is properly formatted with relevant title and keywords, which will enhance documentation discoverability.

memgraph/README.md (3)

1-4: LGTM! Front matter added successfully.

The front matter section has been properly structured with relevant title and keywords, aligning with the Docusaurus preparation objectives.


6-8: LGTM! Clear title and well-structured badges.

The title is descriptive and the badges provide useful quick links with consistent styling.


38-41: LGTM! Clear and well-structured run instructions.

The command is properly formatted and followed by a clear explanation of what it does.

grpc/README.md (3)

1-4: LGTM! Well-structured metadata.

The YAML frontmatter contains appropriate metadata with relevant keywords.


60-64: LGTM! Good additional context.

The overview and documentation link provide valuable information for users new to gRPC.


14-23: Verify Go version requirement and clarify repository paths.

Two suggestions for improvement:

  1. The Go version requirement should be verified against the actual code dependencies.
  2. Consider using absolute paths in the setup instructions for clarity.
server-timing/README.md (1)

1-73: Documentation structure aligns with Docusaurus requirements.

The README follows a clear, consistent structure with proper metadata, badges, and sections. This aligns well with the PR objective of standardizing documentation for Docusaurus integration.

tableflip/README.md (1)

8-8: Verify badge consistency across examples.

The badges look good, but let's ensure consistent styling across all example READMEs.

✅ Verification successful

Badge styling is consistent across all examples

After checking all README files in the repository, I can confirm that all examples consistently use the same badge styling with:

  • Color: 2ea44f
  • Style: for-the-badge
  • Same badge types: Github and StackBlitz
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check badge consistency across README files
# Look for variations in badge colors and styles

# Search for badge definitions in all README files
fd README.md --exec rg -l "img\.shields\.io.*color=" {} | while read -r file; do
  echo "=== $file ==="
  rg "img\.shields\.io.*color=" "$file"
done

Length of output: 40431

svelte-netlify/README.md (1)

1-4: LGTM! Front matter is well-structured.

The front matter includes appropriate metadata with relevant keywords for documentation indexing.

sessions-sqlite3/README.md (5)

1-8: LGTM! Well-structured metadata and badges.

The frontmatter and badges provide clear identification and easy access to resources.


20-21: Previous comment about SQLite3 prerequisites remains valid.

The suggestion to add SQLite3 as a prerequisite with installation instructions is still applicable.


36-44: Previous comment about enhancing SQLite3 setup instructions remains valid.

The suggestion to add more context about database creation and command execution is still applicable.


48-53: Previous comment about adding testing steps remains valid.

The suggestion to include instructions for testing the session functionality and expected behavior is still applicable.


57-57: Previous comment about expanding the custom column explanation remains valid.

The suggestion to provide more detailed explanation about the purpose and benefits of the "u" column is still applicable.

multiple-ports/README.md (3)

32-37: Previous comment about detailed running instructions is still applicable


43-75: Previous comment about code improvements is still applicable


54-58: ⚠️ Potential issue

Warning: Potential race conditions in route handler

The current implementation uses a single Fiber app instance for all ports. This could lead to race conditions in the route handler if it maintains any state or performs mutations.

Let's verify if there are any stateful operations in the handlers:

oauth2-google/README.md (5)

1-4: LGTM! Well-structured metadata section.

The metadata section follows documentation best practices and includes relevant keywords for discoverability.


14-15: Skip comment due to existing review

A previous review already addresses the Go version mismatch issue.


33-37: Skip comment due to existing review

A previous review already suggests enhancing the environment variables documentation.


50-53: Skip comment due to existing review

A previous review already suggests enhancing the API documentation with response formats and error scenarios.


8-10: Verify the StackBlitz link functionality

While the badges and introduction look good, let's ensure the StackBlitz link works correctly with this specific example.

gcloud/README.md (2)

1-4: LGTM! Well-structured metadata block.

The metadata block with title and keywords is properly formatted and will help with documentation organization and searchability.


8-8: LGTM! Enhanced accessibility with badges.

The addition of Github and StackBlitz badges improves accessibility and provides quick access to different environments.

mysql/README.md (1)

1-89: Documentation structure aligns well with Docusaurus requirements

The overall structure and formatting of this README follows the Docusaurus conventions and maintains consistency with the documentation standardization objectives outlined in the PR.

404-handler/README.md (2)

8-8: LGTM! Well-structured badges section.

The badges provide clear access to both the GitHub repository and StackBlitz environment, maintaining consistent styling.


Line range hint 1-71: Well-structured documentation that aligns with PR objectives.

The README follows a clear structure and includes all necessary components for Docusaurus integration. The standardized format will help maintain consistency across examples.

🧰 Tools
🪛 LanguageTool

[grammar] ~10-~10: Possible agreement error. The noun ‘handler’ seems to be countable.
Context: ...how to implement a custom 404 Not Found handler using the Fiber w...

(CD_NN)

sse/README.md (5)

1-8: LGTM! Well-structured frontmatter and badges.

The added frontmatter with title and keywords aligns well with Docusaurus requirements, and the badges provide valuable quick links to the code and live demo.


18-19: Skip: Existing comment about Go version update is still valid.


21-41: LGTM! Clear and comprehensive setup instructions.

The setup and running instructions are well-structured with proper code blocks and clear steps.


45-46: Skip: Existing comment about enhancing endpoint documentation is still valid.


63-69: LGTM! Comprehensive additional information.

The section provides valuable context about SSE vs WebSockets and includes relevant external resources.

neo4j/README.md (1)

34-34: Previous review comment about database configuration is still applicable.

The suggestion to use environment variables and provide configuration examples remains valid.

gcloud-firebase/README.md (1)

1-8: LGTM! Well-structured metadata and badges.

The addition of frontmatter metadata and repository badges improves documentation discoverability and provides quick access to resources.

entgo-sveltekit/README.md (2)

1-4: LGTM! Well-structured metadata section.

The YAML frontmatter is correctly formatted and includes relevant keywords for documentation.


Line range hint 1-73: Verify consistency with other example READMEs.

The structure aligns well with the PR's documentation standardization goals. Let's verify consistency across other examples.

🧰 Tools
🪛 LanguageTool

[grammar] ~6-~6: It appears that a hyphen is missing in the noun “To-do” (= task) or did you mean the verb “to do”?
Context: ...ekit, tailwindcss, sqlite, rest] --- # Todo Application [![Github](https://img.shi...

(TO_DO_HYPHEN)


[grammar] ~12-~12: It appears that a hyphen is missing in the noun “To-do” (= task) or did you mean the verb “to do”?
Context: ...ee52-724a-4cf4-8352-9cf6f5b007ef) This Todo application is a full-stack project bui...

(TO_DO_HYPHEN)

air/README.md (2)

1-4: LGTM! Well-structured front matter.

The front matter is properly formatted and includes relevant keywords that will improve discoverability.


8-8: Verify the badge URLs.

The badges are well-formatted, but let's verify that the URLs are correct and accessible.

✅ Verification successful

Badge URLs are correctly configured and accessible

Both the GitHub repository path (gofiber/recipes/tree/master/air) and the StackBlitz URL are valid and accessible:

  • GitHub API confirms the existence of the air directory with its contents
  • StackBlitz URL returns a 200 status code, indicating it's properly configured
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify that the GitHub and StackBlitz URLs are accessible

# Check if the GitHub repository path exists
gh api repos/gofiber/recipes/contents/air

# Check if the StackBlitz URL is accessible (should return 200)
curl -s -o /dev/null -w "%{http_code}" "https://stackblitz.com/github/gofiber/recipes/tree/master/air"

Length of output: 4685

vercel/README.md (2)

1-4: LGTM! Metadata follows Docusaurus standards.

The frontmatter includes appropriate metadata with relevant keywords for the Vercel deployment example.


Line range hint 1-124: Well-structured documentation that aligns with standardization goals.

The README follows a clear and comprehensive structure with all necessary sections for Docusaurus integration. It provides a good template for other examples to follow.

csrf-with-session/README.md (1)

1-4: LGTM! Well-structured metadata.

The frontmatter includes relevant keywords that will improve discoverability of this security-focused example.

sqlc/README.md (1)

1-8: LGTM! Well-structured metadata and badges.

The metadata section is well-organized with appropriate frontmatter, relevant keywords, and useful repository badges.

overview.go (2)

11-15: 🛠️ Refactor suggestion

Consider improving regex patterns for better frontmatter parsing

The current regex patterns might miss some edge cases in frontmatter parsing. Consider using more robust patterns that handle whitespace better.


20-20: ⚠️ Potential issue

Add error handling for os.Getwd()

The error from os.Getwd() is being ignored, which could lead to silent failures.

aws-sam-container/README.md (1)

1-4: LGTM! Front matter properly configured for Docusaurus.

The added front matter with title and relevant keywords aligns well with the documentation standardization objectives.

aws-sam/README.md (1)

1-4: LGTM: Front matter follows Docusaurus conventions

The added front matter with title and keywords is well-structured and appropriate for Docusaurus integration.

clean-architecture/README.md (1)

1-8: LGTM! Well-structured frontmatter and badges.

The frontmatter and badges are properly formatted and provide relevant metadata and quick access links.

firebase-functions/README.md (2)

1-4: LGTM! Front matter provides good metadata.

The added front matter with title and relevant keywords will improve documentation discoverability.


7-7: LGTM! Badges enhance documentation accessibility.

The added badges provide convenient access to both the source code and interactive environment.

✅ Verification successful

Links in badges are valid and accessible

The verification confirms that:

  • The GitHub repository gofiber/recipes exists and is accessible
  • The firebase-functions directory exists in the repository with all necessary files
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify that the badge links are accessible
# Test: Check if the GitHub repository path exists
gh repo view gofiber/recipes

# Test: Check if the directory exists in the repository
gh api repos/gofiber/recipes/contents/firebase-functions

Length of output: 11128

Comment on lines +21 to +25
for f in $(find -E . -type f -iregex '.*\.(md|png|jpe?g|gif|bmp|svg|webp)$' -not -path "./(fiberDocs)/*" -not -path "*/vendor/*" -not -path "*/.github/*" -not -path "*/.*"); do
echo "Copying $f"
mkdir -p $ROOT/../fiberDocs/docs/${REPO_DIR}/$(dirname $f)
cp "${f}" $ROOT/../fiberDocs/docs/${REPO_DIR}/$f
done
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

Improve file handling safety and portability

The current implementation has several issues with special characters in filenames and portability. Additionally, Shellcheck warns about fragile find usage.

-for f in $(find -E . -type f -iregex '.*\.(md|png|jpe?g|gif|bmp|svg|webp)$' -not -path "./(fiberDocs)/*" -not -path "*/vendor/*" -not -path "*/.github/*" -not -path "*/.*"); do
-  echo "Copying $f"
-    mkdir -p $ROOT/../fiberDocs/docs/${REPO_DIR}/$(dirname $f)
-    cp "${f}" $ROOT/../fiberDocs/docs/${REPO_DIR}/$f
-done
+# Use portable find syntax and handle special characters properly
+find . -type f \( \
+    -iname "*.md" -o \
+    -iname "*.png" -o \
+    -iname "*.jpg" -o \
+    -iname "*.jpeg" -o \
+    -iname "*.gif" -o \
+    -iname "*.bmp" -o \
+    -iname "*.svg" -o \
+    -iname "*.webp" \
+  \) \
+  -not -path "./fiberDocs/*" \
+  -not -path "*/vendor/*" \
+  -not -path "*/.github/*" \
+  -not -path "*/.*" \
+  -print0 | while IFS= read -r -d '' file; do
+    echo "Copying: ${file}"
+    target_dir="${ROOT}/../fiberDocs/docs/${REPO_DIR}/$(dirname "${file}")"
+    if ! mkdir -p "${target_dir}"; then
+        echo "Error: Failed to create directory: ${target_dir}" >&2
+        exit 1
+    fi
+    if ! cp "${file}" "${ROOT}/../fiberDocs/docs/${REPO_DIR}/${file}"; then
+        echo "Error: Failed to copy: ${file}" >&2
+        exit 1
+    fi
+done

This change:

  1. Uses portable find syntax instead of -E
  2. Properly handles filenames with spaces and special characters
  3. Adds error handling for mkdir and cp operations
  4. Properly quotes all variables
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
for f in $(find -E . -type f -iregex '.*\.(md|png|jpe?g|gif|bmp|svg|webp)$' -not -path "./(fiberDocs)/*" -not -path "*/vendor/*" -not -path "*/.github/*" -not -path "*/.*"); do
echo "Copying $f"
mkdir -p $ROOT/../fiberDocs/docs/${REPO_DIR}/$(dirname $f)
cp "${f}" $ROOT/../fiberDocs/docs/${REPO_DIR}/$f
done
# Use portable find syntax and handle special characters properly
find . -type f \( \
-iname "*.md" -o \
-iname "*.png" -o \
-iname "*.jpg" -o \
-iname "*.jpeg" -o \
-iname "*.gif" -o \
-iname "*.bmp" -o \
-iname "*.svg" -o \
-iname "*.webp" \
\) \
-not -path "./fiberDocs/*" \
-not -path "*/vendor/*" \
-not -path "*/.github/*" \
-not -path "*/.*" \
-print0 | while IFS= read -r -d '' file; do
echo "Copying: ${file}"
target_dir="${ROOT}/../fiberDocs/docs/${REPO_DIR}/$(dirname "${file}")"
if ! mkdir -p "${target_dir}"; then
echo "Error: Failed to create directory: ${target_dir}" >&2
exit 1
fi
if ! cp "${file}" "${ROOT}/../fiberDocs/docs/${REPO_DIR}/${file}"; then
echo "Error: Failed to copy: ${file}" >&2
exit 1
fi
done
🧰 Tools
🪛 Shellcheck (0.10.0)

[warning] 21-21: For loops over find output are fragile. Use find -exec or a while read loop.

(SC2044)


[warning] 23-23: Quote this to prevent word splitting.

(SC2046)

Comment on lines +6 to +8
# Bootstrap

[![Github](https://img.shields.io/static/v1?label=&message=Github&color=2ea44f&style=for-the-badge&logo=github)](https://github.com/gofiber/recipes/tree/master/bootstrap) [![StackBlitz](https://img.shields.io/static/v1?label=&message=StackBlitz&color=2ea44f&style=for-the-badge&logo=StackBlitz)](https://stackblitz.com/github/gofiber/recipes/tree/master/bootstrap)
Copy link
Contributor

Choose a reason for hiding this comment

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

💡 Codebase verification

Links in badges need to be updated

The repository links in the badges are incorrect. The directory is actually named fiber-bootstrap in the repository, not bootstrap. The current links point to:

These should be updated to:

🔗 Analysis chain

Verify the repository links

The badges and links look good, but let's ensure they point to the correct locations.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify that the GitHub repository link exists
gh repo view gofiber/recipes

# Check if the bootstrap directory exists in the repository
gh api repos/gofiber/recipes/contents/bootstrap

Length of output: 3165


Script:

#!/bin/bash
# Let's check if the correct directory name is "fiber-bootstrap" instead of "bootstrap"
gh api repos/gofiber/recipes/contents/fiber-bootstrap

# Also search for any references to bootstrap in the repository
rg -i "bootstrap" -g "!{node_modules,dist,build}/*"

Length of output: 9410

Comment on lines +17 to +36
## API Documentation

> API endpoint: `http://localhost:3000/api/v1/`

> API endpoint: http://localhost:3000/api/v1/
### API Payload

#### API Payload
- `url` - Original URL
- `short` - Custom short URL (Optional)
- `expiry` - Time to expire: int (hours)

- "url" - Original URL
- "short" - Custom short URL(Optional)
- "expiry" - Time to expire: int(hours)
### API Response

#### API Response
- `url` - Original URL
- `short` - Custom short URL
- `expiry` - Time to expire: int (hours)
- `rate_limit` - Number of API calls remaining: int
- `rate_limit_reset` - Time to rate limit reset: int (minutes)

- "url" - Original URL
- "short" - Custom short URL
- "expiry" - Time to expire: int(hours)
- "rate_limit" - # of API calls remaining: int
- "rate_limit_reset" - Time to rate limit reset: int(minutes)
> API is rate limited to 10 calls every 30 minutes.
> These values can be changed in the `.env` file. Have fun.
Copy link
Contributor

Choose a reason for hiding this comment

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

🛠️ Refactor suggestion

Enhance API documentation with examples and error responses.

The API documentation is clear but could be more comprehensive:

 ## API Documentation

 > API endpoint: `http://localhost:3000/api/v1/`

 ### API Payload

 - `url` - Original URL
 - `short` - Custom short URL (Optional)
 - `expiry` - Time to expire: int (hours)

+### Example Request
+```json
+{
+  "url": "https://github.com/gofiber/recipes",
+  "short": "fiber-recipes",
+  "expiry": 24
+}
+```
+
 ### API Response

 - `url` - Original URL
 - `short` - Custom short URL
 - `expiry` - Time to expire: int (hours)
 - `rate_limit` - Number of API calls remaining: int
 - `rate_limit_reset` - Time to rate limit reset: int (minutes)

+### Example Success Response
+```json
+{
+  "url": "https://github.com/gofiber/recipes",
+  "short": "fiber-recipes",
+  "expiry": 24,
+  "rate_limit": 9,
+  "rate_limit_reset": 30
+}
+```
+
+### Error Responses
+- `400 Bad Request`: Invalid payload
+- `429 Too Many Requests`: Rate limit exceeded
+- `500 Internal Server Error`: Server error
+
 > API is rate limited to 10 calls every 30 minutes.
 > These values can be changed in the `.env` file. Have fun.

Comment on lines +38 to +46
## Setup

#### Demo
1. Start the containers:
```sh
docker-compose up -d
```

1. Start the containers
```
docker-compose up -d
```
2. Test the API
![test.gif](test.gif)
2. Test the API:
![test.gif](test.gif)
Copy link
Contributor

Choose a reason for hiding this comment

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

🛠️ Refactor suggestion

Expand setup instructions with prerequisites and configuration steps.

The setup section should be more comprehensive:

 ## Setup

+### Prerequisites
+- Docker and Docker Compose
+- Go 1.16 or higher (for development)
+
+### Configuration
+1. Copy the example environment file:
+    ```sh
+    cp .env.example .env
+    ```
+
+2. Adjust the environment variables in `.env` as needed:
+    ```env
+    REDIS_URL=redis://redis:6379
+    RATE_LIMIT=10
+    RATE_LIMIT_WINDOW=30
+    ```
+
+### Running the Application
 1. Start the containers:
     ```sh
     docker-compose up -d
     ```

 2. Test the API:
    ![test.gif](test.gif)
+
+### Development
+1. Install dependencies:
+    ```sh
+    go mod download
+    ```
+
+2. Run the application locally:
+    ```sh
+    go run main.go
+    ```

Comment on lines +35 to +52
### Building Assets

1. Build the assets:
```sh
npm run build
```

# Build assets
npm run build
2. Watch assets for changes:
```sh
npm run dev
```

# Watch assets for changes
npm run dev
```
### Running the Application

Then run the fiber app
```bash
go run main.go
```
1. Start the Fiber application:
```sh
go run main.go
```
Copy link
Contributor

Choose a reason for hiding this comment

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

🛠️ Refactor suggestion

Add details about expected behavior and verification.

The usage instructions are well-structured but could benefit from additional context.

Consider adding:

 ### Running the Application

 1. Start the Fiber application:
     ```sh
     go run main.go
     ```
+
+ The application will start on `http://localhost:3000` by default.
+
+ You should see:
+ - The server starting message in the console
+ - A webpage with Tailwind CSS styles when you visit the URL
+ - Hot reloading of assets when running in dev mode

go get
```

3. Set up your MongoDB database and update the connection string in the code.
Copy link
Contributor

Choose a reason for hiding this comment

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

🛠️ Refactor suggestion

Enhance MongoDB connection string setup instructions.

The current instruction about updating the connection string lacks specific details that would help users get started quickly.

-3. Set up your MongoDB database and update the connection string in the code.
+3. Set up your MongoDB connection:
+   - For local MongoDB: Use `mongodb://localhost:27017`
+   - For MongoDB Atlas: Use the connection string from your Atlas dashboard
+   - Update the connection string in `main.go` where indicated
+   
+   Example connection string format:
+   ```
+   mongodb://[username:password@]host[:port][/database][?options]
+   ```
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
3. Set up your MongoDB database and update the connection string in the code.
3. Set up your MongoDB connection:
- For local MongoDB: Use `mongodb://localhost:27017`
- For MongoDB Atlas: Use the connection string from your Atlas dashboard
- Update the connection string in `main.go` where indicated
Example connection string format:
```
mongodb://[username:password@]host[:port][/database][?options]
```

Comment on lines +47 to +85
```go
package main

import (
"context"
"log"
"time"

"github.com/gofiber/fiber/v2"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
)

func main() {
// MongoDB connection
client, err := mongo.NewClient(options.Client().ApplyURI("mongodb://localhost:27017"))
if err != nil {
log.Fatal(err)
}
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()
err = client.Connect(ctx)
if err != nil {
log.Fatal(err)
}
defer client.Disconnect(ctx)

// Fiber instance
app := fiber.New()

// Routes
app.Get("/", func(c *fiber.Ctx) error {
return c.SendString("Hello, MongoDB!")
})

// Start server
log.Fatal(app.Listen(":3000"))
}
```
Copy link
Contributor

Choose a reason for hiding this comment

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

🛠️ Refactor suggestion

Enhance example code with best practices and actual MongoDB operations.

While the current example shows basic connection setup, it could be more helpful with real-world usage patterns.

Consider these improvements:

 package main

 import (
     "context"
     "log"
     "time"
+    "os"

     "github.com/gofiber/fiber/v2"
     "go.mongodb.org/mongo-driver/mongo"
     "go.mongodb.org/mongo-driver/mongo/options"
+    "go.mongodb.org/mongo-driver/mongo/readpref"
 )

+type User struct {
+    Name  string `json:"name" bson:"name"`
+    Email string `json:"email" bson:"email"`
+}

 func main() {
     // MongoDB connection
-    client, err := mongo.NewClient(options.Client().ApplyURI("mongodb://localhost:27017"))
+    mongoURI := os.Getenv("MONGODB_URI")
+    if mongoURI == "" {
+        mongoURI = "mongodb://localhost:27017"
+    }
+    
+    client, err := mongo.NewClient(options.Client().ApplyURI(mongoURI))
     if err != nil {
         log.Fatal(err)
     }
+    
     ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
     defer cancel()
+    
     err = client.Connect(ctx)
     if err != nil {
         log.Fatal(err)
     }
     defer client.Disconnect(ctx)

+    // Ping the database
+    if err := client.Ping(ctx, readpref.Primary()); err != nil {
+        log.Fatal(err)
+    }
+    
+    // Get collection
+    collection := client.Database("test").Collection("users")

     // Fiber instance
     app := fiber.New()

     // Routes
     app.Get("/", func(c *fiber.Ctx) error {
-        return c.SendString("Hello, MongoDB!")
+        return c.JSON(fiber.Map{"message": "Hello, MongoDB!"})
+    })
+    
+    // Example route with MongoDB operation
+    app.Post("/users", func(c *fiber.Ctx) error {
+        user := new(User)
+        if err := c.BodyParser(user); err != nil {
+            return err
+        }
+        
+        result, err := collection.InsertOne(ctx, user)
+        if err != nil {
+            return err
+        }
+        
+        return c.JSON(result)
     })

     // Start server
     log.Fatal(app.Listen(":3000"))
 }
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
```go
package main
import (
"context"
"log"
"time"
"github.com/gofiber/fiber/v2"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
)
func main() {
// MongoDB connection
client, err := mongo.NewClient(options.Client().ApplyURI("mongodb://localhost:27017"))
if err != nil {
log.Fatal(err)
}
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()
err = client.Connect(ctx)
if err != nil {
log.Fatal(err)
}
defer client.Disconnect(ctx)
// Fiber instance
app := fiber.New()
// Routes
app.Get("/", func(c *fiber.Ctx) error {
return c.SendString("Hello, MongoDB!")
})
// Start server
log.Fatal(app.Listen(":3000"))
}
```
package main
import (
"context"
"log"
"time"
"os"
"github.com/gofiber/fiber/v2"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
"go.mongodb.org/mongo-driver/mongo/readpref"
)
type User struct {
Name string `json:"name" bson:"name"`
Email string `json:"email" bson:"email"`
}
func main() {
// MongoDB connection
mongoURI := os.Getenv("MONGODB_URI")
if mongoURI == "" {
mongoURI = "mongodb://localhost:27017"
}
client, err := mongo.NewClient(options.Client().ApplyURI(mongoURI))
if err != nil {
log.Fatal(err)
}
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()
err = client.Connect(ctx)
if err != nil {
log.Fatal(err)
}
defer client.Disconnect(ctx)
// Ping the database
if err := client.Ping(ctx, readpref.Primary()); err != nil {
log.Fatal(err)
}
// Get collection
collection := client.Database("test").Collection("users")
// Fiber instance
app := fiber.New()
// Routes
app.Get("/", func(c *fiber.Ctx) error {
return c.JSON(fiber.Map{"message": "Hello, MongoDB!"})
})
// Example route with MongoDB operation
app.Post("/users", func(c *fiber.Ctx) error {
user := new(User)
if err := c.BodyParser(user); err != nil {
return err
}
result, err := collection.InsertOne(ctx, user)
if err != nil {
return err
}
return c.JSON(result)
})
// Start server
log.Fatal(app.Listen(":3000"))
}

"DB_Host": "localhost",
"DB_Port": "3306"
}
```
Copy link
Contributor

Choose a reason for hiding this comment

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

🛠️ Refactor suggestion

Add database schema setup instructions

The README should include the required database schema or initialization SQL scripts to help users set up the necessary tables.

     }
     ```
+
+4. Initialize the database schema:
+    ```sql
+    CREATE TABLE books (
+      id INT AUTO_INCREMENT PRIMARY KEY,
+      title VARCHAR(255) NOT NULL,
+      author VARCHAR(255) NOT NULL,
+      created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
+      updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
+    );
+    ```

Comment on lines +71 to +85
app.Get("/", func(c *fiber.Ctx) error {
session := driver.NewSession(neo4j.SessionConfig{})
defer session.Close()

result, err := session.Run("RETURN 'Hello, World!'", nil)
if err != nil {
return err
}

if result.Next() {
return c.SendString(result.Record().Values[0].(string))
}

return c.SendStatus(500)
})
Copy link
Contributor

Choose a reason for hiding this comment

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

🛠️ Refactor suggestion

Enhance session configuration and add context timeout.

The current implementation could benefit from explicit session configuration and context timeout for the database query.

 app.Get("/", func(c *fiber.Ctx) error {
-    session := driver.NewSession(neo4j.SessionConfig{})
+    session := driver.NewSession(neo4j.SessionConfig{
+        DatabaseName: "neo4j",
+        AccessMode:   neo4j.AccessModeRead,
+    })
     defer session.Close()
 
-    result, err := session.Run("RETURN 'Hello, World!'", nil)
+    ctx, cancel := context.WithTimeout(c.Context(), 5*time.Second)
+    defer cancel()
+    
+    result, err := session.Run(ctx, "RETURN 'Hello, World!'", nil)
     if err != nil {
-        return err
+        return c.Status(fiber.StatusInternalServerError).
+            JSON(fiber.Map{"error": "Database query failed"})
     }

Don't forget to add the required imports:

import (
    "context"
    "time"
)

overview.go Outdated
Comment on lines 73 to 80
re := regexp.MustCompile(`(?s)<!-- AUTO-GENERATED-CONTENT:START -->(.*?)<!-- AUTO-GENERATED-CONTENT:END -->`)
newContent := re.ReplaceAllString(string(content), fmt.Sprintf("<!-- AUTO-GENERATED-CONTENT:START -->\n%s<!-- AUTO-GENERATED-CONTENT:END -->", toc))

err = os.WriteFile(readmePath, []byte(newContent), 0644)
if err != nil {
fmt.Println("Error:", err)
return
}
Copy link
Contributor

Choose a reason for hiding this comment

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

💡 Codebase verification

⚠️ Potential issue

Add safety checks for content replacement and path handling

  1. The root path is obtained without error handling (root, _ := os.Getwd())
  2. No validation is performed to check if the AUTO-GENERATED-CONTENT markers exist before replacement
  3. The content replacement is performed without verifying the regex match success
  4. While filepath.Join is used properly for path construction, the root path should be validated

Suggested improvements:

  • Add error handling for os.Getwd()
  • Verify the presence of markers before replacement
  • Check if the regex actually matched before writing the file
  • Validate that the root path exists and has proper permissions
🔗 Analysis chain

Enhance content replacement safety

  1. The content replacement lacks safety checks for markers
  2. Consider adding path traversal protection when writing files
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check for potential path traversal vulnerabilities in file paths
rg -l "filepath\.Join|os\.WriteFile" | xargs ast-grep --pattern 'filepath.Join($path, $_)'

Length of output: 92


Script:

#!/bin/bash
# Let's check for file operations and path handling patterns
rg -n "os\.WriteFile|filepath\." -A 3

# Also check for the specific readmePath variable usage
rg -n "readmePath.*:=" -A 2

Length of output: 1624


Script:

#!/bin/bash
# Let's examine the context around the content replacement to check for safety validations
rg -n "AUTO-GENERATED-CONTENT" -B 2 -A 4

# Also check how the root variable is defined/validated
rg -n "root.*:=" -B 2 -A 2

Length of output: 1718

@ReneWerner87 ReneWerner87 merged commit 5e3c1b1 into master Nov 26, 2024
7 checks passed
@ReneWerner87 ReneWerner87 deleted the recipes_docs branch November 26, 2024 18:52
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