Skip to content

Repository files navigation

智练 (ZhiLian) — 智能刷题练习平台

「人人可建题库、处处可刷题」

一款基于 Expo (React Native) + Supabase 的跨平台智能刷题 App,支持 iOS / Android。用户可自主创建或导入题库,支持单选题、多选题、判断题、填空题、简答题共五种题型,提供随机练习、题库练习、试卷模式、错题重练、收藏练习五种练习方式,搭配每日打卡、错题自动收集、题目收藏、答题统计分析等学习辅助功能。


✨ 核心功能

功能 说明
用户认证 邮箱注册/登录,SecureStore 加密存储,会话自动恢复
题库管理 手动录题(5 种题型动态表单)、JSON / CSV / DOCX 智能导入、搜索筛选分页、标签管理(创建/重命名/级联删除)、导入题目自动以文件名创建独立标签
答题系统 5 种题型交互、自由练习(即时判分+解析)、试卷模式(统一提交打分)、答题计时器
试卷模式 创建试卷、从题库选题排序、模拟真实考试流程
每日打卡 完成 20 题自动打卡、日历热力图、连续天数统计
错题本 答题错误自动收录、错误次数记录、错题重练
题目收藏 答题中一键星标、独立收藏列表、收藏练习、收藏状态即时显示
学习统计 总答题数、正确率、各题型进度条、薄弱知识点排行
数据导出 一键导出全部数据(题库、错题、收藏、打卡)为 JSON

亮点

  • DOCX 智能解析引擎 — 上传 Word 试卷自动识别题目结构,过滤标题/章节标记
  • 题型自适应表单 — 切换题型时表单即时变化,支持最多 8 个选项(A-H)
  • 智能判分 — 简答题关键词匹配、填空题精确比对,多选/填空/简答需确认后才判分
  • 离线优先架构 — 本地 SQLite 缓存全量数据,断网可用,网络恢复后无缝同步
  • SafeArea 适配 — 动态安全区适配,支持 iPhone Dynamic Island / 刘海屏 / Home Indicator

🛠 技术栈

技术
框架 Expo SDK 56 + React Native 0.85
语言 TypeScript 6.0
样式 twrnc (Tailwind CSS for React Native)
导航 React Navigation 7
状态管理 Zustand + TanStack React Query
后端 Supabase (Auth + Database + RLS)
离线存储 Expo SQLite
打包 EAS Build → APK / iOS Simulator Build

🚀 快速开始

前置条件

  • Node.js ≥ 18
  • Expo CLI (npm install -g expo-cli)
  • Supabase 项目(免费创建:supabase.com
  • 如要使用手机启动,要使手机和运行开发服务器的PC在同一网络下

安装

git clone https://github.com/ThousandMaway/zhilian.git
cd zhilian/quiz-app
npm install

配置环境变量

cp .env.example .env

编辑 .env,填入你的 Supabase 项目 URL 和 anon key:

EXPO_PUBLIC_SUPABASE_URL=https://your-project-id.supabase.co
EXPO_PUBLIC_SUPABASE_ANON_KEY=your-anon-key

初始化数据库

在 Supabase 控制台的 SQL Editor 中,按顺序执行 supabase/migrations/ 下的迁移文件(001 → 003 → 004)。

启动开发服务器

npm start

用 Expo Go 扫码,或按 a (Android) / i (iOS) 启动模拟器。


🤖 AI 简答题判题(可选)

不配置也能正常使用——简答题会使用关键词匹配算法判分。如需 AI 智能评分:

1. 部署 Edge Function

supabase functions deploy ai-evaluate --no-verify-jwt

2. 设置 API Key(三选一)

# OpenAI
supabase secrets set OPENAI_API_KEY=sk-xxx

# DeepSeek(更便宜)
supabase secrets set OPENAI_API_KEY=sk-xxx
supabase secrets set AI_BASE_URL=https://api.deepseek.com/v1
supabase secrets set AI_MODEL=deepseek-chat

# 其他兼容 OpenAI 格式的 API
supabase secrets set OPENAI_API_KEY=sk-xxx
supabase secrets set AI_BASE_URL=https://your-api.com/v1
supabase secrets set AI_MODEL=your-model

3. 执行 004 迁移建 ai_usage(速率限制用)

未配 AI 时,简答题自动降级为关键词匹配,评分来源标注为 📋。


📁 项目结构

quiz-app/
├── App.tsx                    # 入口
├── src/
│   ├── screens/               # 页面:Auth, Home, Practice, Profile, Questions
│   ├── components/            # 通用组件 (QuizComponent)
│   ├── navigation/            # React Navigation 路由
│   ├── stores/                # Zustand 状态管理
│   ├── queries/               # React Query (Supabase CRUD)
│   ├── lib/                   # 工具:DOCX解析、Supabase客户端、模板
│   ├── db/                    # SQLite 离线数据库
│   ├── types/                 # TypeScript 类型定义
│   └── constants/             # 常量
├── supabase/
│   └── migrations/            # 数据库迁移脚本
├── test-data/                 # 示例题库 (JSON)
└── docs/                      # 项目文档、计划书、演示脚本

📱 构建

# Android APK
npx eas build --platform android --profile preview

# iOS 模拟器
npx eas build --platform ios --profile preview

Android APK 可直接安装到手机(支持华为等国产机型,无需应用商店)。


📄 许可证

MIT License


版本:v1.3 | 状态:MVP 完成,41 个 TypeScript 源文件,全部 bug 已修复

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages