Skip to content

Commit af380f3

Browse files
feat: Landing page redesign, Docker setup, contact/help pages, and auth improvements
- Redesign landing page: remove AI-heavy aesthetics, simplify hero/bento/CTA sections, add BorderGlow button effect, CountUp stats animation, and theme-aware gradients - Add BorderGlow component (edge glow on hover via CSS conic-gradient + pointer tracking) - Add Docker configs for web and api services with docker-compose.prod.yml - Add contact and help pages - Add AI upgrade modal component - Improve public header layout and responsiveness - Fix Google OAuth strategy and auth controller - Add explore page improvements - Update dev docs, README, and env examples
1 parent 091a107 commit af380f3

31 files changed

Lines changed: 2833 additions & 391 deletions

.dockerignore

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
# Dependencies
2+
node_modules
3+
**/node_modules
4+
5+
# Build outputs
6+
apps/api/dist
7+
apps/web/.next
8+
apps/web/out
9+
10+
# Environment files (never bake secrets into images)
11+
.env
12+
.env.local
13+
.env.*.local
14+
apps/api/.env
15+
apps/web/.env.local
16+
17+
# Git
18+
.git
19+
.gitignore
20+
21+
# Docker
22+
docker-compose*.yml
23+
**/Dockerfile
24+
25+
# Logs
26+
*.log
27+
npm-debug.log*
28+
29+
# OS
30+
.DS_Store
31+
Thumbs.db
32+
33+
# IDE
34+
.vscode
35+
.idea
36+
37+
# Test
38+
coverage
39+
**/*.test.ts
40+
**/*.spec.ts
41+
42+
# Docs
43+
*.md
44+
images
45+
plan
46+
learning

.env.example

Lines changed: 67 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,69 @@
1-
# ==================== 前端配置示例 ====================
2-
# 复制此文件到 apps/web/.env.local 并根据需要修改
1+
# DocStudio 环境变量配置
2+
# 使用方式:cp .env.example .env,然后修改下方所有变量
3+
#
4+
# ⚠️ 标注「必填」的项目不填写会导致服务无法启动
5+
# ⚠️ 标注「构建时」的 NEXT_PUBLIC_* 变量在 Docker 镜像构建时烧入,修改后需重新 build
36

4-
# API 地址
5-
NEXT_PUBLIC_API_URL=http://localhost:3001
7+
# ── 数据库(必填)────────────────────────────────────────────
8+
POSTGRES_USER=postgres
9+
POSTGRES_PASSWORD=change_me_strong_password
10+
POSTGRES_DB=docstudio
611

7-
# 环境
8-
NEXT_PUBLIC_ENV=development
12+
# ── 服务地址(必填,填写你的实际域名)────────────────────────
13+
# 本地测试用 http://localhost:3001 和 http://localhost:3000
14+
API_URL=https://api.yourdomain.com
15+
FRONTEND_URL=https://yourdomain.com
16+
17+
# ── 前端变量(必填 · 构建时烧入镜像)────────────────────────
18+
# ⚠️ 这些变量在 docker build 时固化到前端代码,改了必须重新构建镜像
19+
NEXT_PUBLIC_API_URL=https://api.yourdomain.com
20+
NEXT_PUBLIC_WEBSOCKET_URL=wss://api.yourdomain.com:1234
21+
NEXT_PUBLIC_CDN_URL=https://cdn.yourdomain.com
22+
NEXT_PUBLIC_SITE_URL=https://yourdomain.com
23+
24+
# ── JWT(必填)──────────────────────────────────────────────
25+
# 生成强密钥:openssl rand -base64 32
26+
JWT_SECRET=change_this_to_a_strong_random_secret
27+
JWT_EXPIRES_IN=7d
28+
29+
# ── 超级管理员(必填,首次启动自动创建)─────────────────────
30+
SUPER_ADMIN_EMAIL=admin@yourdomain.com
31+
SUPER_ADMIN_PASSWORD=change_me_strong_password
32+
33+
# ── MinIO 对象存储(必填)────────────────────────────────────
34+
MINIO_ACCESS_KEY=change_me_minio_access_key
35+
MINIO_SECRET_KEY=change_me_minio_secret_key
36+
MINIO_BUCKET=avatars
37+
MINIO_PUBLIC_ENDPOINT=https://cdn.yourdomain.com
38+
MINIO_USE_SSL=false
39+
40+
# ── SMTP 邮件(可选,不填则禁用邮件功能)─────────────────────
41+
# 支持:Gmail / QQ邮箱 / 企业邮箱 / SendGrid / 腾讯云SES 等
42+
SMTP_HOST=smtp.yourdomain.com
43+
SMTP_PORT=587
44+
SMTP_SECURE=false
45+
SMTP_USER=
46+
SMTP_PASS=
47+
SMTP_FROM="DocStudio" <noreply@yourdomain.com>
48+
49+
# ── AI 辅助写作(可选,不填则禁用 AI 功能)───────────────────
50+
# 支持 MiniMax / OpenAI / 其他 OpenAI 兼容 API
51+
AI_PROVIDER=minimax
52+
AI_API_KEY=
53+
AI_BASE_URL=https://api.minimax.io/v1
54+
AI_MODEL=MiniMax-Text-01
55+
AI_DAILY_LIMIT=50
56+
57+
# ── GitHub OAuth(可选)──────────────────────────────────────
58+
# 创建地址:https://github.com/settings/developers
59+
# ⚠️ 在 GitHub 后台填写的 Callback URL:{API_URL}/auth/github/callback
60+
# 例如:https://api.yourdomain.com/auth/github/callback
61+
GITHUB_CLIENT_ID=
62+
GITHUB_CLIENT_SECRET=
63+
64+
# ── Google OAuth(可选)──────────────────────────────────────
65+
# 创建地址:https://console.cloud.google.com
66+
# ⚠️ 在 Google Cloud 填写的授权重定向 URI:{API_URL}/auth/google/callback
67+
# 例如:https://api.yourdomain.com/auth/google/callback
68+
GOOGLE_CLIENT_ID=
69+
GOOGLE_CLIENT_SECRET=

.impeccable.md

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
# DocStudio Design Context
2+
3+
## Design Context
4+
5+
### Users
6+
Developers, technical teams, and knowledge workers managing documentation and wikis. They use DocStudio in focused work sessions — writing, reviewing, and organizing information. They are comfortable with technical interfaces and expect precision and reliability. The product is Chinese-first but built for a global developer audience.
7+
8+
### Brand Personality
9+
**温暖 · 人性化 · 亲和力** (Warm · Human · Approachable)
10+
11+
The brand sits at the intersection of precision tooling and human warmth. Not cold enterprise software, not playful startup fluff — think the quiet confidence of a craftsperson's tool. It should feel like Linear: refined, purposeful, low-key. But with a subtle warmth that makes it feel personal and welcoming, not just technically impressive.
12+
13+
### Aesthetic Direction
14+
- **Primary reference**: Linear — clean rows, thin borders, minimal chrome, precise typography, confident dark mode
15+
- **Tone**: Low-key and refined (低调精致). Never flashy, never loud. Let quality speak quietly.
16+
- **Theme**: Both light and dark must be excellent. Light: warm off-whites (#FAFAF9), not pure white. Dark: deep navy/charcoal (#0D0D10), not pure black.
17+
- **Anti-references**: Avoid loud gradient buttons, colorful pill everything, glassmorphism gimmicks, heavy shadows
18+
- **Technical feel**: Subtle dot grids, monospace handles, code-like precision in spacing
19+
- **Color**: Violet-blue primary (`hsl(237 97% 59%)`). Use platform/brand colors sparingly as icon tints, not full button fills.
20+
21+
### Design Principles
22+
23+
1. **Quiet confidence** — Let quality be felt, not announced. Subtle over showy. One intentional detail beats five decorative ones.
24+
25+
2. **Warmth through detail** — Human touches: online indicators, warm off-whites, approachable type sizing. Technical precision + human warmth = DocStudio's signature.
26+
27+
3. **Linear-caliber interaction** — Every hover state, every transition, every spacing decision should feel considered. Hover reveals (arrows appearing, opacity shifts), not always-visible clutter.
28+
29+
4. **Typography-first hierarchy** — Size and weight do the heavy lifting. Color and decoration are secondary. Plus Jakarta Sans throughout, generous line height, tight tracking on headings.
30+
31+
5. **Motion with restraint** — Framer Motion for entrances (stagger, fade+slide) and state changes (AnimatePresence). Use `cubic-bezier(0.16, 1, 0.3, 1)` (ease-out-expo). Never bounce, never elastic. Exit animations ~75% of enter duration.
32+
33+
### Technical Constraints
34+
- Next.js 16 + React 19 + TypeScript
35+
- Tailwind CSS 4 (use utility classes, no arbitrary values unless needed)
36+
- `framer-motion` for animations (import from `'framer-motion'`)
37+
- Radix UI primitives for interactive components
38+
- Plus Jakarta Sans (primary), Geist Mono (code/handles)
39+
- Border radius base: 32px (use `rounded-2xl` for cards, `rounded-xl` for interactive rows)
40+
- WCAG AA minimum contrast
41+
- `prefers-reduced-motion` must be respected

0 commit comments

Comments
 (0)