Skip to content

Conversation

@hwbrzzl
Copy link
Contributor

@hwbrzzl hwbrzzl commented Dec 31, 2025

πŸ“‘ Description

βœ… Checks

  • Added test cases for my code

Greptile Overview

Greptile Summary

This PR upgrades the Goravel example project from v1.16 to v1.17, introducing significant architectural improvements and a new fluent API for application bootstrapping.

Major Changes

  • New Fluent Bootstrap API: Replaced imperative application setup with declarative foundation.Setup() builder pattern in bootstrap/app.go
  • Simplified Application Lifecycle: main.go now simply calls app.Start() instead of manually managing HTTP, gRPC, and Queue server lifecycles with goroutines and signal handling
  • Reorganized Configuration: Service providers moved from config/app.go to bootstrap/providers.go for better separation of concerns
  • New Facade System: Added 32 new facade files under app/facades/ that use App().Make*() pattern instead of global facades
  • Telemetry Support: Added comprehensive OpenTelemetry configuration in config/telemetry.go with tracing, metrics, and propagation settings
  • gRPC Improvements:
    • Config changed from clients to servers terminology in config/grpc.go
    • Simplified gRPC example removing authentication complexity
    • Added new GrpcController for client-side testing
    • Added gRPC integration tests with concurrent requests
  • Validation Enhancements: Added PrepareForValidation callback support with context value testing
  • Test Updates: Tests now use separate Bind() calls instead of chaining, and added validation context tests
  • Dependency Updates: Updated all Goravel packages and dependencies to latest v1.17 compatible versions

Code Quality

The refactoring follows clean architecture principles with improved separation of concerns. The new builder pattern makes the application configuration more readable and maintainable. All deleted provider files had their logic properly migrated to the new bootstrap structure.

Confidence Score: 5/5

  • This PR is safe to merge - it's a well-structured framework upgrade with comprehensive test coverage
  • The upgrade follows a clear migration path with all functionality properly refactored rather than deleted. Tests are updated to match API changes and new tests added for gRPC functionality. The architectural improvements use established patterns (builder pattern) and maintain backward compatibility where needed.
  • No files require special attention - all changes follow consistent refactoring patterns

Important Files Changed

Filename Overview
go.mod Updated Goravel framework and dependencies from v1.16 to v1.17
bootstrap/app.go Refactored to use new fluent API with foundation.Setup() and builder pattern
main.go Simplified to use app.Start() instead of manual server lifecycle management
config/app.go Removed service provider registration (moved to bootstrap/providers.go)
bootstrap/providers.go New file consolidating all service provider registration
app/grpc/controllers/user_controller.go Simplified gRPC example, removed auth logic, now returns mock data
app/http/controllers/grpc_controller.go New gRPC client controller for testing client-server communication
config/grpc.go Changed clients to servers and updated configuration structure
config/telemetry.go New telemetry configuration file for OpenTelemetry integration

Sequence Diagram

sequenceDiagram
    participant Main as main.go
    participant Bootstrap as bootstrap.Boot()
    participant Setup as foundation.Setup()
    participant Config as config.Boot
    participant Providers as Service Providers
    participant App as Application
    participant Servers as HTTP/gRPC/Queue

    Main->>Bootstrap: Boot()
    Bootstrap->>Setup: foundation.Setup()
    Setup->>Setup: WithConfig(config.Boot)
    Setup->>Config: Initialize configs
    Config-->>Setup: Config loaded
    Setup->>Setup: WithProviders(Providers)
    Setup->>Providers: Register all service providers
    Providers-->>Setup: Providers registered
    Setup->>Setup: WithRouting(), WithEvents(), WithJobs()
    Setup->>Setup: WithMiddleware(), WithGrpcInterceptors()
    Setup->>Setup: WithCallback()
    Setup->>App: Create()
    App-->>Bootstrap: Application instance
    Bootstrap-->>Main: Application
    Main->>App: Start()
    App->>Servers: Start HTTP, gRPC, Queue servers
    Servers-->>App: Running
    
    Note over Main,Servers: v1.17 uses fluent builder pattern<br/>instead of manual lifecycle management
Loading

@gemini-code-assist
Copy link

Summary of Changes

Hello @hwbrzzl, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request undertakes a significant upgrade of the goravel/framework to version v1.17, necessitating a broad refactoring of the application's core structure. The primary goal is to modernize the application's bootstrapping process, centralize framework service access through a new facade pattern, and integrate advanced observability features via OpenTelemetry. These changes aim to improve maintainability, developer experience, and the overall robustness of the application by aligning it with the latest framework conventions.

Highlights

  • Framework Upgrade: The core goravel/framework dependency has been updated to a newer version (v1.17), bringing in various improvements and potentially breaking changes that necessitated significant refactoring across the application.
  • Application Bootstrapping Rework: The application's initialization process has been completely refactored in bootstrap/app.go. It now uses a new fluent API (foundation.Setup().With...().Run()) to configure components like commands, migrations, routing, events, jobs, rules, middleware, and gRPC interceptors, replacing the previous manual registration and kernel files.
  • Centralized Facades: A new app/facades directory has been introduced, providing a modular and explicit way to access framework services. Existing code that previously imported github.com/goravel/framework/facades has been updated to use these new local facades (e.g., goravel/app/facades).
  • Removal of Kernel and Service Provider Files: Several kernel.go files (e.g., for console, gRPC, HTTP, database) and individual service provider files have been removed. Their functionalities are now consolidated and managed through the new bootstrapping mechanism in bootstrap/app.go and bootstrap/providers.go.
  • OpenTelemetry Integration: A new config/telemetry.go file has been added, introducing comprehensive OpenTelemetry (OTel) configuration for traces, metrics, and logs. This includes settings for various exporters (OTLP, Zipkin, Console), samplers, and processors, enhancing the application's observability capabilities.
  • Build and Environment Configuration Updates: The .air.toml file has been updated to change temporary directory and build output paths from storage/temp to tmp. The .gitignore file has been expanded to include .env files, storage, and tmp directories, improving environment management and build artifact exclusion.
  • VSCode Launch Configuration: A new .vscode/launch.json file has been added, providing a default VSCode launch configuration for Goravel applications, which simplifies the debugging setup for developers.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with πŸ‘ and πŸ‘Ž on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution. ↩

Copy link

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

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

Code Review

This pull request introduces a major upgrade to v1.17, featuring a significant refactoring of the application bootstrapping process to a fluent foundation.Setup() API and the introduction of local facades. It also adds extensive OpenTelemetry support. The changes are extensive, removing many provider and kernel files in favor of a centralized bootstrap configuration.

My review has identified a few critical issues, including duplicate service provider registrations and disabled gRPC tracing interceptors that need to be addressed. I've also pointed out several medium-severity issues related to configuration, placeholder code, and gitignore rules that should be reviewed for a cleaner and more robust codebase.

@coderabbitai
Copy link

coderabbitai bot commented Jan 24, 2026

Important

Review skipped

Auto reviews are limited based on label configuration.

🏷️ Required labels (at least one) (1)
  • πŸš€ Review Ready

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

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

Note

Other AI code review bot(s) detected

CodeRabbit has detected other AI code review bot(s) in this pull request and will avoid duplicating their findings in the review comments. This may lead to a less comprehensive review.

✨ Finishing touches
πŸ§ͺ Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch bowen/upgrade-v1.17

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

❀️ Share

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

@hwbrzzl hwbrzzl marked this pull request as ready for review February 2, 2026 07:55
@hwbrzzl hwbrzzl requested a review from a team as a code owner February 2, 2026 07:55
@hwbrzzl hwbrzzl merged commit adffc43 into master Feb 2, 2026
5 checks passed
@hwbrzzl hwbrzzl deleted the bowen/upgrade-v1.17 branch February 2, 2026 08:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants