Skip to content

Latest commit

 

History

144 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

EarnProof Frontend

EarnProof is an open-source, privacy-focused income and payment verification protocol built on Stellar.

This repository contains the Next.js web application for public education, developer-facing setup pages, wallet-authenticated proof creation, public proof verification, and initial shells for issuer discovery and system status.

Product Positioning

EarnProof helps people prove financial facts without revealing more financial information than necessary.

Primary tagline:

Prove your income, not your entire financial history.

The first implementation targets Stellar testnet and Freighter. The application should always make the active network visible and avoid implying that EarnProof provides credit decisions, legal identity verification, tax certification, or loan approval.

Current Scope

Implemented:

  • Next.js App Router application
  • TypeScript
  • Tailwind CSS
  • Public layout shell
  • Responsive public navigation
  • Footer
  • Landing page
  • How it works page
  • Privacy page
  • Developer page
  • Public verification page connected to the backend proof verification endpoint
  • Worker proof creation route at /proofs/create
  • Freighter wallet challenge signing flow through @stellar/freighter-api
  • Authenticated payment sync, payment listing, and manual classification controls
  • Minimum-income proof creation form
  • Issuer directory shell
  • Status page shell
  • Shared API client
  • Public environment configuration
  • EarnProof logo and favicon

Planned next:

  • Verification-state component tests
  • Proof revocation controls
  • Richer worker dashboard around the create-proof flow
  • Fixture-backed smoke tests

Tech Stack

  • Next.js
  • React
  • TypeScript
  • Tailwind CSS
  • Freighter API
  • TanStack Query
  • React Hook Form
  • Zod
  • ESLint

Repository Structure

app/
  developers/
  how-it-works/
  issuers/
  privacy/
  status/
  verify/
components/
  common/
  layout/
config/
hooks/
lib/
  api/
  validation/
public/

Local Setup

npm install
cp .env.example .env.local
npm run dev

Default local URL:

http://localhost:3000

If port 3000 is already in use:

npm run dev -- --port 3001

Environment Variables

NEXT_PUBLIC_APP_URL=http://localhost:3000
NEXT_PUBLIC_API_URL=http://localhost:4000/api/v1
NEXT_PUBLIC_STELLAR_NETWORK=testnet
NEXT_PUBLIC_STELLAR_NETWORK_PASSPHRASE=Test SDF Network ; September 2015

No secret keys belong in this frontend repository or any public environment variable.

Validation

npm run lint
npm run build
npm audit --omit=dev

Cache Policy

Cache-Control policy by route, API response caching, and stale/offline UI behavior are documented in docs/cache-policy.md.

Browser Support and Dependency Policy

Supported browsers/devices, required feature fallbacks, dependency upgrade tiers, and emergency patch handling are documented in docs/browser-support.md and docs/dependency-policy.md.

Testing

npm run test           # component/unit tests (Jest + React Testing Library)
npm run test:e2e       # end-to-end flows (Playwright)
npm run test:e2e:a11y  # accessibility scans: axe + keyboard interaction (Playwright)

See docs/testing-guide.md for how tests are organized, how to mock the API client and Freighter, and what a new test should look like; tests/README.md for the top-level tests/ directory specifically; and docs/accessibility-testing.md for what the automated accessibility gate covers and what still needs a manual screen-reader pass.

Privacy and UX Requirements

  • Show Stellar testnet status on relevant screens.
  • Hide sensitive amounts by default.
  • Show a disclosure preview before proof creation.
  • Clearly distinguish valid, expired, revoked, invalid, and unverified issuer states.
  • Do not expose full wallet history on verification pages.
  • Do not put secret keys or signing material in client code.
  • Keep public verification views limited to intentionally disclosed claim data.

Release Process

Promoting a preview build to production, verifying it, and rolling it back if needed are covered in docs/release-runbook.md.

Related Repositories

  • earnproof-backend: API, payment indexing, proof generation, credential signing, and verification.
  • earnproof-contracts: Soroban issuer registry, proof commitment registry, revocation state, and protocol configuration.
  • earnproof-sdk: Future TypeScript SDK for integrations.
  • earnproof-specification: Future credential and verification standard.

Releases

Packages

Contributors

Languages