Skip to content

Latest commit

 

History

History
453 lines (339 loc) · 18 KB

File metadata and controls

453 lines (339 loc) · 18 KB

ArrowTower

GitHub licensePRs WelcomeGitHub Repo starsOpen IssuesGitHub closed pull requestsLast Commit

PolkadotSolidityWeb3Hardhat

Next.jsTypeScriptTailwind CSS

Live DemoCI/CDTestsDocker Ready

📖 项目简介

ArrowTower 是䞀䞪基于 Polkadot 生态的地理䜍眮打卡平台支持䞀键匏平台郚眲,倚场景适甚通过零 Gas 莹后端代铞造技术让甚户无闚槛䜓验 Web3。銖期聚焊箭塔村乡村旅枞场景枞客完成特色路线打卡和互劚任务后系统自劚发攟独特 NFT 数字纪念品无需甚户了解Gas莹或支付莹甚孊习钱包䜿甚䞎筟名。 Snapshot

平台可快速拓展至 Web3 䌚展掻劚、城垂文旅探玢、教育研孊、商䞚营销、公益掻劚 等倚䞪商䞚场景。通过铟䞊身仜验证和可验证数字凭证䞺文旅、䌚展、教育、营销等行䞚提䟛创新的甚户互劚和数字资产解决方案。

✹ 栞心特性

  • 🎁 零 Gas 莹䜓验基于 PolkaVM 后端代铞造技术甚户无需支付 Gas。
  • 🚀 即刻生效Fork 或克隆项目后拉起 Docker 镜像即可进入系统真正做到匀箱即甚。
  • 🔧 倚郚眲圢匏支持 Docker 郚眲、Kubernetes 郚眲、GitHub Actions 䞀键 CI/CD 䞊线。
  • 🔄 队列铞造机制支持事务队列、批量 NFT 链造 (queue-minting)可应对高并发场景。
  • 🖥 前端可郚眲合纊前端管理界面盎接支持郚眲、配眮合纊地址无需后端改造即可切换䞍同 NFT 合纊。
  • 📍 地理䜍眮二绎码校验打卡支持 GPS 定䜍校验 + 二绎码扫描倚重验证保障打卡有效性。
  • 🎚 互劚任务系统拍照䞊䌠、知识问答、任务打卡、成就解锁等提升甚户参䞎感。
  • 📊 数据统计看板实时统计甚户行䞺、任务进床、铞造量、打卡人数等铟䞊 + 线䞋数据。
  • 🧩 暡块化可倍甚任务系统、打卡系统、NFT 暡块、数据统计暡块均可拆分倍甚。
  • ⚡ PolkaVM 驱劚基于 PolkaVM 圚 Polkadot 生态的测试眑运行享受高性胜  䜎成本䌘势。

🔑 栞心功胜暡块

  1. 甚户讀证暡块
    • 钱包连接
    • 筟名讀证 + 䌚话管理NextAuth
  2. 地理䜍眮打卡暡块
    • GPS 定䜍校验
    • 二绎码 QR 扫描校验
    • 打卡记圕同步至铟䞊
  3. 任务系统暡块
    • 创建猖蟑任务路线等劂拍照䞊䌠、问答、打卡
    • 奖励觊发噚完成任务自劚觊发 NFT 铞造
  4. NFT 铞造暡块
    • 后端代铞造甚户无需 Gas可批量队列铞造Queue Minting
    • 前端配眮合纊地址/ABI支持替换 NFT 合纊郚眲场景
    • 铞造结果记圕铟䞊甚户钱包自劚接收 NFT
  5. 数据统计暡块
    • 实时统计甚户打卡、任务完成、铞造量、掻跃床、参䞎率等指标
    • 铟䞊数据 + 本地数据库数据融合展瀺
    • 囟衚看板䟿于运营人员分析掻劚效果
  6. 郚眲运绎暡块
    • 提䟛 Dockerfile  docker-compose 配眮䞀键启劚服务
    • 支持 GitHub ActionsGitLab CI 䞀键构建 & 郚眲流皋
    • 支持切换 眑络本地、测试眑、䞻眑䞎 DB 配眮PostgreSQL/SQLite

🎯 应甚场景

銖期场景箭塔村乡村旅枞

枞客通过 dApp 浏览箭塔村特色旅枞路线到蟟指定地点后通过地理䜍眮校验或扫描二绎码完成打卡完成互劚任务拍照䞊䌠、知识问答、文化䜓验积环成就。完成完敎路线后系统自劚铞造并发送独特的箭塔村 NFT 数字纪念品到甚户钱包无需甚户操䜜。

价倌提升枞客枞览趣味性和参䞎床䞺箭塔村建立数字化旅枞品牌通过 NFT 实现长期甚户连接和二次䌠播。

拓展场景

🎪 Web3 䌚展掻劚

  • 䌚议筟到打卡、展䜍互劚、挔讲厅打卡、瀟亀眑络打卡
  • 根据打卡完成床自劚发攟䞍同等级的参䌚证明 NFT
  • 铟䞊身仜验证确保参䌚者身仜真实性防止代筟到
  • 实时数据统计䞺䞻办方和展商提䟛可量化的效果数据
  • 适甚于区块铟峰䌚、Web3 黑客束、行䞚展览䌚、匀发者倧䌚等

🏙 城垂文旅探玢

  • 历史文化线路、矎食探店路线、艺术文化路线、城垂挑战赛
  • 促进文旅消莹和城垂品牌䌠播建立城垂数字文化资产

📚 教育䞎研孊

  • 校园定向越野、研孊旅行记圕、实践诟皋打卡、毕䞚纪念册
  • 增区孊习趣味性建立铟䞊教育档案提䟛可验证的诟倖掻劚证明

🛍 商䞚营销掻劚

  • 品牌联劚打卡、新品发垃䌚、䌚员䜓系升级、线䞋快闪掻劚
  • 提升甚户到店率和互劚率打造品牌数字资产和 Web3 瀟区基础

🀝 瀟区䞎公益掻劚

  • 志愿服务记圕、环保行劚打卡、瀟区掻劚参䞎、慈善捐赠记圕
  • 建立可信的公益记圕䜓系提升公益掻劚透明床和公信力

🛠 技术架构

技术栈

前端

  • 框架Next.js 15+ (App Router)
  • 样匏Tailwind CSS + shadcn/ui
  • 区块铟亀互wagmi + viem
  • 讀证系统NextAuth.js
  • 状态管理React Hooks

后端

  • API 层Next.js API Routes
  • 数据库 ORMPrisma
  • NFT 铞造后端代铞造Zero Gas Fee

区块铟

  • 虚拟机PolkaVM
  • 测试眑络Polkadot Hub Testnet
  • 智胜合纊
    • Minter 合纊0x079098fb8e901DE45AB510fA669bdE793DfEBD50(View on blockchain explorer: Blockscout)
    • NFT 合纊0x9373197B94f4633FBc121532F3cF3948FD4a5a15 (View on blockchain explorer: Blockscout)

Snapshot

系统架构

┌─────────────────────────────────────────┐
│         甚户界面层 (Next.js)             │
│    React + Tailwind CSS + shadcn/ui     │
└──────────────────┬──────────────────────┘
                   │
┌──────────────────▌──────────────────────┐
│        区块铟亀互层 (wagmi + viem)       │
│         甚户钱包连接䞎亀易筟名            │
└──────────────────┬──────────────────────┘
                   │
┌──────────────────▌──────────────────────┐
│    䞚务逻蟑层 (API Routes + NextAuth)   │
│      地理䜍眮验证 | 任务管理 | 数据统计    │
└──────────────────┬──────────────────────┘
                   │
┌──────────────────▌──────────────────────┐
│      数据持久层 (Prisma + Database)      │
│      甚户数据 | 打卡记圕 | 任务进床        │
└──────────────────┬──────────────────────┘
                   │
┌──────────────────▌──────────────────────┐
│       区块铟层 (PolkaVM + Testnet)       │
│  Polkadot Hub Testnet | Smart Contracts │
└─────────────────────────────────────────┘

🚀 快速匀始

环境芁求

  • Node.js 20.x 或曎高版本
  • 数据库PostgreSQL / MySQL / SQLite

安装步骀

1. 克隆项目

git clone https://github.com/easyshellworld/arrowtower-dapp.git
cd arrowtower-dapp

2. 智胜合纊郚眲䞎测试

2.1 进入合纊目圕并安装䟝赖

cd contracts/hardhat-arrowtower
npm install

2.2 配眮合纊环境变量

创建 .env 文件并配眮以䞋内容

# 本地眑络私钥瀺䟋
PRIVATE_KEY_LOCAL="0x...."

# passethub (测试眑) 私钥
PRIVATE_KEY_PA="0x...."

2.3 郚眲䞎测试合纊

# 本地眑络郚眲䞎测试
npx hardhat run scripts/deploy.ts --network localNode
npx hardhat run scripts/deployandtest.ts --network localNode

# 䜿甚 passet-hub 测试眑郚眲䞎测试
npx hardhat run scripts/deploy.ts --network passethub
npx hardhat run scripts/deployandtest.ts --network passethub

2.5 郚眲䞎测试合纊反銈

2.5 返回项目根目圕

cd ../..

3. dApp 应甚安装䞎配眮

3.1 安装䟝赖

npm install

3.2 配眮应甚环境变量

创建 .env 文件并配眮以䞋内容

# 数据库配眮
DATABASE_URL="your_database_url"

# NextAuth 配眮
NEXTAUTH_SECRET="your_nextauth_secret"
NEXTAUTH_URL="http://localhost:3000"

# 配眮眑站基本铟接
NEXT_PUBLIC_ARROW_TOWER_BASE_URL="https://arrowtower.netlify.app/"

# 智胜合纊地址
NEXT_PUBLIC_MINTER_CONTRACT="0x079098fb8e901DE45AB510fA669bdE793DfEBD50"
NEXT_PUBLIC_NFT_CONTRACT="0x9373197B94f4633FBc121532F3cF3948FD4a5a15"

# 后端铞造私钥仅服务端
PRIVATE_KEY="your_private_key"

# 初始化䜿甚
ADMIN_ADDRESS="admin wallet addresss"

3.3 初始化数据库

npx prisma generate
npx prisma db push
npm run init:db

3.4 启劚匀发服务噚

npm run dev

3.5 访问应甚

打匀浏览噚访问 http://localhost:3000

🐳 Docker 䞀键郚眲

䜿甚 Docker Compose 可以快速启劚完敎的生产级 ArrowTower 应甚栈包括 PostgreSQL 数据库和 Next.js 应甚。

1. 克隆项目

git clone https://github.com/easyshellworld/arrowtower-dapp.git
cd arrowtower-dapp

2. 配眮环境变量

创建 .env 文件配眮以䞋关键参数

# 数据库配眮
POSTGRES_USER=postgres
POSTGRES_PASSWORD=your_secure_password
POSTGRES_DB=arrowtower
DATABASE_URL="postgresql://postgres:your_secure_password@postgres:5432/arrowtower?schema=public"

# NextAuth 配眮
NEXTAUTH_SECRET="your_nextauth_secret_here"
NEXTAUTH_URL="http://localhost:30000"

# 眑站基础配眮
NEXT_PUBLIC_ARROW_TOWER_BASE_URL="http://localhost:30000"

# 智胜合纊地址
NEXT_PUBLIC_MINTER_CONTRACT="0x079098fb8e901DE45AB510fA669bdE793DfEBD50"
NEXT_PUBLIC_NFT_ADDRESS="0x9373197B94f4633FBc121532F3cF3948FD4a5a15"

# 区块铟配眮
PRIVATE_KEY="your_private_key_for_backend_minting"
CHAIN_ID="420420421"
RPC_URL="https://rpc.polkadot-hub-paseo-testnet.polkadot.io"
NETWORK="polkadot-hub-paseo-testnet"


# 初始化䜿甚
ADMIN_ADDRESS="admin wallet addresss"

3. 启劚服务

䜿甚 Docker Compose 䞀键启劚所有服务

docker-compose up -d

这将自劚

  • 拉取并启劚 PostgreSQL 16 数据库
  • 构建并启劚 Next.js 应甚
  • 配眮眑络和数据卷
  • 执行健康检查

4. 验证郚眲

检查服务状态

docker-compose ps

查看应甚日志

docker-compose logs -f app

访问应甚打匀浏览噚访问 http://localhost:30000

📊 项目结构

arrowtower-dapp/
├── contracts/                 # 智胜合纊 (Hardhat 项目)
│   └── hardhat-arrowtower/
│       ├── contracts/         # Solidity 源码arrow_tower_minter.sol, arrow_tower_nft.sol, ...
│       ├── scripts/           # 郚眲 / 测试脚本
│       ├── test/              # 智胜合纊测试
│       ├── artifacts-pvm/     # 猖译产物
│       └── typechain-types/   # TypeChain 类型
├── prisma/                    # Prisma ORMschema / migrations / client
│   └── (schema.prisma / migrations / client)
├── src/                       # 应甚源码已从 log 䞭识别
│   ├── app/                   # Next.js App Router 源码页面䞎 API 路由
│   │   ├── admin/             # 管理后台页面
│   │   ├── api/               # API 路由server-only
│   │   │   ├── admin/
│   │   │   │   └─checkins/    # 管理盞关接口
│   │   │   ├── auth/
│   │   │   │   ├─signin/
│   │   │   │   └─[...nextauth]/
│   │   │   ├── checkins/
│   │   │   ├── checkmint/
│   │   │   ├── health/
│   │   │   ├── metadata/
│   │   │   │   └─[id]/
│   │   │   ├── pois/
│   │   │   ├── route_list/
│   │   │   └── upload/
│   │   │       └─photo/
│   │   ├── maps/              # 地囟盞关页面
│   │   ├── routes/            # 劚态路由页面
│   │   │   └─[id]/
│   │   ├── testcheckin/
│   │   └── user/
│   │       ├─checkmint/
│   │       └─[poi]/
│   ├── components/            # 可倍甚组件
│   │   ├─maps/                # 地囟组件
│   │   └─ui/
│   ├── jobs/                  # 批倄理 / 后台任务cron / jobs
│   └── lib/                   # 项目内郚工具库
│       ├─chains/              # 铟配眮
│       └─db/                  # 数据库封装Prisma client
├── public/                    # 静态资源web 可盎取
│   └── pic/
│       └── svg_small/         # 小尺寞 svg 资源
├── pic/                       # 讟计/瀺䟋囟log 䞭出现的单独目圕
│   ├─svg/
│   └─svg_small/
├── scripts/                   # 项目脚本郚眲、工具脚本
├── data/                      # 瀺䟋数据 / 种子数据 / 富出
├── doc/                       # 项目文档release notes / design doc
├── tests/                     # 端到端或集成测试目圕
├── .env.example               # 环境变量瀺䟋请确保敏感信息䞍圚 repo
├── README.md                  # 项目诎明
└── (配眮文件)
    ├─tsconfig.json
    ├─next.config.js / next.config.ts
    ├─tailwind.config.js
    ├─postcss.config.js
    └─components.json          # shadcn/ui 配眮

🌐 郚眲

Netlify 郚眲掚荐

  1. Fork 本项目到䜠的 GitHub 莊户
  2. 圚 Netlify 䞭富入项目
  3. 配眮环境变量
  4. 点击郚眲

项目已郚眲挔瀺https://arrowtower.netlify.app/

🀝 莡献指南

我们欢迎所有圢匏的莡献包括䜆䞍限于

  • 🐛 提亀 Bug 报告
  • 💡 提出新功胜建议
  • 📝 改进文档
  • 🔧 提亀代码修倍
  • 🌐 翻译文档

📄 匀源协议

本项目采甚 MIT 协议匀源。

📞 联系方匏

🌟 臎谢

感谢所有䞺本项目做出莡献的匀发者和瀟区成员

特别感谢 Polkadot 生态对 Web3 基础讟斜的支持。


ArrowTower - 让每䞀次探玢郜成䞺氞恒的数字记忆 🗌✚