Redesign the marketing site and dashboard from mockups, and remove fabricated data from three production pages - #168
Merged
mobilebytesenseicommunity merged 10 commits intoSep 25, 2026
Conversation
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: trueThanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
…tests__/api/products/create.test.ts dashboard/__tests__/api/providers/store-liveness.test.ts
…p/(marketing)/pricing/page.tsx dashboard/app/layout.tsx
…shboard/app/(dashboard)/dashboard/page.tsx dashboard/app/api/mcp/home/route.ts
…/app/(dashboard)/analytics/analytics-charts.tsx dashboard/app/(dashboard)/products/[id]/edit/page.tsx
…shboard/app/(dashboard)/webhooks/page.tsx
…shboard/app/(dashboard)/subscribers/page.tsx
…ard/app/(dashboard)/paywall/page.tsx dashboard/components/coupons/coupons-manager.tsx
…rd/app/(dashboard)/webhooks/[id]/page.tsx dashboard/app/(dashboard)/team/team-client.tsx
therajanmaurya
marked this pull request as ready for review
September 25, 2026 07:06
mobilebytesenseicommunity
merged commit Sep 25, 2026
43cb614
into
MobileByteLabs:dev
8 checks passed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Redesigns the marketing site and dashboard from 20 Stitch mockups, and establishes a design system
the whole product renders against.
The mockups earned their keep by exposing six defects that were invisible from the code alone.
Writing down what each screen was supposed to say surfaced places where it said something else, or
said something untrue. Those fixes are the substance of this PR; the visual work is the reason they
were found.
Fabricated data removed from three production pages
Analytics was inventing its charts.
synthesizeMRRSeries(mrrToday)ran unconditionally anddrew a six-month curve as
current * (0.55 + i * 0.075)— a guaranteed upward slope, for everyaccount, whether the business was growing, flat or shrinking.
synthesizeChurnSeries()did thesame whenever the churn view was empty, inventing a rate falling from 4.1% to 2.35%. Neither was
labelled as an estimate, on the exact charts an operator reads to decide whether retention is
working. Both deleted; MRR is now computed month-by-month from real
subscriptionsrows, and anempty window renders "No revenue history yet" instead of a curve.
The Team page was entirely mock. Every account saw the same invented colleagues, including one
at
alex.dev@hotmail.com. On an access-control screen that is the worst thing to fabricate: anoperator auditing who can reach their billing data saw people who do not exist, and would not have
seen a real teammate who does. Now reads
tenant_admins— the same table the authorization checksuse, so the page and the permission system cannot disagree. Pending invitations have no backing
table in the schema at all, so the list passes through empty rather than keeping a fixture that
implies an invitation was sent.
The webhook detail page was mock, and it is reached during incident triage.
/webhooks/[id]rendered a fake
payment.succeededforrahul.kumar@gmail.comwith an invented payload, responseand retry history; its own comment said "real implementation would fetch from Supabase". Clicking a
failed delivery in the log landed on a fabricated successful one. Now fetches the real row,
tenant-scoped. Fields
webhook_logsgenuinely does not record render as "not recorded" rather thanbeing filled in.
Three correctness fixes
logs.filter(...)over a 50-row slice reported "3 failed"when the real figure could be 300. Now tenant-wide exact counts, plus a "Needs attention" panel
grouped by (event, provider) carrying each provider's real
error_message.entitled right now". Added an Entitlement column from
entitlement_records;in_grace_period,on_billing_retryandactive_non_renewingall mean still entitled, and treating them asinactive would revoke access someone paid for.
api_keyamber — the warning colour, on normal automated activity. Actorchips are now neutral and differentiated by label; semantic colour is reserved for real failures.
Design system
idea-layer/design-system/— tokens lifted from what already ships (violet-700, the docs site'sIBM Plex pairing), not invented. Plus
docs/ENGINEERING_STANDARDS.mdrecording the stack and whatCI gates.
one product read as two products. Loaded via
next/fontas CSS variables, self-hosted, verifiedserving rather than silently falling back.
so state reads at a glance.
exposes an API to enable sandbox, so that state can never clear from software, and amber would
leave the board crying wolf permanently.
gray-*,zinc-*) swapped to theink-*tokens.Lint became a real gate
npm run lintwasnext lintwith no ESLint installed and no config — running it opened Next'sinteractive setup prompt. A script that can only hang reads as covered. Added
eslint+eslint-config-nextwith security-shaped rules (blockingdangerouslySetInnerHTML,eval, unsafetarget="_blank", and casting a parsed request body withas). Those rules found nothing,which is a real result about this codebase. Now gates every dashboard PR.
Verification
Deploy
Merging triggers
deploy-cloud.yml: Supabase migrations → dashboard → docs → production smoketests.
paycraft,api.paycraftandmcp.paycraftare custom domains on one Pages project, sothey ship together.