# kxxs-admin-nuxt **Repository Path**: east119/kxxs-admin-nuxt ## Basic Information - **Project Name**: kxxs-admin-nuxt - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-14 - **Last Updated**: 2026-05-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 氪星小说管理后台 (Nuxt 4) 基于 Nuxt 4 + Vue 3 + Element Plus + Supabase 构建的管理后台系统。 ## 技术栈 - **前端**: Nuxt 4, Vue 3, Element Plus - **后端**: Nitro, Supabase (PostgreSQL) - **部署**: Vercel ## 功能特性 - ✅ 用户认证(登录/登出) - ✅ 仪表盘数据展示 - ✅ 用户管理(CRUD) - ✅ 小说管理(CRUD) - ✅ 分类管理 - ✅ 权限控制 - ✅ 响应式设计 ## 快速开始 ### 1. 安装依赖 ```bash npm install ``` ### 2. 配置环境变量 复制 `.env.example` 为 `.env` 并填写 Supabase 配置: ```bash cp .env.example .env ``` 编辑 `.env` 文件: ```env SUPABASE_URL=https://your-project.supabase.co SUPABASE_ANON_KEY=your-anon-key ``` ### 3. 启动开发服务器 ```bash npm run dev ``` 访问 http://localhost:3000 ### 4. 构建生产版本 ```bash npm run build ``` ## Supabase 数据库配置 ### 用户表 (users) ```sql CREATE TABLE users ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), email VARCHAR(255) UNIQUE NOT NULL, username VARCHAR(100), role VARCHAR(20) DEFAULT 'user', status VARCHAR(20) DEFAULT 'active', avatar VARCHAR(500), created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW() ); -- 启用 RLS ALTER TABLE users ENABLE ROW LEVEL SECURITY; -- 创建策略 CREATE POLICY "Users can view their own data" ON users FOR SELECT USING (auth.uid() = id); CREATE POLICY "Admins can view all users" ON users FOR SELECT USING ( EXISTS (SELECT 1 FROM users WHERE id = auth.uid() AND role = 'admin') ); ``` ### 小说表 (novels) ```sql CREATE TABLE novels ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), title VARCHAR(255) NOT NULL, author VARCHAR(100), category_id UUID REFERENCES categories(id), description TEXT, cover VARCHAR(500), word_count INTEGER DEFAULT 0, view_count INTEGER DEFAULT 0, status VARCHAR(20) DEFAULT 'ongoing', created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW() ); -- 创建索引 CREATE INDEX idx_novels_category ON novels(category_id); CREATE INDEX idx_novels_status ON novels(status); ``` ### 分类表 (categories) ```sql CREATE TABLE categories ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), name VARCHAR(100) NOT NULL, slug VARCHAR(100) UNIQUE, description TEXT, created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW() ); ``` ## 项目结构 ``` kxxs-admin-nuxt/ ├── pages/ # 页面组件 │ ├── login.vue # 登录页 │ ├── dashboard/ # 仪表盘 │ ├── users/ # 用户管理 │ └── novels/ # 小说管理 ├── layouts/ # 布局组件 │ └── default.vue # 默认布局 ├── middleware/ # 中间件 │ ├── auth.js # 认证中间件 │ └── guest.js # 访客中间件 ├── plugins/ # 插件 │ └── supabase.js # Supabase 客户端 ├── composables/ # 组合式函数 │ └── useAuth.js # 认证逻辑 ├── public/ # 静态资源 ├── nuxt.config.ts # Nuxt 配置 └── package.json # 依赖配置 ``` ## 部署到 Vercel ### 1. 推送代码到 Git ```bash git init git add . git commit -m "Initial commit" git push origin main ``` ### 2. 在 Vercel 中导入项目 1. 访问 https://vercel.com 2. 点击 "Import Project" 3. 选择你的 Git 仓库 4. 配置环境变量: - `SUPABASE_URL` - `SUPABASE_ANON_KEY` 5. 点击 "Deploy" ### 3. 配置自定义域名(可选) 在 Vercel 项目设置中添加自定义域名。 ## 默认管理员账号 需要在 Supabase 中手动创建: ```sql INSERT INTO users (email, username, role, status) VALUES ('admin@example.com', 'admin', 'admin', 'active'); ``` 然后使用 Supabase Auth 创建认证账号。 ## 开发说明 ### 添加新页面 在 `pages/` 目录下创建 `.vue` 文件: ```vue ``` ### 使用 Supabase 在组件中使用: ```javascript const { $supabase } = useNuxtApp() const { data, error } = await $supabase .from('your_table') .select('*') ``` ## License MIT