akash-network / akash-network/console

Trial Expired Without Payment — Improve UX & Prevent Backend Errors

Open
#2,448 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug
Dominant language
TypeScript
Stars
264
Forks
94
Avg merge
18h 49m
Merged PRs (30d)
297

Description

Problem

When a user's trial period ends without a payment, fee grants are not refreshed. As a result:

  • Users encounter server errors from the backend.
  • Although a proper backend response is already implemented (PR #2444), the UX is poor.
  • Repeated failed actions generate noise in monitoring/alerts.

Expected Behavior

Under the same conditions as PR #2444:

  1. Display a persistent banner informing the user that a top-up is required to continue using the Console.
  2. Disable UI actions (buttons/links) that would trigger fee-costing operations.
  3. Prevent users from triggering requests that are guaranteed to fail.
  4. Send a different email when all credits have been consumed at the end of the trial (from #2447), rather than the generic trial-expired email.

Proposed Solution

  • Implement a global banner component shown when:
    • Trial is expired
    • No payment / insufficient balance
    • Fee grants are not available
  • Reuse the same condition checks used in PR #2444 to ensure consistency.
  • Disable or grey out:
    • Buttons
    • Links
    • Actions that require fee grants
  • Provide a CTA (e.g. "Top up balance") linking to the relevant flow.
  • Send a distinct email notification when credits are consumed at end of trial (not the generic expiry email).

Benefits

  • Clear and actionable feedback to users
  • Fewer confusing backend errors
  • Reduced noise in backend monitoring
  • Better alignment between backend state and frontend UX

Acceptance Criteria

  • Banner is shown only under the same conditions as PR #2444
  • Banner clearly explains why actions are unavailable
  • Fee-costing actions are disabled while banner is active
  • No backend error spam from disabled actions
  • UX verified with an expired trial + no payment scenario
  • Different email sent when credits consumed at end of trial vs. normal trial expiry

References


Consolidates: #2447

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reviewing PR #2444 for the existing trial, payment, and fee-grant conditions, then compare the consumed-credit email case in #2447 with the normal expiry flow. Trace the frontend entry point for global notices and fee-costing actions, plus the email notification path. Done means the banner and action disabling match those conditions, and the correct email is sent in each expiry scenario.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
api, backend, frontend
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.