mirror of
https://github.com/Dvorinka/Bookra.git
synced 2026-06-04 12:33:00 +00:00
221 lines
13 KiB
Markdown
221 lines
13 KiB
Markdown
# Graph Report - /home/tdvorak/Desktop/PROG+HTML/Bookra (2026-04-30)
|
|
|
|
## Corpus Check
|
|
- 166 files · ~380,279 words
|
|
- Verdict: corpus is large enough that graph structure adds value.
|
|
|
|
## Summary
|
|
- 794 nodes · 1114 edges · 29 communities detected
|
|
- Extraction: 87% EXTRACTED · 13% INFERRED · 0% AMBIGUOUS · INFERRED: 150 edges (avg confidence: 0.8)
|
|
- Token cost: 0 input · 0 output
|
|
|
|
## Community Hubs (Navigation)
|
|
- [[_COMMUNITY_Neon Database Core|Neon Database Core]]
|
|
- [[_COMMUNITY_Paddle Billing & Dashboard|Paddle Billing & Dashboard]]
|
|
- [[_COMMUNITY_Memory Repository|Memory Repository]]
|
|
- [[_COMMUNITY_PostgreSQL Repository|PostgreSQL Repository]]
|
|
- [[_COMMUNITY_Domain Models|Domain Models]]
|
|
- [[_COMMUNITY_Server & Main Entry|Server & Main Entry]]
|
|
- [[_COMMUNITY_Admin Dashboard|Admin Dashboard]]
|
|
- [[_COMMUNITY_Test Suite|Test Suite]]
|
|
- [[_COMMUNITY_Database Records|Database Records]]
|
|
- [[_COMMUNITY_Widget Builder & Icons|Widget Builder & Icons]]
|
|
- [[_COMMUNITY_Email Templates Service|Email Templates Service]]
|
|
- [[_COMMUNITY_Notification Service|Notification Service]]
|
|
- [[_COMMUNITY_Database Connection|Database Connection]]
|
|
- [[_COMMUNITY_Email Provider|Email Provider]]
|
|
- [[_COMMUNITY_Auth & Magic Links|Auth & Magic Links]]
|
|
- [[_COMMUNITY_Business Service|Business Service]]
|
|
- [[_COMMUNITY_Shell & Auth UI|Shell & Auth UI]]
|
|
- [[_COMMUNITY_Email Localization|Email Localization]]
|
|
- [[_COMMUNITY_Customer Notifications|Customer Notifications]]
|
|
- [[_COMMUNITY_Maps & Geocoding|Maps & Geocoding]]
|
|
- [[_COMMUNITY_Brand Profile Service|Brand Profile Service]]
|
|
- [[_COMMUNITY_Google OAuth|Google OAuth]]
|
|
- [[_COMMUNITY_Map URL Parsing|Map URL Parsing]]
|
|
- [[_COMMUNITY_Location Map|Location Map]]
|
|
- [[_COMMUNITY_Tabs Component|Tabs Component]]
|
|
- [[_COMMUNITY_Legal Pages|Legal Pages]]
|
|
- [[_COMMUNITY_Auth Provider|Auth Provider]]
|
|
- [[_COMMUNITY_User Repository|User Repository]]
|
|
- [[_COMMUNITY_Public Booking|Public Booking]]
|
|
|
|
## God Nodes (most connected - your core abstractions)
|
|
1. `trimSpace()` - 47 edges
|
|
2. `PGRepository` - 46 edges
|
|
3. `MemoryRepository` - 46 edges
|
|
4. `NewService()` - 28 edges
|
|
5. `NewMemoryRepository()` - 22 edges
|
|
6. `Handler` - 20 edges
|
|
7. `Service` - 20 edges
|
|
8. `DB` - 18 edges
|
|
9. `New()` - 17 edges
|
|
10. `NewServer()` - 17 edges
|
|
|
|
## Surprising Connections (you probably didn't know these)
|
|
- `New()` --calls--> `NewGoogleProvider()` [INFERRED]
|
|
apps/auth-service/internal/handlers/handlers.go → apps/auth-service/internal/oauth/google.go
|
|
- `NewServer()` --calls--> `NewCustomerService()` [INFERRED]
|
|
apps/backend/internal/api/server.go → apps/backend/internal/bookings/customer_service.go
|
|
- `main()` --calls--> `Load()` [INFERRED]
|
|
apps/backend/cmd/api/main.go → apps/backend/internal/config/config.go
|
|
- `main()` --calls--> `getEnv()` [INFERRED]
|
|
apps/backend/cmd/api/main.go → apps/auth-service/internal/config/config.go
|
|
- `main()` --calls--> `New()` [INFERRED]
|
|
apps/backend/cmd/api/main.go → apps/auth-service/internal/handlers/handlers.go
|
|
|
|
## Communities
|
|
|
|
### Community 0 - "Neon Database Core"
|
|
Cohesion: 0.06
|
|
Nodes (42): NewNeonVerifier(), NeonVerifier, CheckoutSession, PaymentMethod, Service, checkoutAvailable(), customDataString(), customerSnapshotKey() (+34 more)
|
|
|
|
### Community 1 - "Paddle Billing & Dashboard"
|
|
Cohesion: 0.04
|
|
Nodes (38): getPaddle(), paddleConfigured(), handleCancel(), handleReschedule(), reference(), token(), changeMonth(), demoData() (+30 more)
|
|
|
|
### Community 2 - "Memory Repository"
|
|
Cohesion: 0.04
|
|
Nodes (3): MemoryRepository, defaultAvailabilityBlocks(), maxInt()
|
|
|
|
### Community 3 - "PostgreSQL Repository"
|
|
Cohesion: 0.04
|
|
Nodes (2): PGRepository, firstNonEmpty()
|
|
|
|
### Community 4 - "Domain Models"
|
|
Cohesion: 0.05
|
|
Nodes (40): AvailabilityBlockRequest, BlockedDay, BookingDefaultsRequest, BrandProfile, CancelBookingRequest, CheckoutLaunchResponse, CheckoutSessionRequest, CreateBlockedDayRequest (+32 more)
|
|
|
|
### Community 5 - "Server & Main Entry"
|
|
Cohesion: 0.06
|
|
Nodes (22): main(), runMigrations(), Server, allowedOrigins(), authorizeJobRunner(), NewServer(), TestDispatchReminderJobsAcceptsConfiguredJobRunnerKey(), TestDispatchReminderJobsRequiresJobRunnerKey() (+14 more)
|
|
|
|
### Community 6 - "Admin Dashboard"
|
|
Cohesion: 0.06
|
|
Nodes (12): NewAdminDashboard(), AdminDashboard, CheckoutRequest, Handler, detectLocale(), generateState(), oauthCookieSecure(), LoginRequest (+4 more)
|
|
|
|
### Community 7 - "Test Suite"
|
|
Cohesion: 0.13
|
|
Nodes (28): TestGenerateTokensProducesVerifiableAccessAndRefreshTokens(), TestRefreshTokensRejectsInvalidToken(), TestRefreshTokensReturnsRotatedPair(), TestCheckoutAvailableForPlanRequiresConfiguredPlan(), TestCheckoutAvailableForPlanRequiresSecret(), testConfig(), TestCreateCheckoutRequiresPaddleConfig(), TestCreateCheckoutReturnsLaunchPayload() (+20 more)
|
|
|
|
### Community 8 - "Database Records"
|
|
Cohesion: 0.06
|
|
Nodes (31): AvailabilityBlockRecord, AvailabilityRuleRecord, BillingSnapshotRecord, BlockedDayRecord, BookingRecord, BrandProfileRecord, ClassSessionRecord, CreateBlockedDayParams (+23 more)
|
|
|
|
### Community 9 - "Widget Builder & Icons"
|
|
Cohesion: 0.08
|
|
Nodes (5): generateCode(), generatedMapElementId(), generateMapCode(), json(), safeHexColor()
|
|
|
|
### Community 10 - "Email Templates Service"
|
|
Cohesion: 0.14
|
|
Nodes (15): Config, EmailTemplate, Service, bookingConfirmationCS(), BookingConfirmationEmail(), bookingConfirmationEN(), MagicLinkEmail(), magicLinkEmailCS() (+7 more)
|
|
|
|
### Community 11 - "Notification Service"
|
|
Cohesion: 0.15
|
|
Nodes (13): noopNotifier, Notifier, Service, collides(), countClassBookings(), generateAppointmentSlots(), generateClassSlots(), normalizePlanCode() (+5 more)
|
|
|
|
### Community 12 - "Database Connection"
|
|
Cohesion: 0.1
|
|
Nodes (2): DB, Stats
|
|
|
|
### Community 14 - "Email Provider"
|
|
Cohesion: 0.18
|
|
Nodes (11): DeliveryReceipt, EmailMessage, EmailProvider, noopEmailProvider, Service, localizedStartsAt(), NewService(), reminderRecipient() (+3 more)
|
|
|
|
### Community 15 - "Auth & Magic Links"
|
|
Cohesion: 0.19
|
|
Nodes (4): Claims, Service, generateRandomToken(), TokenPair
|
|
|
|
### Community 16 - "Business Service"
|
|
Cohesion: 0.12
|
|
Nodes (1): Service
|
|
|
|
### Community 17 - "Shell & Auth UI"
|
|
Cohesion: 0.14
|
|
Nodes (2): submitSignIn(), translateAuthError()
|
|
|
|
### Community 19 - "Email Localization"
|
|
Cohesion: 0.3
|
|
Nodes (11): BookingEmailData, formatLocalizedDateTime(), formatLocalizedTime(), RenderEmailMessage(), renderHTMLBody(), RenderReminderEmail(), renderSubject(), renderTextBody() (+3 more)
|
|
|
|
### Community 20 - "Customer Notifications"
|
|
Cohesion: 0.26
|
|
Nodes (4): NewCustomerService(), customerNoopNotifier, CustomerNotifier, CustomerService
|
|
|
|
### Community 21 - "Maps & Geocoding"
|
|
Cohesion: 0.36
|
|
Nodes (11): resolveMapLocation(), geocodeLocation(), mapStyleById(), parseCoordinateText(), parseGoogleMapsUrl(), parseMapUrl(), parseMapyCzUrl(), resolveLocationInput() (+3 more)
|
|
|
|
### Community 22 - "Brand Profile Service"
|
|
Cohesion: 0.33
|
|
Nodes (7): Service, firstNonEmpty(), normalizeClock(), normalizePlanCode(), toAvailabilityBlocks(), toTeamInvites(), validateAvailabilityBlocks()
|
|
|
|
### Community 24 - "Google OAuth"
|
|
Cohesion: 0.25
|
|
Nodes (3): NewGoogleProvider(), GoogleProvider, GoogleUser
|
|
|
|
### Community 26 - "Map URL Parsing"
|
|
Cohesion: 0.47
|
|
Nodes (3): parseGoogleMapsUrl(), parseMapUrl(), parseMapyCzUrl()
|
|
|
|
### Community 27 - "Location Map"
|
|
Cohesion: 0.4
|
|
Nodes (2): createMarkerIcon(), safeMarkerColor()
|
|
|
|
### Community 28 - "Tabs Component"
|
|
Cohesion: 0.47
|
|
Nodes (3): TabsContent(), TabsTrigger(), useTabs()
|
|
|
|
### Community 29 - "Legal Pages"
|
|
Cohesion: 0.7
|
|
Nodes (4): helperPose(), heroPose(), kind(), sections()
|
|
|
|
### Community 30 - "Auth Provider"
|
|
Cohesion: 0.5
|
|
Nodes (2): parseJwtPayload(), sessionFromLocalToken()
|
|
|
|
### Community 33 - "User Repository"
|
|
Cohesion: 0.67
|
|
Nodes (2): MagicLink, User
|
|
|
|
### Community 36 - "Public Booking"
|
|
Cohesion: 1.0
|
|
Nodes (2): bookSlot(), tenantSlug()
|
|
|
|
## Knowledge Gaps
|
|
- **97 isolated node(s):** `EmailTemplate`, `Config`, `Stats`, `User`, `MagicLink` (+92 more)
|
|
These have ≤1 connection - possible missing edges or undocumented components.
|
|
- **Thin community `PostgreSQL Repository`** (47 nodes): `.RecordBillingEvent()`, `PGRepository`, `.AppendWaitlistEntry()`, `.CreateBlockedDay()`, `.CreateBooking()`, `.CreateCustomer()`, `.CreateLocation()`, `.CreateNotificationDeliveryLog()`, `.CreateReminderJob()`, `.DeleteBlockedDay()`, `.DeleteCustomer()`, `.DeleteLocation()`, `.EnsureUserIdentity()`, `.GetBookingByReference()`, `.GetBrandProfile()`, `.GetCustomerBookingsCount()`, `.GetCustomerByEmail()`, `.GetCustomerByID()`, `.GetCustomerLastBooking()`, `.GetDashboardMetrics()`, `.GetLocationByID()`, `.GetSubscriptionSnapshot()`, `.GetTenantByBillingCustomerID()`, `.GetTenantByID()`, `.GetTenantBySlug()`, `.GetTenantMembershipByUserID()`, `.ListAvailabilityRulesByTenant()`, `.ListBlockedDaysByTenant()`, `.ListBookingsByTenantBetween()`, `.ListClassSessionsByTenant()`, `.ListCustomersByTenant()`, `.ListDueReminderJobs()`, `.ListLocationsByTenant()`, `.ListServicesByTenant()`, `.ListWorkingHoursByTenant()`, `.MarkReminderJobDispatched()`, `.RecordBillingEvent()`, `.RescheduleBooking()`, `.UpdateBlockedDay()`, `.UpdateBookingStatus()`, `.UpdateCustomer()`, `.UpdateLocation()`, `.UpdateTenantBillingCustomerID()`, `.UpdateTenantBillingState()`, `.UpdateWorkingHours()`, `.UpsertSubscriptionSnapshot()`, `firstNonEmpty()`
|
|
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
|
- **Thin community `Database Connection`** (21 nodes): `db.go`, `DB`, `.Close()`, `.CreateMagicLink()`, `.CreateUser()`, `.Exec()`, `.GetKV()`, `.GetMagicLink()`, `.GetStats()`, `.GetUserByEmail()`, `.GetUserByID()`, `.GetUserByProviderID()`, `.MarkMagicLinkUsed()`, `New()`, `.Pool()`, `.PutKV()`, `.Query()`, `.QueryRow()`, `.UpdateLastLogin()`, `.UpdateUser()`, `Stats`
|
|
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
|
- **Thin community `Business Service`** (17 nodes): `service.go`, `Service`, `.CreateBlockedDay()`, `.CreateCustomer()`, `.CreateLocation()`, `.DeleteBlockedDay()`, `.DeleteCustomer()`, `.DeleteLocation()`, `.ListBlockedDays()`, `.ListCustomers()`, `.ListLocations()`, `.ListWorkingHours()`, `NewService()`, `.UpdateBlockedDay()`, `.UpdateCustomer()`, `.UpdateLocation()`, `.UpdateWorkingHours()`
|
|
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
|
- **Thin community `Shell & Auth UI`** (15 nodes): `shell.tsx`, `GlobeIcon()`, `GoogleIcon()`, `handleOpenAuth()`, `hideHeader()`, `isDemoMode()`, `MenuIcon()`, `MoonIcon()`, `sendMagicLink()`, `showGoogleSignIn()`, `signInWithGoogle()`, `submitSignIn()`, `SunIcon()`, `translateAuthError()`, `XIcon()`
|
|
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
|
- **Thin community `Location Map`** (6 nodes): `location-map.tsx`, `createMarkerIcon()`, `escapeHtml()`, `loadLeaflet()`, `LocationMap()`, `safeMarkerColor()`
|
|
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
|
- **Thin community `Auth Provider`** (5 nodes): `auth-provider.tsx`, `AuthProvider()`, `parseJwtPayload()`, `sessionFromLocalToken()`, `useAuth()`
|
|
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
|
- **Thin community `User Repository`** (3 nodes): `repository.go`, `MagicLink`, `User`
|
|
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
|
- **Thin community `Public Booking`** (3 nodes): `public-booking-route.tsx`, `bookSlot()`, `tenantSlug()`
|
|
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
|
|
|
## Suggested Questions
|
|
_Questions this graph is uniquely positioned to answer:_
|
|
|
|
- **Why does `trimSpace()` connect `Neon Database Core` to `Memory Repository`, `PostgreSQL Repository`, `Server & Main Entry`, `Admin Dashboard`, `Notification Service`, `Email Provider`, `Email Localization`, `Brand Profile Service`?**
|
|
_High betweenness centrality (0.246) - this node is a cross-community bridge._
|
|
- **Why does `NewServer()` connect `Server & Main Entry` to `Neon Database Core`, `Customer Notifications`, `Test Suite`?**
|
|
_High betweenness centrality (0.116) - this node is a cross-community bridge._
|
|
- **Why does `reference()` connect `Paddle Billing & Dashboard` to `Notification Service`?**
|
|
_High betweenness centrality (0.101) - this node is a cross-community bridge._
|
|
- **Are the 45 inferred relationships involving `trimSpace()` (e.g. with `.StripeSecretConfigured()` and `.StripeWebhookConfigured()`) actually correct?**
|
|
_`trimSpace()` has 45 INFERRED edges - model-reasoned connections that need verification._
|
|
- **Are the 27 inferred relationships involving `NewService()` (e.g. with `New()` and `TestPriceForPlanUsesConfiguredPlanCodesOnly()`) actually correct?**
|
|
_`NewService()` has 27 INFERRED edges - model-reasoned connections that need verification._
|
|
- **Are the 19 inferred relationships involving `NewMemoryRepository()` (e.g. with `TestDispatchDueProcessesPendingEmailReminders()` and `TestDispatchDueFailsUnknownChannel()`) actually correct?**
|
|
_`NewMemoryRepository()` has 19 INFERRED edges - model-reasoned connections that need verification._
|
|
- **What connects `EmailTemplate`, `Config`, `Stats` to the rest of the system?**
|
|
_97 weakly-connected nodes found - possible documentation gaps or missing edges._ |