13 KiB
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
- _COMMUNITY_Paddle Billing & Dashboard
- _COMMUNITY_Memory Repository
- _COMMUNITY_PostgreSQL Repository
- _COMMUNITY_Domain Models
- _COMMUNITY_Server & Main Entry
- _COMMUNITY_Admin Dashboard
- _COMMUNITY_Test Suite
- _COMMUNITY_Database Records
- _COMMUNITY_Widget Builder & Icons
- _COMMUNITY_Email Templates Service
- _COMMUNITY_Notification Service
- _COMMUNITY_Database Connection
- _COMMUNITY_Email Provider
- _COMMUNITY_Auth & Magic Links
- _COMMUNITY_Business Service
- _COMMUNITY_Shell & Auth UI
- _COMMUNITY_Email Localization
- _COMMUNITY_Customer Notifications
- _COMMUNITY_Maps & Geocoding
- _COMMUNITY_Brand Profile Service
- _COMMUNITY_Google OAuth
- _COMMUNITY_Map URL Parsing
- _COMMUNITY_Location Map
- _COMMUNITY_Tabs Component
- _COMMUNITY_Legal Pages
- _COMMUNITY_Auth Provider
- _COMMUNITY_User Repository
- _COMMUNITY_Public Booking
God Nodes (most connected - your core abstractions)
trimSpace()- 47 edgesPGRepository- 46 edgesMemoryRepository- 46 edgesNewService()- 28 edgesNewMemoryRepository()- 22 edgesHandler- 20 edgesService- 20 edgesDB- 18 edgesNew()- 17 edgesNewServer()- 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.goNewServer()--calls-->NewCustomerService()[INFERRED] apps/backend/internal/api/server.go → apps/backend/internal/bookings/customer_service.gomain()--calls-->Load()[INFERRED] apps/backend/cmd/api/main.go → apps/backend/internal/config/config.gomain()--calls-->getEnv()[INFERRED] apps/backend/cmd/api/main.go → apps/auth-service/internal/config/config.gomain()--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(),StatsToo 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,UserToo 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()connectNeon Database CoretoMemory 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()connectServer & Main EntrytoNeon Database Core,Customer Notifications,Test Suite? High betweenness centrality (0.116) - this node is a cross-community bridge. - Why does
reference()connectPaddle Billing & DashboardtoNotification 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. withNew()andTestPriceForPlanUsesConfiguredPlanCodesOnly()) actually correct?NewService()has 27 INFERRED edges - model-reasoned connections that need verification. - Are the 19 inferred relationships involving
NewMemoryRepository()(e.g. withTestDispatchDueProcessesPendingEmailReminders()andTestDispatchDueFailsUnknownChannel()) actually correct?NewMemoryRepository()has 19 INFERRED edges - model-reasoned connections that need verification. - What connects
EmailTemplate,Config,Statsto the rest of the system? 97 weakly-connected nodes found - possible documentation gaps or missing edges.