# 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 ้
็ฝฎ
```
## ๐ ๅฟซ้ๅผๅง
### ๅผๅ็ฏๅข
**ๅ็ซฏๅผๅ๏ผ**
```bash
# ๅฎ่ฃ
ไพ่ต
npm install
# ๅฏๅจๅผๅๆๅกๅจ
npm run dev
# ่ฎฟ้ฎ http://localhost:4321
```
**ๅ็ซฏๅผๅ๏ผ**
```bash
cd server
# ไธ่ฝฝไพ่ต
go mod download
# ่ฟ่กๆๅก
go run ./cmd/server
# API ๆๅกไบ http://localhost:8080
```
### ็ไบง้จ็ฝฒ
```bash
# 1. ๆๅปบๅ็ซฏ
npm run build
# 2. ๅฏๅจ Docker ๅฎนๅจ
docker-compose up -d
# ่ฎฟ้ฎ http://localhost
```
## ๐ ๅไฝ
ๅจ `src/content/blog/` ็ฎๅฝไธๅๅปบ `.mdx` ๆ `.md` ๆไปถ๏ผ
```yaml
---
title: ๆ็็ฌฌไธ็ฏๆ็ซ
description: ๆ็ซ ๆ่ฟฐ
pubDate: 2024-01-01
author: NovaBlog
tags: [ๅๅฎข, ๆๆฏ]
category: ๆๆฏ
heroImage: /images/hero.jpg
---
# Hello NovaBlog!
่ฟๆฏไธ็ฏไฝฟ็จ MDX ็ผๅ็ๆ็ซ ...
```
## ๐ 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` | ๅๆข็น่ต็ถๆ (้่ฎค่ฏ) |
## ๐ ๏ธ ๆๆฏๆ
**ๅ็ซฏ๏ผ**
- [Astro](https://astro.build/) - ้ๆ็ซ็น็ๆ
- [Vue 3](https://vuejs.org/) - ไบคไบ็ปไปถ
- [Tailwind CSS](https://tailwindcss.com/) - ๆ ทๅผ
**ๅ็ซฏ๏ผ**
- [Go](https://golang.org/) - ็ผ็จ่ฏญ่จ
- [Gin](https://gin-gonic.com/) - Web ๆกๆถ
- [GORM](https://gorm.io/) - ORM
- [SQLite](https://www.sqlite.org/) - ๆฐๆฎๅบ
- [JWT](https://jwt.io/) - ่ฎค่ฏ
**้จ็ฝฒ๏ผ**
- [Docker](https://www.docker.com/) - ๅฎนๅจๅ
- [Nginx](https://nginx.org/) - ๅๅไปฃ็
## ๐ ๆๆกฃ
- **[ไฝฟ็จๆๅ](./docs/user-guide.md)** - ๅๅฎขไฝฟ็จๆ็จ๏ผๅ
ๆฌๆ็ซ ็ผๅใMDX ็ปไปถใTypst ๆ็ใไธป้ขๅฎๅถ็ญ
- **[ๅผๅๆๆกฃ](./docs/developer-guide.md)** - ้ขๅๅผๅ่
็ๆๆฏๆๆกฃ๏ผๅ
ๆฌ API ๆฅๅฃใๆฐๆฎๅบ็ปๆใๆทฑๅบฆๅฎๅถๆๅ็ญ
## ๐ License
MIT License ยฉ 2024