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% ;
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