Skip to content

Commit 1eb51b5

Browse files
Merge pull request #61 from easyshellworld/dev
docs:update readme.md and ppt.html
2 parents e47f35c + aae4253 commit 1eb51b5

3 files changed

Lines changed: 240 additions & 41 deletions

File tree

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
## 📖 项目简介
1313

14-
ArrowTower 是一个基于 Polkadot 生态的地理位置打卡平台,通过**零 Gas 费**后端代铸造技术,让用户无门槛体验 Web3。首期聚焦箭塔村乡村旅游场景,游客完成特色路线打卡和互动任务后,系统自动发放独特 NFT 数字纪念品,无需用户了解Gas费或支付费用,学习钱包使用与签名。
14+
ArrowTower 是一个基于 Polkadot 生态的地理位置打卡平台,支持一键式平台部署,多场景适用,通过**零 Gas 费**后端代铸造技术,让用户无门槛体验 Web3。首期聚焦箭塔村乡村旅游场景,游客完成特色路线打卡和互动任务后,系统自动发放独特 NFT 数字纪念品,无需用户了解Gas费或支付费用,学习钱包使用与签名。
1515
![Snapshot](./public/ppt/snapshot.png)
1616

1717
平台可快速拓展至 **Web3 会展活动****城市文旅探索****教育研学****商业营销****公益活动** 等多个商业场景。通过链上身份验证和可验证数字凭证,为文旅、会展、教育、营销等行业提供创新的用户互动和数字资产解决方案。

docs/updatalog.md

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
### 2025-10-01
2+
* 项目小组成立
3+
* 项目方案策划书草稿完成
4+
5+
---
6+
17
### 2025-10-02
28

39
* `add svg` — 新增或加入 SVG 资源。
@@ -174,12 +180,23 @@
174180
* 修复前端与钱包链接bug:`Request of type personal_sign bug`
175181

176182

183+
---
184+
177185
### 2025-10-23
178186
* 新增前端部署NFT合约、minter合约,绑定合约关系组件`ContractDeployer.tsx`,并制作`viem.ts`测试合约部署文件
179187
* 修订`readme`文件部分内容,修订`PPT`部分内容
180188

189+
---
190+
181191
### 2025-10-24
182192
* 增加`middleware.ts`重构认证中间件,支持 admin 和 user 角色权限控制
183193
* 修订`readme`文件部分内容,`PPT`部分内容。
184194
* 修复`external_url`内容定义问题。
185195

196+
---
197+
198+
### 2025-10-25
199+
* 完成视频前后端展示内容,暂缺现场演示视频拍摄
200+
* 修订`readme`文件部分内容,`PPT`部分内容,部分内容进行分页处理
201+
202+

public/ppt/ppt.html

Lines changed: 222 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,11 @@
139139
.small-image {
140140
max-width: 400px !important;
141141
}
142+
143+
/* 更小的图片样式 */
144+
.smaller-image {
145+
max-width: 500px !important;
146+
}
142147

143148
.center-image img {
144149
width: 100%;
@@ -380,7 +385,98 @@
380385
}
381386

382387
.link-icon {
383-
font-size: 1.2rem;
388+
width: 24px;
389+
height: 24px;
390+
}
391+
392+
/* 徽章容器样式 */
393+
.badges-container {
394+
display: flex;
395+
flex-wrap: wrap;
396+
justify-content: center;
397+
gap: 0.5rem;
398+
margin: 0.5rem 0; /* 减少上下间距 */
399+
}
400+
401+
.badge {
402+
height: 20px;
403+
border-radius: 3px;
404+
}
405+
406+
/* 架构图样式 */
407+
.architecture-diagram {
408+
width: 100%;
409+
max-width: 800px;
410+
margin: 2rem auto;
411+
background: white;
412+
border-radius: 12px;
413+
padding: 1.5rem;
414+
box-shadow: 0 4px 6px rgba(5, 150, 105, 0.1);
415+
border: 1px solid #a7f3d0;
416+
}
417+
418+
.architecture-diagram pre {
419+
white-space: pre-wrap;
420+
font-family: 'Courier New', monospace;
421+
font-size: 0.9rem;
422+
line-height: 1.4;
423+
color: #065f46;
424+
text-align: left;
425+
}
426+
427+
/* 架构层样式 */
428+
.arch-layer {
429+
background: white;
430+
border-radius: 8px;
431+
padding: 1rem;
432+
margin: 1rem 0;
433+
box-shadow: 0 4px 6px rgba(5, 150, 105, 0.1);
434+
border: 1px solid #a7f3d0;
435+
text-align: center;
436+
}
437+
438+
.arch-layer h4 {
439+
color: #065f46;
440+
margin-bottom: 0.5rem;
441+
}
442+
443+
.arch-layer p {
444+
font-size: 0.9rem;
445+
margin-bottom: 0;
446+
color: #374151;
447+
}
448+
449+
.arch-connector {
450+
height: 30px;
451+
width: 2px;
452+
background: #10b981;
453+
margin: 0 auto;
454+
}
455+
456+
.arch-container {
457+
width: 100%;
458+
max-width: 600px;
459+
margin: 0 auto;
460+
}
461+
462+
.arch-ui {
463+
background: #ecfdf5;
464+
}
465+
466+
.arch-blockchain {
467+
background: #d1fae5;
468+
}
469+
470+
.arch-business {
471+
background: #a7f3d0;
472+
}
473+
474+
.arch-data {
475+
background: #6ee7b7;
476+
}
477+
478+
.arch-chain {
479+
background: #34d399;
384480
}
385481
</style>
386482
</head>
@@ -423,11 +519,15 @@ <h3>陌生人草台班子 (Random Assembly)</h3>
423519
</div>
424520
<div class="links-container">
425521
<a href="https://github.com/easyshellworld/arrowtower-dapp" class="link-item" target="_blank">
426-
<span class="link-icon">🔗</span>
522+
<svg class="link-icon" viewBox="0 0 24 24" fill="currentColor">
523+
<path d="M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z"/>
524+
</svg>
427525
<span>GitHub 项目地址: https://github.com/easyshellworld/arrowtower-dapp</span>
428526
</a>
429527
<a href="https://arrowtower.netlify.app/" class="link-item" target="_blank">
430-
<span class="link-icon">🔗</span>
528+
<svg class="link-icon" viewBox="0 0 24 24" fill="currentColor">
529+
<path d="M6.5 12.5H2.5V6.5H6.5V12.5ZM6.5 17.5H2.5V13.5H6.5V17.5ZM13.5 12.5H9.5V6.5H13.5V12.5ZM13.5 17.5H9.5V13.5H13.5V17.5ZM20.5 12.5H16.5V6.5H20.5V12.5ZM20.5 17.5H16.5V13.5H20.5V17.5Z"/>
530+
</svg>
431531
<span>演示网站: https://arrowtower.netlify.app/</span>
432532
</a>
433533
</div>
@@ -438,9 +538,44 @@ <h3>陌生人草台班子 (Random Assembly)</h3>
438538
<section class="slide" id="slide3">
439539
<div class="slide-content fade-in">
440540
<h2>项目简介</h2>
441-
<p>ArrowTower 是一个基于 Polkadot 生态的地理位置打卡平台,通过<strong>零 Gas 费</strong>后端代铸造技术,让用户无门槛体验 Web3。</p>
541+
542+
<!-- 徽章部分 -->
543+
<div class="badges-container">
544+
<img src="https://img.shields.io/badge/license-MIT-blue.svg" alt="License" class="badge">
545+
<img src="https://img.shields.io/badge/PRs-welcome-brightgreen.svg" alt="PRs Welcome" class="badge">
546+
<img src="https://img.shields.io/github/stars/easyshellworld/arrowtower-dapp?style=social" alt="GitHub Repo stars" class="badge">
547+
<img src="https://img.shields.io/github/issues/easyshellworld/arrowtower-dapp" alt="Open Issues" class="badge">
548+
<img src="https://img.shields.io/github/issues-pr-closed/easyshellworld/arrowtower-dapp" alt="GitHub closed pull requests" class="badge">
549+
<img src="https://img.shields.io/github/last-commit/easyshellworld/arrowtower-dapp" alt="Last Commit" class="badge">
550+
</div>
551+
552+
<div class="badges-container">
553+
<img src="https://img.shields.io/badge/Polkadot-Hub_Testnet-E6007A?logo=polkadot" alt="Polkadot" class="badge">
554+
<img src="https://img.shields.io/badge/Solidity-363636?logo=solidity&logoColor=white" alt="Solidity" class="badge">
555+
<img src="https://img.shields.io/badge/Web3-wagmi%2Bviem-FF6B35?logo=ethereum" alt="Web3" class="badge">
556+
<img src="https://img.shields.io/badge/Hardhat-FFF100?logo=hardhat&logoColor=black" alt="Hardhat" class="badge">
557+
</div>
558+
559+
<div class="badges-container">
560+
<img src="https://img.shields.io/badge/Next.js-15+-black?logo=next.js" alt="Next.js" class="badge">
561+
<img src="https://img.shields.io/badge/TypeScript-5.0+-3178C6?logo=typescript" alt="TypeScript" class="badge">
562+
<img src="https://img.shields.io/badge/Tailwind_CSS-3.0+-06B6D4?logo=tailwindcss" alt="Tailwind CSS" class="badge">
563+
</div>
564+
565+
<!-- 新增徽章 -->
566+
<div class="badges-container">
567+
<img src="https://img.shields.io/badge/demo-live-success" alt="Live Demo" class="badge">
568+
<img src="https://img.shields.io/badge/CI%2FCD-GitHub%20Actions-2088FF?logo=githubactions" alt="CI/CD" class="badge">
569+
<img src="https://img.shields.io/badge/tests-passing-brightgreen" alt="Tests" class="badge">
570+
<img src="https://img.shields.io/badge/docker-ready-blue?logo=docker" alt="Docker Ready" class="badge">
571+
</div>
572+
573+
<p>ArrowTower 是一个基于 Polkadot 生态的地理位置打卡平台,支持一键式平台部署,多场景适用,通过<strong>零 Gas 费</strong>后端代铸造技术,让用户无门槛体验 Web3。</p>
442574
<p>首期聚焦箭塔村乡村旅游场景,游客完成特色路线打卡和互动任务后,系统自动发放独特 NFT 数字纪念品,无需用户了解Gas费或支付费用,学习钱包使用与签名。</p>
443-
<p>平台可快速拓展至 <strong>Web3 会展活动</strong><strong>城市文旅探索</strong><strong>教育研学</strong><strong>商业营销</strong><strong>公益活动</strong> 等多个商业场景。通过链上身份验证和可验证数字凭证,为文旅、会展、教育、营销等行业提供创新的用户互动和数字资产解决方案。</p>
575+
576+
<div class="center-image smaller-image">
577+
<img src="/ppt/snapshot.png" alt="项目截图">
578+
</div>
444579
</div>
445580
</section>
446581

@@ -513,10 +648,10 @@ <h4>🤝 社区与公益活动</h4>
513648
</div>
514649
</section>
515650

516-
<!-- 技术架构 -->
651+
<!-- 技术栈 -->
517652
<section class="slide" id="slide7">
518653
<div class="slide-content fade-in">
519-
<h2>技术架构</h2>
654+
<h2>技术栈</h2>
520655
<div class="tech-stack">
521656
<div class="tech-category">
522657
<h4>前端技术栈</h4>
@@ -525,6 +660,7 @@ <h4>前端技术栈</h4>
525660
<li>Tailwind CSS + shadcn/ui</li>
526661
<li>wagmi + viem</li>
527662
<li>NextAuth.js</li>
663+
<li>TypeScript 5.0+</li>
528664
</ul>
529665
</div>
530666
<div class="tech-category">
@@ -533,6 +669,7 @@ <h4>后端技术栈</h4>
533669
<li>Next.js API Routes</li>
534670
<li>Prisma ORM</li>
535671
<li>后端代铸造技术</li>
672+
<li>PostgreSQL / MySQL / SQLite</li>
536673
</ul>
537674
</div>
538675
<div class="tech-category">
@@ -541,45 +678,90 @@ <h4>区块链技术</h4>
541678
<li>PolkaVM 虚拟机</li>
542679
<li>Polkadot Hub Testnet</li>
543680
<li>智能合约系统</li>
681+
<li>Hardhat 开发框架</li>
682+
</ul>
683+
</div>
684+
</div>
685+
<div class="tech-stack">
686+
<div class="tech-category">
687+
<h4>部署与运维</h4>
688+
<ul>
689+
<li>Docker + docker-compose</li>
690+
<li>Kubernetes</li>
691+
<li>GitHub Actions CI/CD</li>
692+
<li>Netlify 部署</li>
693+
</ul>
694+
</div>
695+
<div class="tech-category">
696+
<h4>智能合约</h4>
697+
<ul>
698+
<li>Solidity</li>
699+
<li>Minter 合约</li>
700+
<li>NFT 合约</li>
701+
<li>队列铸造机制</li>
702+
</ul>
703+
</div>
704+
<div class="tech-category">
705+
<h4>其他技术</h4>
706+
<ul>
707+
<li>地理位置验证</li>
708+
<li>二维码扫描</li>
709+
<li>任务管理系统</li>
710+
<li>数据统计看板</li>
544711
</ul>
545712
</div>
546713
</div>
547-
<div class="architecture">
548-
<svg viewBox="0 0 800 400" xmlns="http://www.w3.org/2000/svg">
549-
<!-- 系统架构图 -->
550-
<rect x="50" y="50" width="700" height="300" fill="none" stroke="#10b981" stroke-width="2"
551-
rx="10" />
552-
553-
<!-- 用户界面层 -->
554-
<rect x="100" y="80" width="600" height="50" fill="#ecfdf5" stroke="#10b981" stroke-width="1" />
555-
<text x="400" y="110" text-anchor="middle" fill="#065f46" font-weight="bold">用户界面层 (Next.js)</text>
556-
<text x="400" y="130" text-anchor="middle" fill="#374151" font-size="14">React + Tailwind CSS +
557-
shadcn/ui</text>
558-
559-
<!-- 区块链交互层 -->
560-
<rect x="150" y="150" width="500" height="50" fill="#d1fae5" stroke="#10b981" stroke-width="1" />
561-
<text x="400" y="180" text-anchor="middle" fill="#065f46" font-weight="bold">区块链交互层 (wagmi +
562-
viem)</text>
563-
<text x="400" y="200" text-anchor="middle" fill="#374151" font-size="14">用户钱包连接与交易签名</text>
564-
565-
<!-- 业务逻辑层 -->
566-
<rect x="200" y="220" width="400" height="50" fill="#a7f3d0" stroke="#10b981" stroke-width="1" />
567-
<text x="400" y="250" text-anchor="middle" fill="#065f46" font-weight="bold">业务逻辑层 (API Routes +
568-
NextAuth)</text>
569-
<text x="400" y="270" text-anchor="middle" fill="#374151" font-size="14">地理位置验证 | 任务管理 | 数据统计</text>
570-
571-
<!-- 数据持久层 -->
572-
<rect x="250" y="290" width="300" height="50" fill="#6ee7b7" stroke="#10b981" stroke-width="1" />
573-
<text x="400" y="320" text-anchor="middle" fill="#065f46" font-weight="bold">数据持久层 (Prisma +
574-
Database)</text>
575-
<text x="400" y="340" text-anchor="middle" fill="#374151" font-size="14">用户数据 | 打卡记录 | 任务进度</text>
576-
</svg>
714+
</div>
715+
</section>
716+
717+
<!-- 技术架构 -->
718+
<section class="slide" id="slide8">
719+
<div class="slide-content fade-in">
720+
<h2>技术架构</h2>
721+
<div class="arch-container">
722+
<!-- 用户界面层 -->
723+
<div class="arch-layer arch-ui">
724+
<h4>用户界面层 (Next.js)</h4>
725+
<p>React + Tailwind CSS + shadcn/ui</p>
726+
</div>
727+
728+
<div class="arch-connector"></div>
729+
730+
<!-- 区块链交互层 -->
731+
<div class="arch-layer arch-blockchain">
732+
<h4>区块链交互层 (wagmi + viem)</h4>
733+
<p>用户钱包连接与交易签名</p>
734+
</div>
735+
736+
<div class="arch-connector"></div>
737+
738+
<!-- 业务逻辑层 -->
739+
<div class="arch-layer arch-business">
740+
<h4>业务逻辑层 (API Routes + NextAuth)</h4>
741+
<p>地理位置验证 | 任务管理 | 数据统计</p>
742+
</div>
743+
744+
<div class="arch-connector"></div>
745+
746+
<!-- 数据持久层 -->
747+
<div class="arch-layer arch-data">
748+
<h4>数据持久层 (Prisma + Database)</h4>
749+
<p>用户数据 | 打卡记录 | 任务进度</p>
750+
</div>
751+
752+
<div class="arch-connector"></div>
753+
754+
<!-- 区块链层 -->
755+
<div class="arch-layer arch-chain">
756+
<h4>区块链层 (PolkaVM + Testnet)</h4>
757+
<p>Polkadot Hub Testnet | Smart Contracts</p>
758+
</div>
577759
</div>
578760
</div>
579761
</section>
580762

581763
<!-- 核心功能模块 -->
582-
<section class="slide" id="slide8">
764+
<section class="slide" id="slide9">
583765
<div class="slide-content fade-in">
584766
<h2>核心功能模块</h2>
585767
<div class="scenario-grid">
@@ -612,7 +794,7 @@ <h4>🚀 部署运维模块</h4>
612794
</section>
613795

614796
<!-- 致谢页 -->
615-
<section class="slide" id="slide9">
797+
<section class="slide" id="slide10">
616798
<div class="slide-content fade-in">
617799
<h2 class="acknowledgement-title">感谢大家观看</h2>
618800
<h2 class="acknowledgement-title">鸣谢</h2>
@@ -634,7 +816,7 @@ <h2 class="acknowledgement-title">鸣谢</h2>
634816
<div class="nav-btn" id="next-btn"></div>
635817
</div>
636818

637-
<div class="slide-counter" id="slide-counter">1 / 9</div>
819+
<div class="slide-counter" id="slide-counter">1 / 10</div>
638820

639821
<script>
640822
document.addEventListener('DOMContentLoaded', function () {

0 commit comments

Comments
 (0)