Difficulty: Advanced | Type: Feature
Background: NEXT_PUBLIC_FEATURE_ANALYTICS exists in the feature-flag table, defaulting to false in every environment, and "Advanced analytics" is explicitly listed under "Deferred (intentionally)."
Problem: There's currently no analytics module at all to gate — the flag exists as a reserved placeholder with nothing behind it, meaning the flag's "Feature unavailable" state is the entire experience today.
Expected Outcome: A first working version of the analytics module exists (e.g. membership growth over time, resource access frequency, role distribution), rendered only when the flag is explicitly enabled, using data available from existing endpoints (GET /v1/members, GET /v1/admin/events) without requiring new backend work.
Suggested Implementation: Add an app/admin/analytics/ route wrapped in <FeatureGate enabled={features.analytics} name="Analytics">, compute simple aggregate charts client-side from existing member/event data (e.g. using a lightweight charting library), and add the nav entry filtered by the flag per the existing pattern.
Acceptance Criteria:
- Analytics page renders real, correctly computed aggregates from mock-mode data.
- Page and nav entry are fully hidden when the flag is off (default), consistent with other gated modules.
- At least two distinct chart/metric views are implemented (not a single placeholder number).
Likely Affected Files/Directories: app/admin/analytics/ (new), lib/features.ts, components/nav.tsx
Labels: feature, architecture, GrantFox OSS, Maybe Rewarded, Official Campaign | FWC26
Difficulty: Advanced | Type: Feature
Background:
NEXT_PUBLIC_FEATURE_ANALYTICSexists in the feature-flag table, defaulting tofalsein every environment, and "Advanced analytics" is explicitly listed under "Deferred (intentionally)."Problem: There's currently no analytics module at all to gate — the flag exists as a reserved placeholder with nothing behind it, meaning the flag's "Feature unavailable" state is the entire experience today.
Expected Outcome: A first working version of the analytics module exists (e.g. membership growth over time, resource access frequency, role distribution), rendered only when the flag is explicitly enabled, using data available from existing endpoints (
GET /v1/members,GET /v1/admin/events) without requiring new backend work.Suggested Implementation: Add an
app/admin/analytics/route wrapped in<FeatureGate enabled={features.analytics} name="Analytics">, compute simple aggregate charts client-side from existing member/event data (e.g. using a lightweight charting library), and add the nav entry filtered by the flag per the existing pattern.Acceptance Criteria:
Likely Affected Files/Directories:
app/admin/analytics/(new),lib/features.ts,components/nav.tsxLabels:
feature,architecture,GrantFox OSS,Maybe Rewarded,Official Campaign | FWC26