···88 didStr, err := atproto.GetAuthenticatedDID(r.Context())
89 isAuthenticated := err == nil && didStr != ""
9091+ // Don't fetch feed items here - let them load async via HTMX
92+ if err := bff.RenderHome(w, isAuthenticated, didStr, nil); err != nil {
93+ http.Error(w, err.Error(), http.StatusInternalServerError)
94+ }
95+}
96+97+// Community feed partial (loaded async via HTMX)
98+func (h *Handler) HandleFeedPartial(w http.ResponseWriter, r *http.Request) {
99 var feedItems []*feed.FeedItem
100 if h.feedService != nil {
101 feedItems, _ = h.feedService.GetRecentBrews(r.Context(), 20)
102 }
103104+ if err := bff.RenderFeedPartial(w, feedItems); err != nil {
105 http.Error(w, err.Error(), http.StatusInternalServerError)
106 }
107}
+3
internal/routing/routing.go
···37 // API route for fetching all user data (used by client-side cache)
38 mux.HandleFunc("GET /api/data", h.HandleAPIListAll)
3900040 // Page routes (must come before static files)
41 mux.HandleFunc("GET /{$}", h.HandleHome) // {$} means exact match
42 mux.HandleFunc("GET /manage", h.HandleManage)
···37 // API route for fetching all user data (used by client-side cache)
38 mux.HandleFunc("GET /api/data", h.HandleAPIListAll)
3940+ // Community feed partial (loaded async via HTMX)
41+ mux.HandleFunc("GET /api/feed", h.HandleFeedPartial)
42+43 // Page routes (must come before static files)
44 mux.HandleFunc("GET /{$}", h.HandleHome) // {$} means exact match
45 mux.HandleFunc("GET /manage", h.HandleManage)