mirror of
https://github.com/pezkuwichain/pwap.git
synced 2026-10-20 18:56:16 +00:00
c26eeee12c97244fc5d2882aac1a1b551a82a141
Signup had no bot protection. The account itself was never the prize — GoTrue refuses a session until the address is confirmed, and 0 of the 2 unconfirmed accounts on record ever signed in. The prize is our mail: /signup and /recover send to whatever address the caller types, so a stranger could make pezkuwichain.io mail thousands of people who never asked for it. Sending reputation takes months to rebuild and every product on the domain shares it. Rate limiting alone was not enough. GoTrue defaults to 30 emails/hour, which is 720 a day to attacker-chosen recipients; tightening it to 15 halves the number without changing what is possible. Verification runs inside GoTrue, not here. It POSTs to siteverify with the widget secret before /signup, /recover, /resend, /magiclink, /otp and /token with grant_type=password. Adding our own check in the frontend or a proxy would protect nothing, because /auth/v1/signup is reachable directly. One shared widget in execute mode rather than one per form: some of these are buttons with nowhere to put a checkbox, and interaction-only appearance keeps the challenge invisible unless Cloudflare asks for one. Tokens are single-use, so each call renders fresh and tears down the previous widget. Six call sites, matching the six protected endpoints — password login included, since /token with grant_type=password is enforced. Refresh-token grants are exempt, so open sessions are unaffected. Site key travels as a build arg like the WalletConnect id: it is public by construction, visible in the bundle. Only the secret is privileged and it lives in GoTrue's env on the auth host. Ships ahead of enforcement. Turning captcha on server-side before the frontend sends tokens would break every login and signup in the same instant.
Pezkuwi Web App Projects (PWAP)
Monorepo for Pezkuwi blockchain frontend applications.
Project Structure
pwap/
├── web/ # Main web application
├── mobile/ # Mobile application (React Native + Expo)
├── backend/ # Backend API services
├── shared/ # Shared code and utilities
└── package.json # Root package with build scripts
Related Repositories
| Repository | Description | URL |
|---|---|---|
| pezkuwi-sdk-ui | Blockchain Explorer & Developer Tools | https://github.com/pezkuwichain/pezkuwi-sdk-ui |
| pezkuwi-extension | Browser Wallet Extension | https://github.com/pezkuwichain/pezkuwi-extension |
Projects
1. web/ - Main Web Application
Status: ✅ Production Ready
The primary web interface for Pezkuwi blockchain at app.pezkuwichain.io
Tech Stack:
- React 18 + TypeScript
- Vite
- @pezkuwi/api
- Supabase (Auth & Database)
- Tailwind CSS + shadcn/ui
- i18next
Features:
- Wallet integration (Pezkuwi Extension)
- Live blockchain data
- Staking dashboard
- DEX/Swap interface
- P2P Fiat Trading with atomic escrow
- Transaction history
- Multi-language support (EN, TR, KMR, CKB, AR, FA)
- Governance with live blockchain integration
cd web
npm install
npm run dev
2. mobile/ - Mobile Application
Status: 🚧 In Development
React Native Expo app for iOS and Android.
Features:
- Welcome screen with language selection
- Multi-language support (6 languages with RTL)
- Authentication (Sign In/Up)
- Main dashboard navigation (5-tab bottom nav)
- Wallet integration with @pezkuwi/api
- Live blockchain data (HEZ, PEZ, USDT)
- Send/receive transactions
- Biometric authentication
cd mobile
npm install
npm start
3. backend/ - Backend Services
API services for the applications.
cd backend
npm install
npm run dev
4. shared/ - Shared Code
Common code, types, and utilities used across all platforms.
shared/
├── types/ # TypeScript type definitions
├── utils/ # Helper functions
├── blockchain/ # Blockchain utilities
├── constants/ # App constants
├── images/ # Shared images and logos
└── i18n/ # Internationalization
Quick Start
Prerequisites
- Node.js 18+
- npm
Installation
# Clone repository
git clone https://github.com/pezkuwichain/pwap.git
cd pwap
# Install all dependencies
npm install
# Or install individually
npm run install:web
npm run install:mobile
npm run install:backend
Build All Projects
npm run build
This builds:
web- Vite production buildpezkuwi-sdk-ui- Full SDK UI build (separate repo)mobile- Expo web export
Development
# Run web and mobile in parallel
npm run dev
# Or run individually
npm run dev:web
npm run dev:mobile
Multi-Language Support
All applications support:
- 🇬🇧 English (EN)
- 🇹🇷 Türkçe (TR)
- ☀️ Kurmancî (KMR)
- ☀️ سۆرانی (CKB)
- 🇸🇦 العربية (AR)
- 🇮🇷 فارسی (FA)
RTL support for CKB, AR, FA.
Scripts
| Command | Description |
|---|---|
npm run build |
Build all projects |
npm run dev |
Start development servers |
npm run lint |
Run linters |
npm run test |
Run tests |
npm run install:all |
Install all dependencies |
Links
- Website: https://app.pezkuwichain.io
- Website (alt): https://pex.mom
- Exchange: https://pex.network
- Documentation: https://docs.pezkuwichain.io
License
Apache-2.0
Languages
TypeScript
82.9%
PLpgSQL
8.8%
Rust
3.9%
JavaScript
2.4%
CSS
0.7%
Other
1.2%