A pack-opening platform that combines real-time reward mechanics, crypto payments, and scalable backend infrastructure. Built for production deployment—not a proof-of-concept—with emphasis on performance, security, and operational flexibility.
This repository contains the frontend only.
It is published publicly so potential builders, clients, and collaborators can review the UI, product flows, and implementation quality. The full codebase—including the backend API, admin dashboard, payment webhooks, and database layer—is available on request. See Contact & Collaboration below.
https://github.com/user-attachments/assets/0c5b220c-3641-4127-af8d-99fccab0bc73
| Included | Not included (full platform) |
|---|---|
| Next.js user-facing web app | Backend API & services |
| Pack store, opening animations, battles, upgrader | Admin dashboard |
| Account, wallet, and history UI | Database & server-side reward logic |
| Real-time client (Socket.io) | NOWPayments webhook handling |
| Auth UI (email + Google OAuth) | Production deployment configs |
The frontend expects a running backend API. Most screens will load, but login, payments, pack opens, and live updates require the backend from the full platform.
PackDraw (HypePack) delivers an instant, engaging unboxing experience where users purchase digital packs, open them in real time, and receive randomized rewards. The platform integrates cryptocurrency payments, persistent user accounts, transaction history, and an administrative layer for day-to-day operations.
The product sits at the intersection of gaming mechanics, digital collectibles, and seamless Web3 payments—a pattern that continues to drive strong user engagement when execution is fast, fair, and transparent.
| Feature | Description |
|---|---|
| Real-time pack opening | Live, animated pack-opening flow with immediate feedback and reward reveal |
| Randomized reward distribution | Configurable loot tables and probability-weighted outcomes |
| Crypto payments | Deposit and checkout via NOWPayments |
| User accounts | Registration, authentication, balances, and inventory management |
| Transaction management | Full audit trail for deposits, purchases, openings, and payouts |
| Admin dashboard | Platform operations: users, packs, rewards, transactions, and configuration |
| Scalable architecture | Backend designed for horizontal growth and high-concurrency events |
┌─────────────┐ ┌──────────────┐ ┌─────────────┐ ┌──────────────┐
│ User │────▶│ Crypto │────▶│ Purchase │────▶│ Real-time │
│ Account │ │ Deposit │ │ Pack │ │ Pack Open │
└─────────────┘ └──────────────┘ └─────────────┘ └──────────────┘
│ │ │ │
│ ▼ ▼ ▼
│ NOWPayments Balance / Randomized
│ webhook ledger update reward grant
▼
┌─────────────┐
│ Admin │ ← monitors users, packs, odds, transactions, and platform health
│ Dashboard │
└─────────────┘
| Layer | Technology |
|---|---|
| Frontend | Next.js 16, React 19, TypeScript, Tailwind CSS 4, HeroUI, Framer Motion |
| Client state | Zustand |
| Real-time | Socket.io client |
| HTTP | Axios |
| Auth (UI) | Google OAuth (@react-oauth/google) |
| Media uploads | Pinata IPFS (avatars, pack images) |
| Backend (full platform) | Node.js API, PostgreSQL, server-side WebSockets |
| Payments (full platform) | NOWPayments API |
git clone https://github.com/<your-username>/packdraw.git
cd packdraw
npm install
Copy the example file and set your values:
cp env.example .env.local
On Windows, if .env.local is blocked, use env.local instead (as noted in env.example).
| Variable | Required | Description |
|---|---|---|
NEXT_PUBLIC_API_URL |
Yes | Backend API base URL including /api/v1 (e.g. http://localhost:3000/api/v1) |
NEXT_PUBLIC_GOOGLE_CLIENT_ID |
For Google login | OAuth 2.0 client ID from Google Cloud Console |
NEXT_PUBLIC_PINATA_API_KEY |
For uploads | Pinata API key |
NEXT_PUBLIC_PINATA_API_SECRET |
For uploads | Pinata API secret |
NEXT_PUBLIC_PINATA_GATEWAY_URL |
Optional | IPFS gateway URL (defaults to Pinata) |
NEXT_PUBLIC_PLATFORM_MARGIN |
Optional | Platform margin for user-created packs (default 0.08) |
Example .env.local:
NEXT_PUBLIC_API_URL=http://localhost:3000/api/v1
NEXT_PUBLIC_GOOGLE_CLIENT_ID=your_google_client_id
NEXT_PUBLIC_PINATA_API_KEY=
NEXT_PUBLIC_PINATA_API_SECRET=
NEXT_PUBLIC_PINATA_GATEWAY_URL=https://gateway.pinata.cloud/ipfs
# Development (default: http://localhost:80)
npm run dev
# Production build
npm run build
npm start
Notes:
npx next dev --webpack --port 3000.NEXT_PUBLIC_API_URL at your backend. Without it, the UI renders but API calls and WebSockets will fail.NEXT_PUBLIC_GOOGLE_CLIENT_ID and the redirect URI configured in Google Cloud Console.npm run lint
packdraw/
├── public/
│ └── assets/ # Images, icons, audio, avatars
├── src/
│ ├── app/ # Next.js App Router pages
│ ├── components/ # UI by feature (packs, battles, account, modals, …)
│ ├── lib/
│ │ ├── api/ # REST client modules
│ │ ├── services/ # IPFS and other client services
│ │ └── websocket.ts # Socket.io real-time client
│ └── store/ # Zustand stores
├── env.example
├── next.config.ts
├── package.json
└── README.md
| Pack Store | Pack Opening | Admin Dashboard |
|---|---|---|
| screenshot | screenshot | screenshot |
Live demo: Add link when deployed
Workflow video: add link to your demo recording
This project was built as a production-oriented Web3 gaming platform—combining instant engagement mechanics with reliable payment and account infrastructure. This public repo showcases the frontend implementation; the complete system includes backend services, admin tooling, and payment integration.
Related work:
Interested in the full codebase, technical details, custom builds, or collaboration?
Specify your license here (e.g. MIT, proprietary, or "All rights reserved" for a portfolio/demo repository).
Built with a focus on performance, scalability, security, and real-world deployment.
$ claude mcp add Packdraw-Bet \
-- python -m otcore.mcp_server <graph>