InsightSphere 是一个实时、交互式的加密货币数据可视化仪表盘应用。它从 CoinGecko API 获取实时市场数据,通过后端服务进行处理和缓存,并通过前端界面以多种图表形式动态展示给用户。
- Flask (Python): 轻量级Web框架,易于开发和部署,拥有丰富的扩展生态
- Flask-CORS: 处理跨域请求,确保前后端分离架构下的正常通信
- Requests: 简洁强大的HTTP库,用于调用CoinGecko API
- Python内置缓存: 内存缓存机制,简单高效,满足60秒刷新需求的同时避免API限流
- 原生HTML/CSS/JavaScript: 无需构建步骤,直接运行,降低部署复杂度
- Bootstrap 5: 现代化的响应式UI框架,确保在桌面和移动设备上的良好体验
- Chart.js: 轻量级、响应式的图表库,支持丰富的交互效果和动画
- 前后端分离: 清晰的职责分离,便于独立开发和维护
- 内存缓存机制: 智能缓存策略,平衡数据实时性和API调用频率
- 错误处理: 完善的异常处理机制,确保应用的稳定性和用户体验
- ✅ 全球市场概览卡片(总市值、24小时交易量、比特币市值占比)
- ✅ Top 10加密货币数据表格(排名、图标、价格、涨跌幅、市值)
- ✅ 交互式饼图展示市值分布
- ✅ 每60秒自动刷新数据
- ✅ 响应式设计,适配各种设备
- ✅ 友好的错误提示和处理
- ✅ 智能缓存机制,避免API限流
- Python 3.7+
- pip包管理器
- 克隆项目
cd D:\Work\arena\web_demo\kimi- 安装Python依赖
# 创建虚拟环境(推荐)
python -m venv venv
# 激活虚拟环境
# Windows:
venv\Scripts\activate
# Linux/Mac:
# source venv/bin/activate
# 安装依赖
pip install -r backend/requirements.txt- 启动后端服务
cd backend
python app.py后端服务将在 http://localhost:5000 启动
- 启动前端服务
# 新终端窗口
cd frontend
# 使用Python内置HTTP服务器
python -m http.server 8080前端应用将在 http://localhost:8080 启动
kimi/
├── backend/ # Flask后端服务
│ ├── app.py # 主应用文件
│ ├── requirements.txt # Python依赖
│ └── Dockerfile # Docker配置
├── frontend/ # 前端应用
│ ├── index.html # 主页面
│ ├── css/ # 样式文件
│ ├── js/ # JavaScript文件
│ └── assets/ # 静态资源
├── docker-compose.yml # Docker Compose配置
└── README.md # 项目文档
docker-compose up -d# 构建后端镜像
cd backend
docker build -t insightsphere-backend .
# 构建前端镜像
cd ../frontend
docker build -t insightsphere-frontend .
# 启动服务
cd ..
docker-compose up -d访问地址:
- 前端应用: http://localhost:8080
- 后端API: http://localhost:5000
GET /api/global
GET /api/top10
- 缓存有效期: 60秒
- 缓存键: 不同的API端点使用不同的缓存键
- 缓存更新: 每次请求时检查缓存是否过期,过期则重新获取数据
- 错误处理: API请求失败时返回缓存数据(如果可用)或友好的错误信息
- API请求失败: 返回缓存数据或错误信息,前端显示友好提示
- 网络超时: 设置合理的超时时间,避免长时间等待
- 数据格式错误: 验证API返回的数据格式,确保前端正常显示
- 跨域问题: 使用Flask-CORS处理跨域请求
- 无敏感信息: CoinGecko API为公开API,无需API密钥
- 输入验证: 后端对所有输入进行验证和清理
- 错误信息: 不暴露内部实现细节的错误信息
- CORS配置: 合理配置跨域访问权限
- 智能缓存: 减少不必要的API调用
- 异步加载: 前端异步加载数据,提升用户体验
- 响应式设计: 适配不同设备,减少资源消耗
- CDN资源: 使用CDN加载第三方库,提升加载速度
欢迎提交Issue和Pull Request来改进项目。
MIT License - 详见LICENSE文件