Files
NovaBlog/README.md
2026-03-01 21:48:34 +08:00

7.1 KiB
Raw Permalink Blame History

NovaBlog

🚀 一款面向程序员和极客的极轻量级博客系统,采用"静态渲染 + 轻量级微服务"的解耦架构。

特性

  • 极致的排版自由:原生支持 MDX允许在 Markdown 中直接嵌入 Vue/React 组件和 Typst 复杂学术排版
  • 优雅的动态交互:支持用户注册登录、评论、点赞,但核心页面保持纯静态
  • 低资源占用Go 后端 + SQLite内存占用极低通常十几 MB可在 2C1G 甚至更低配置运行
  • 现代化主题系统基于组件化思想构建CSS 变量换肤,支持暗黑模式
  • Docker 容器化:一键部署,方便在个人 NAS 或云服务器上运行

🏗️ 架构

┌─────────────────────────────────────────────────────────┐
│                      Nginx                              │
│  (静态文件服务 + API 反向代理)                           │
└─────────────────────┬───────────────────────────────────┘
                      │
        ┌─────────────┴─────────────┐
        │                           │
        ▼                           ▼
┌───────────────┐           ┌───────────────┐
│   Astro 前端   │           │   Go API     │
│  (静态 HTML)   │◄─────────►│  (Gin + SQLite)│
│   Zero-JS     │   HTTP    │   ~15MB 内存  │
└───────────────┘           └───────────────┘

📁 项目结构

NovaBlog/
├── src/                    # Astro 前端源码
│   ├── components/         # Vue/Astro 组件
│   │   ├── CommentSection.vue  # 评论区组件
│   │   ├── LikeButton.vue      # 点赞按钮
│   │   ├── Counter.vue         # MDX 示例组件
│   │   └── TypstBlock.astro    # Typst 渲染组件
│   ├── content/            # 内容集合
│   │   ├── blog/           # 博客文章 (MDX)
│   │   └── config.ts       # 内容配置
│   ├── layouts/            # 页面布局
│   │   ├── BaseLayout.astro
│   │   └── PostLayout.astro
│   ├── pages/              # 页面路由
│   └── styles/             # 全局样式
├── server/                 # Go 后端源码
│   ├── cmd/server/         # 程序入口
│   ├── internal/
│   │   ├── config/         # 配置管理
│   │   ├── database/       # 数据库连接
│   │   ├── handlers/       # HTTP 处理器
│   │   ├── middleware/     # 中间件
│   │   ├── models/         # 数据模型
│   │   └── utils/          # 工具函数
│   └── Dockerfile
├── docker-compose.yml      # Docker 编排
└── nginx.conf              # Nginx 配置

🚀 快速开始

开发环境

前端开发:

# 安装依赖
npm install

# 启动开发服务器
npm run dev

# 访问 http://localhost:4321

后端开发:

cd server

# 下载依赖
go mod download

# 运行服务
go run ./cmd/server

# API 服务于 http://localhost:8080

生产部署

# 1. 构建前端
npm run build

# 2. 启动 Docker 容器
docker-compose up -d

# 访问 http://localhost

📝 写作

src/content/blog/ 目录下创建 .mdx.md 文件:

---
title: 我的第一篇文章
description: 文章描述
pubDate: 2024-01-01
author: NovaBlog
tags: [博客, 技术]
category: 技术
heroImage: /images/hero.jpg
---

# Hello NovaBlog!

这是一篇使用 MDX 编写的文章...

<!-- 嵌入 Vue 组件 -->
<Counter client:load />

<!-- Typst 数学公式 -->
<TypstBlock code="$ sum_(i=1)^n x_i = x_1 + x_2 + dots + x_n $" />

🔌 API 接口

认证

方法 路径 描述
POST /api/auth/register 用户注册
POST /api/auth/login 用户登录
GET /api/auth/profile 获取当前用户信息 (需认证)

评论

方法 路径 描述
GET /api/comments?post_id=xxx 获取文章评论
POST /api/comments 发表评论 (需认证)
DELETE /api/comments/:id 删除评论 (需认证)

点赞

方法 路径 描述
GET /api/likes?post_id=xxx 获取点赞状态
POST /api/likes 切换点赞状态 (需认证)

🛠️ 技术栈

前端:

后端:

部署:

📚 文档

  • 使用指南 - 博客使用教程包括文章编写、MDX 组件、Typst 排版、主题定制等
  • 开发文档 - 面向开发者的技术文档,包括 API 接口、数据库结构、深度定制指南等

🤖 AI 使用声明

本系统大部分代码由 AI 辅助生成,但所有代码都经过了人工审核和测试。

为什么使用 AI 辅助开发?

AI 辅助开发能够显著提高开发效率,让我更专注于系统设计和用户体验。同时,我也深知大家对 AI 生成代码的担忧:

常见担忧与应对

担忧 应对措施
隐私泄露风险 系统完全本地部署,不会向任何第三方服务器发送数据。所有用户数据(评论、点赞等)仅存储在您自己的 SQLite 数据库中
代码安全性 所有 AI 生成的代码都经过人工逐行审查重点检查SQL 注入、XSS 攻击、敏感信息泄露等安全漏洞
代码质量 对 AI 生成的代码进行了重构和优化,确保符合最佳实践
后门/恶意代码 代码完全开源,您可以自行审计每一行代码。没有任何隐藏的网络请求或数据收集行为
依赖安全 所有依赖包都经过筛选,使用知名、活跃维护的开源项目,避免引入有安全隐患的第三方库

我的承诺

  • 隐私优先:您的数据属于您自己,我无权也无从访问
  • 透明公开:坦诚披露 AI 的参与,不隐瞒开发方式
  • 人工把关AI 只是辅助工具,最终的决策和审核由人工完成
  • 开源审计:代码完全开源,欢迎社区审查和改进

如果您对代码有任何疑虑,欢迎:

  • 查看完整的 开发文档 了解技术细节
  • 直接阅读源代码进行审计
  • 提交 Issue 反馈问题或建议

📜 License

MIT License © 2024