Salih438/Teknoshop

GitHub: Salih438/Teknoshop

一个基于 Next.js 全栈技术构建的安全导向型电商实践平台,集成了完整的前台购物与后台管理功能。

Stars: 0 | Forks: 0

# 🛒 Teknoshop — 现代电商平台 **Teknoshop** 是一个使用现代 Web 技术开发的 full-stack 电商平台,包含前端用户界面和后台管理面板。 在项目开发过程中,不仅关注用户界面;还重点关注了**数据完整性、身份验证、基于角色的访问控制、IDOR 防护、API 安全、Rate limiting、数据验证、响应式设计和 production deployment** 等软件工程和 Web 安全问题。 ## 🌐 演示与代码仓库 | 资源 | 链接 | | ------------ | ---------------------------------------------------------------- | | 🚀 在线演示 | [访问 Teknoshop](https://teknoshop-salih14.vercel.app/) | | 💻 GitHub | [查看代码仓库](https://github.com/Salih438/Teknoshop) | # 🎯 项目目的 本项目的主要目的是使用现代 Web 技术,端到端实现真实电商系统中可能遇到的**用户、管理、数据管理、安全和部署需求。** 在项目开发时,特别关注了以下方面: * 可扩展的应用架构 * Type-safe 数据访问 * Authentication 和 Authorization * Role-Based Access Control (RBAC) * IDOR 防护 * API 输入验证 * Rate limiting * 响应式用户体验 * Production deployment # 📸 项目预览 ## 🏠 主页 Teknoshop Ana Sayfa ## 📦 产品详情页 Teknoshop Ürün Detay Sayfası ## 🛒 购物车 & 结算 Teknoshop Sepet ve Checkout ## ⚙️ 管理面板 Teknoshop Admin Dashboard # ✨ 特性 ## 🛍️ 前端用户侧 * 产品列表和详情查看 * 基于分类和品牌的筛选 * 产品搜索 * 价格和排序选项 * 产品变体 * 库存检查 * 收藏夹 * 产品评论 * 购物车管理 * 地址管理 * 订单创建 * 订单历史 * 订单详情 * 优惠券使用 * 响应式用户界面 # ⚙️ 管理面板 管理面板用于集中管理系统中的核心电商操作。 ## 📦 产品管理 * 创建产品 * 编辑产品 * 删除产品 * 品牌和分类管理 * 产品图片管理 * SKU 和库存跟踪 * 产品变体 * 启用/停用产品管理 ## 📋 订单管理 * 订单列表 * 查看订单详情 * 订单状态管理 * 订单取消 * 已取消订单的库存检查 ## 🧩 其他管理模块 * 分类管理 * 品牌管理 * 优惠券管理 * 用户管理 * 系统统计数据 * 管理员访问控制 # 🔐 安全 在项目开发过程中,应用安全被视为基本要求之一。 ## 🔑 身份验证 用户身份验证通过 **Clerk** 进行处理。 ## 👥 基于角色的访问控制 (RBAC) 在管理面板和管理操作中实施了 **Role-Based Access Control (RBAC)**。 根据用户的角色,限制其可以访问的资源和执行的操作。 ## 🛡️ IDOR 防护 为了不完全信任客户端直接发送的资源 ID,实施了服务端归属和授权检查。 专门用于防止用户越权访问其他用户的以下资源: * 订单 * 地址 * 收藏夹 * 个人资料数据 ## ✅ API 验证 在 API 输入端使用 **Zod** 检查: * 缺失的字段 * 无效的数据类型 * 意外的值 * 无效的 request body ## 🚦 Rate Limiting 在关键的 API endpoint 上实施了 **Rate Limiting** 机制,以限制过度请求。 ## 🧱 安全标头 在 production 环境中配置了以下 HTTP 安全标头: * Content-Security-Policy (CSP) * X-Frame-Options * 其他已配置的 HTTP security headers ## 🔒 环境变量 数据库连接信息和 API 密钥不保存在 source code 中,而是通过环境变量进行管理。 # 🏗️ 技术架构 项目构建在 **Next.js App Router** 架构之上。 总体架构: ``` ┌─────────────────────┐ │ Client │ │ Desktop / Mobile │ └──────────┬──────────┘ │ ▼ ┌─────────────────────┐ │ Next.js │ │ App Router │ └──────────┬──────────┘ │ ┌────────────────┼────────────────┐ ▼ ▼ ▼ UI / Server Server Actions API Routes Components │ │ ┌────────────┴────────────┐ │ Authentication │ │ Authorization / RBAC │ │ Zod Validation │ │ Rate Limiting │ └────────────┬────────────┘ │ ▼ ┌────────────────┐ │ Prisma ORM │ └───────┬────────┘ │ ▼ ┌────────────────┐ │ PostgreSQL │ └────────────────┘ ``` Frontend 和 backend 操作在同一个 Next.js 应用中以模块化的方式进行配置。 # 🛠️ 技术 Stack ## 前端 * Next.js * React * TypeScript * Tailwind CSS ## 后端 * Next.js Server Actions * Next.js API Routes * Node.js ## 数据库 * PostgreSQL * Prisma ORM ## 身份验证 * Clerk ## State Management * Zustand ## 验证 * Zod ## 部署 * Vercel ## 开发工具 * Git * GitHub * Prisma Studio * VS Code # 🗄️ 数据库 通过 **Prisma ORM** 进行数据访问。 在 PostgreSQL 上创建了一个关系型数据模型,用于管理用户、产品、分类、品牌、订单、购物车、收藏夹、地址、优惠券及其相关关系。 借助 Prisma,可实现: * Type-safe database queries * Migration 管理 * 关系型数据访问 * Prisma Client * Database schema 管理 # 🚀 本地开发 ## 1. 克隆代码仓库 ``` git clone https://github.com/Salih438/Teknoshop.git cd Teknoshop ``` ## 2. 安装依赖包 ``` npm install ``` ## 3. 环境变量 在项目根目录下创建 `.env.local` 文件。 示例: ``` DATABASE_URL="postgresql://USER:PASSWORD@HOST/DATABASE?sslmode=require" NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY="..." CLERK_SECRET_KEY="..." UPLOADTHING_SECRET="..." UPLOADTHING_APP_ID="..." NEXT_PUBLIC_APP_URL="http://localhost:3000" # 项目中使用的其他 service variables # 应使用您自己账户中的值进行填充。 ``` ## 4. 生成 Prisma Client ``` npx prisma generate ``` ## 5. 准备数据库 应用项目的 migration: ``` npx prisma migrate dev ``` ## 6. 启动 Development server ``` npm run dev ``` 应用程序默认运行在以下地址: ``` http://localhost:3000 ``` # 🧪 质量与 Production 检查 在 production deployment 之前,对应用程序的不同层级进行了各种检查。 ## TypeScript ``` npx tsc --noEmit ``` 已执行 TypeScript 类型检查。 ## Production Build ``` npm run build ``` Production build 过程已成功完成。 ## 数据库 检查了以下内容: * Prisma schema 检查 * Database 连接 * 关系型数据访问 * Migration 结构 ## 安全性 审查了以下安全机制: * Authentication * RBAC * IDOR 防护 * API 验证 * Rate limiting * Security headers ## 端到端用户流程 基本的用户流程已进行端到端的手动检查: ``` Login ↓ Product ↓ Favorite ↓ Cart ↓ Address ↓ Checkout ↓ Order ↓ Order Detail ``` # 📱 响应式设计 本程序是在兼顾桌面和移动屏幕的情况下开发的。 检查的主要区域包括: * Navbar * Search * Product Cards * Product Detail * Cart * Checkout * Account * Admin interfaces 同时还审查了移动设备上触摸交互的可用性。 # ☁️ 部署 Production deployment 通过 **Vercel** 进行。 在部署过程中检查了: * Production 环境变量 * PostgreSQL 连接 * Prisma * Authentication * API endpoint * Production build 部署后,再次检查了 production 环境中的核心页面和用户流程。 # ⚠️ 项目范围与限制 本项目不打算作为真实的商业商店使用,而是为了**通过实践深入学习 full-stack Web 开发、电商架构、Web 安全和部署流程**而设计的。 支付流程仅用于演示/模拟目的,并非为处理真实金融交易而设计。 在 production 环境中,不应使用真实的用户数据或真实的支付操作。 # 🎯 技术收获 在项目开发过程中,在以下领域获得了实践经验: * Full-stack Web 开发 * Next.js App Router * React * TypeScript * REST API * Server Actions * PostgreSQL * Prisma ORM * Authentication * Authorization * RBAC * IDOR 防护 * API 验证 * Rate Limiting * Web 安全 * 响应式 UI 开发 * Production Deployment * Git / GitHub * Database Design # 👨‍💻 开发者 **Salih Balta** 软件工程学生 吉雷松大学 (Gümüşhane Üniversitesi) * GitHub: [Salih438](https://github.com/Salih438) * LinkedIn: [Salih Balta](https://www.linkedin.com/in/salih-balta-68337b340/) ## ⭐ 如果您喜欢这个项目 如果您觉得这个项目有用,可以在代码仓库留下一个 ⭐。
标签:PostgreSQL, Syscall, TypeScript, Web开发, 全栈, 安全插件, 测试用例, 电商平台, 自动化攻击