{"id":29028427,"url":"https://github.com/lecheeel/sayit","last_synced_at":"2026-05-07T06:32:42.860Z","repository":{"id":301008428,"uuid":"1007825324","full_name":"Lecheeel/sayit","owner":"Lecheeel","description":"🎓 现代化校园社交平台 - 集成表白墙、校园圈、跳蚤市场、悬赏任务的全功能大学生社交应用，基于Next.js + React + TypeScript构建 🎓 Modern Campus Social Platform - Full-featured university social app with confession wall, campus circle, marketplace, and task system, built with Next.js + React + TypeScript","archived":false,"fork":false,"pushed_at":"2025-06-24T17:05:33.000Z","size":319,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-06-24T18:20:00.416Z","etag":null,"topics":["campus","campus-life","college","college-project","marketplace","nextjs","prisma","react","social-network","social-networks","sqlite","student","typescript","web-application","web-development","webapp","website"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Lecheeel.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-06-24T15:30:49.000Z","updated_at":"2025-06-24T17:05:37.000Z","dependencies_parsed_at":"2025-06-24T18:20:03.146Z","dependency_job_id":"2bf7c69c-aea2-4c7d-9ec4-472cc6c3be3c","html_url":"https://github.com/Lecheeel/sayit","commit_stats":null,"previous_names":["lecheeel/sayit"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Lecheeel/sayit","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lecheeel%2Fsayit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lecheeel%2Fsayit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lecheeel%2Fsayit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lecheeel%2Fsayit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Lecheeel","download_url":"https://codeload.github.com/Lecheeel/sayit/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lecheeel%2Fsayit/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262018884,"owners_count":23245626,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["campus","campus-life","college","college-project","marketplace","nextjs","prisma","react","social-network","social-networks","sqlite","student","typescript","web-application","web-development","webapp","website"],"created_at":"2025-06-26T07:11:22.961Z","updated_at":"2026-05-07T06:32:42.853Z","avatar_url":"https://github.com/Lecheeel.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🎓 SayIt - 现代化校园社交平台\n\n[![Next.js](https://img.shields.io/badge/Next.js-15.3-black)](https://nextjs.org/)\n[![React](https://img.shields.io/badge/React-19.0-blue)](https://reactjs.org/)\n[![TypeScript](https://img.shields.io/badge/TypeScript-5-blue)](https://www.typescriptlang.org/)\n[![Prisma](https://img.shields.io/badge/Prisma-6.10-green)](https://www.prisma.io/)\n[![Tailwind CSS](https://img.shields.io/badge/Tailwind_CSS-4-38B2AC)](https://tailwindcss.com/)\n\n\u003e 一个专为大学生设计的全功能校园社交平台，连接校园生活的每一个精彩瞬间\n\n## ✨ 项目简介\n\nSayIt 是一个现代化的校园社交平台，旨在为大学生提供一个便捷、安全、有趣的数字化交流空间。通过集成表白墙、校园圈、跳蚤市场和悬赏任务等功能模块，让校园生活更加丰富多彩。\n\n### 🎯 核心特色\n\n- **💝 表白墙** - 匿名表白功能，传递校园爱意\n- **🎪 校园圈** - 分享校园生活点滴，互动交流\n- **🛒 跳蚤市场** - 二手物品交易，绿色环保\n- **🎯 悬赏任务** - 发布和接收各类校园任务\n- **🔍 智能搜索** - 全站内容搜索，快速找到所需\n- **👤 完整用户系统** - 注册、登录、个人资料管理\n\n### 🛠️ 技术亮点\n\n- **现代化架构** - 基于 Next.js 15 + React 19 构建\n- **类型安全** - 全面使用 TypeScript 开发\n- **响应式设计** - 完美适配移动端和桌面端\n- **性能优化** - 瀑布流布局、懒加载、图片压缩\n- **数据安全** - JWT 认证 + 数据加密存储\n- **实时交互** - 流畅的用户体验和实时反馈\n\n## 🚀 快速开始\n\n### 环境要求\n\n```bash\nNode.js \u003e= 18.0.0\nnpm \u003e= 9.0.0\n```\n\n### 安装与运行\n\n```bash\n# 1. 克隆项目\ngit clone https://github.com/Lecheeel/sayit.git\ncd sayit\n\n# 2. 一键安装与初始化\nnpm run setup\n\n# 3. 启动开发服务器\nnpm run dev\n```\n\n访问 `http://localhost:\u003cPORT\u003e`（默认 3000）开始使用。例如：`http://localhost:3000`\n\n### 🔐 默认账户\n\n初始化完成后，系统会创建一个默认管理员账户且密码为随机强密码：\n\n```\n用户名: admin\n密码: [随机强密码，将在初始化日志中输出，并保存到 admin_credentials.txt]\n```\n\n### 环境变量配置\n\n创建 `.env.local` 文件：\n\n```bash\n# JWT 认证密钥（必填）\nJWT_SECRET=your-super-secret-key-here\n\n# HCaptcha 人机验证（可选）\nNEXT_PUBLIC_HCAPTCHA_SITE_KEY=your-hcaptcha-site-key\nHCAPTCHA_SECRET_KEY=your-hcaptcha-secret-key\n```\n\n## 📁 项目结构\n\n```\nsayit/\n├── src/\n│   ├── app/                     # Next.js App Router 页面\n│   │   ├── api/                 # API 路由\n│   │   │   ├── auth/           # 用户认证\n│   │   │   ├── confessions/    # 表白墙\n│   │   │   ├── posts/          # 校园圈\n│   │   │   ├── market/         # 跳蚤市场\n│   │   │   ├── tasks/          # 悬赏任务\n│   │   │   └── ...\n│   │   ├── confessions/        # 表白墙页面\n│   │   ├── posts/              # 校园圈页面\n│   │   ├── market/             # 跳蚤市场页面\n│   │   ├── tasks/              # 悬赏任务页面\n│   │   └── search/             # 搜索页面\n│   ├── components/             # React 组件\n│   │   ├── ui/                 # 基础 UI 组件\n│   │   ├── FeedCard.tsx        # 信息流卡片\n│   │   ├── FeedList.tsx        # 信息流列表\n│   │   ├── CreatePostDialog.tsx # 创建内容弹窗\n│   │   └── ...\n│   ├── lib/                    # 工具函数和 Hooks\n│   │   ├── auth.ts            # 认证逻辑\n│   │   ├── prisma.ts          # 数据库连接\n│   │   ├── constants.ts       # 常量定义\n│   │   └── ...\n│   ├── types/                  # TypeScript 类型定义\n│   └── middleware.ts           # Next.js 中间件\n├── prisma/                     # 数据库配置\n│   ├── schema.prisma          # 数据模型\n│   └── dev.db                 # SQLite 数据库\n├── public/                     # 静态资源\n├── scripts/                    # 工具脚本\n└── ...\n```\n\n## 🎯 功能模块\n\n### 1. 表白墙 💝\n- **匿名发布** - 支持匿名或实名表白\n- **图片上传** - 最多 9 张图片\n- **瀑布流布局** - 美观的双列布局\n- **互动功能** - 点赞、评论、浏览统计\n\n### 2. 校园圈 🎪\n- **分类管理** - 学习、生活、娱乐等分类\n- **标签系统** - 自定义标签标记\n- **多图展示** - 2x2 网格布局优化\n- **搜索高亮** - 智能搜索结果高亮\n\n### 3. 跳蚤市场 🛒\n- **商品管理** - 发布、编辑、删除商品\n- **状态跟踪** - 可售、已售、预订状态\n- **条件筛选** - 价格、品相、分类筛选\n- **位置信息** - 交易地点标记\n\n### 4. 悬赏任务 🎯\n- **任务发布** - 设置奖励和截止时间\n- **申请系统** - 任务申请和接收流程\n- **状态管理** - 开放、进行中、已完成\n- **分类筛选** - 学习、代办、技术等分类\n\n### 5. 搜索系统 🔍\n- **全站搜索** - 跨模块内容搜索\n- **高级筛选** - 时间、分类、排序筛选\n- **结果高亮** - 关键词高亮显示\n- **搜索历史** - 智能搜索建议\n\n## 🛠️ 技术栈\n\n### 前端技术\n- **[Next.js 15](https://nextjs.org/)** - React 全栈框架\n- **[React 19](https://reactjs.org/)** - 用户界面库\n- **[TypeScript](https://www.typescriptlang.org/)** - 类型安全的 JavaScript\n- **[Tailwind CSS](https://tailwindcss.com/)** - 原子化 CSS 框架\n- **[Lucide React](https://lucide.dev/)** - 现代图标库\n- **[Radix UI](https://www.radix-ui.com/)** - 无障碍 UI 组件\n\n### 后端技术\n- **[Next.js API Routes](https://nextjs.org/docs/api-routes/introduction)** - 服务端 API\n- **[Prisma](https://www.prisma.io/)** - 现代数据库 ORM\n- **[SQLite](https://www.sqlite.org/)** - 轻量级数据库\n- **[JWT](https://jwt.io/)** - 用户认证\n- **[bcryptjs](https://www.npmjs.com/package/bcryptjs)** - 密码加密\n\n### 开发工具\n- **[ESLint](https://eslint.org/)** - 代码规范检查\n- **[PostCSS](https://postcss.org/)** - CSS 处理器\n- **[Turbopack](https://turbo.build/pack)** - 快速构建工具\n\n## 🗄️ 数据模型\n\n### 核心数据表\n- **users** - 用户信息\n- **confessions** - 表白墙内容\n- **posts** - 校园圈帖子\n- **market_items** - 跳蚤市场商品\n- **tasks** - 悬赏任务\n- **comments** - 评论系统\n- **likes** - 点赞记录\n- **view_records** - 浏览记录\n\n### 数据关系\n- 用户与内容的多对多关系\n- 层级评论系统支持\n- 完整的点赞和浏览统计\n\n## 📜 可用脚本\n\n```bash\n# 开发\nnpm run dev                    # 启动开发服务器（默认 3000，可通过 -p 指定端口）\nnpm run dev:3000              # 指定端口 3000 启动\n\n# 构建\nnpm run build                 # 构建生产版本\nnpm run start                 # 启动生产服务器\n\n# 数据库\nnpm run db:push               # 推送数据库架构\nnpm run db:generate           # 生成 Prisma Client\nnpm run db:init               # 初始化数据库和示例数据\nnpm run db:studio             # 启动数据库管理界面\nnpm run db:reset              # 重置数据库\n\n# 其他\nnpm run lint                  # 代码规范检查\nnpm run setup                 # 一键安装和初始化\n```\n\n## 🎨 界面设计\n\n### 响应式布局\n- **移动端优先** - 完美适配手机和平板\n- **瀑布流布局** - 美观的双列/多列布局\n- **智能导航** - 滚动时自动隐藏/显示\n\n### 交互体验\n- **无限滚动** - 流畅的内容加载\n- **图片画廊** - 支持多图浏览和缩放\n- **实时反馈** - 即时的操作反馈\n- **Toast 通知** - 优雅的消息提示\n\n### 主题配色\n- **表白墙** - 粉色主题，温馨浪漫\n- **校园圈** - 蓝色主题，活泼友好\n- **跳蚤市场** - 绿色主题，清新自然\n- **悬赏任务** - 黄色主题，醒目活力\n\n## 🔐 安全特性\n\n### 用户认证\n- **JWT Token** - 安全的用户会话管理\n- **密码加密** - bcrypt 密码哈希存储\n- **角色权限** - 学生、管理员、版主权限控制\n\n### 数据安全\n- **输入验证** - 严格的输入数据验证\n- **XSS 防护** - 防止跨站脚本攻击\n- **文件上传** - 安全的图片上传处理\n- **敏感信息** - 环境变量安全管理\n\n## 🚀 性能优化\n\n### 前端优化\n- **代码分割** - 按需加载减少首屏时间\n- **图片优化** - 自动压缩和格式转换\n- **懒加载** - 图片和组件按需加载\n- **缓存策略** - 智能缓存提升体验\n\n### 后端优化\n- **数据库索引** - 优化查询性能\n- **分页查询** - 减少数据传输量\n- **并发处理** - 高效的数据库连接池\n- **错误处理** - 完善的错误处理机制\n\n## 🧪 开发指南\n\n### 本地开发\n```bash\n# 开发环境热重载\nnpm run dev\n\n# 查看数据库\nnpm run db:studio\n\n# 重置开发数据\nnpm run db:reset\n```\n\n### 代码规范\n- 使用 TypeScript 进行类型安全开发\n- 遵循 ESLint 代码规范\n- 组件使用 React Hooks 模式\n- 样式使用 Tailwind CSS 原子类\n\n### 贡献指南\n1. Fork 本项目\n2. 创建功能分支\n3. 提交代码修改\n4. 创建 Pull Request\n\n## 📄 许可证\n\n本项目基于 MIT 许可证开源 - 详见 [LICENSE](LICENSE) 文件\n\n## 🤝 联系我们\n\n- 提交 Issue：[GitHub Issues](https://github.com/your-username/sayit/issues)\n- 功能建议：[GitHub Discussions](https://github.com/your-username/sayit/discussions)\n- 邮件联系：your-email@example.com\n\n---\n\n\u003cdiv align=\"center\"\u003e\n\n**🎓 让校园生活更精彩！**\n\n[立即体验](https://your-demo-url.com) · [文档](https://your-docs-url.com) · [反馈](https://github.com/your-username/sayit/issues)\n\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flecheeel%2Fsayit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flecheeel%2Fsayit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flecheeel%2Fsayit/lists"}