Skip to content

Instantly share code, notes, and snippets.

@ripplearcgit
ripplearcgit / gist:89687b7414f62a8c042b16b52e9ceb0b
Created August 31, 2025 21:09
RippleArc PR Review - Test Double
# Test Double Pattern Implementation Guide
## Overview
This document outlines the implementation of Google's Test Double Pattern in the Construculator codebase, providing guidance on when and how to use different testing approaches.
## Google's Test Double Pattern Guide
### Core Principles
@ripplearcgit
ripplearcgit / gist:89f05e4f83e087f63148bbbb1d99a178
Created August 31, 2025 14:04
RippleArc PR Review - Class Naming Convention
# Construculator Architecture Naming Convention Guide
## Overview
This guide establishes naming conventions for Construculator's Flutter architecture, based on the PRD analysis and following Clean Architecture + BLoC patterns.
## Quick Reference Table
| Component | Pattern | Purpose | When to Use | Primary Consumers | Example |
|-----------|---------|---------|-------------|-------------------|---------|
@ripplearcgit
ripplearcgit / gist:551ccf7208a1dcf3f3edd27cac002214
Created August 31, 2025 13:45
RippleArc PR Review - Digestable PR
Digestible Pull Request
At Google, the review system automatically estimates the time needed to review a Pull Request (PR) by categorizing them into size buckets: Extra Small (XS), Small (S), Medium (M), Large (L), and Extra Large (XL).
Reviewers typically request that authors break down PRs larger than Medium into multiple smaller, interconnected PRs. While these linked PRs depend on each other, each one should be able to pass tests and merge independently without breaking the main branch. All line count measurements below apply only to production code—test code doesn't count toward these limits, and you can write extensive tests for proper coverage.
Size Classifications:
XS: Under 50 lines of production code
M: 50-100 lines of production code
L: 100-200 lines of production code
XL: Over 200 lines of production code
Beyond Line Count
A well-structured PR should have a single, focused purpose rather than addressing multiple unrelated changes. This focused intent should be clearly communicated in the PR descri
sequenceDiagram
participant UI as UI Component
participant Auth as AuthService
participant Supa as SupabaseAuthService
participant Token as TokenRepository
participant API as Supabase API
UI->>Auth: signInWithEmail(email, password)
Auth->>Supa: signInWithEmail(email, password)
Supa->>API: supabaseClient.auth.signIn()
flowchart TD
UI[UI Components] --> |depends on| Auth[AuthService\n Interface]
Auth --> |uses| Token[TokenRepository]
Auth --> |implemented by| SupaAuth[SupabaseAuthService\n Implementation]
SupaAuth --> |uses| Token
SupaAuth --> |uses| Supabase[Supabase Client]