[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-1564":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":16,"stars7d":17,"stars30d":18,"stars90d":15,"forks30d":15,"starsTrendScore":19,"compositeScore":20,"rankGlobal":10,"rankLanguage":10,"license":10,"archived":21,"fork":21,"defaultBranch":22,"hasWiki":23,"hasPages":21,"topics":24,"createdAt":10,"pushedAt":10,"updatedAt":29,"readmeContent":30,"aiSummary":31,"trendingCount":15,"starSnapshotCount":15,"syncStatus":32,"lastSyncTime":33,"discoverSource":34},1564,"Solace","domye\u002FSolace","domye","Solace - 基于 Go + React + TypeScript + PostgreSQL 的全栈博客系统。支持 Markdown 编辑、相册管理、深色模式、SEO 优化、Docker 部署。采用整洁架构，适合个人博客、技术博客、开发者作品集。MIT 开源，生产就绪","https:\u002F\u002Fblog.domye.top",null,"TypeScript",291,18,17,0,1,4,55,3,3.84,false,"main",true,[25,26,27,28],"blog","golang","react","typescript","2026-06-12 02:00:29","\u003Cdiv align=\"center\">\n\n# Solace\n\n**A Modern Full-Stack Blog System**\n\n[![Go Version](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FGo-1.25+-00ADD8?style=flat&logo=go)](https:\u002F\u002Fgolang.org\u002F)\n[![React Version](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FReact-18-61DAFB?style=flat&logo=react)](https:\u002F\u002Freact.dev\u002F)\n[![TypeScript](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FTypeScript-5.6-3178C6?style=flat&logo=typescript)](https:\u002F\u002Fwww.typescriptlang.org\u002F)\n[![License](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-MIT-green?style=flat)](LICENSE)\n\n[Features](#-features) • [Tech Stack](#-tech-stack) • [Quick Start](#-quick-start) • [Architecture](#-architecture) • [API Docs](#-api-documentation)\n\n[**简体中文**](.\u002FREADME_CN.md) | English\n\n![](.\u002Fbanner.jpg)\n\n\u003C\u002Fdiv>\n\n---\n\n## Overview\n\n**Solace** is a production-ready, full-stack **blog system** built with **Go (Golang)**, **React**, **TypeScript**, and **PostgreSQL**. It features a high-performance **Go backend** with **clean architecture** and a responsive **React frontend** with an exceptional developer experience.\n\nPerfect for developers looking for a **modern blog platform**, **personal website**, **developer blog**, or **tech blog**. Ideal for learning **full-stack development**, **clean architecture**, **REST API design**, and **Docker deployment**.\n\nThe system supports **article management** with **Markdown**, **category\u002Ftag organization**, **photo albums** with **lazy loading**, **visitor footprint visualization**, **SEO optimization**, and **dark mode** support.\n\n## ✨ Features\n\n### Content Management\n- 📝 **Markdown Editor** - Full Markdown support with syntax highlighting\n- 🏷️ **Categories & Tags** - Flexible content organization system\n- 🖼️ **Photo Albums** - Lazy loading images with lightbox viewer\n- 🔍 **Full-text Search** - Fast article search functionality\n\n### User Experience\n- 📊 **Visitor Footprints** - ECharts-powered world map visualization\n- 🌙 **Dark Mode** - Auto-follow system preference\n- 📱 **Responsive Design** - Mobile-first, works on all devices\n- ⚡ **Performance Optimized** - Code splitting, lazy loading, CDN ready\n\n### Technical Excellence\n- 🔐 **JWT Authentication** - Secure user authentication\n- 📖 **Auto API Docs** - Swagger\u002FOpenAPI documentation\n- 🐳 **Docker Ready** - Containerized deployment\n- 🔄 **Hot Reload** - Fast development iteration\n\n## 🛠 Tech Stack\n\n### Backend\n\n| Category | Technology |\n|----------|------------|\n| Language | Go 1.25+ |\n| Framework | Gin |\n| ORM | GORM |\n| Database | PostgreSQL |\n| Auth | JWT (golang-jwt) |\n| Logging | zerolog |\n| API Docs | Swagger (swaggo) |\n| Config | TOML |\n\n### Frontend\n\n| Category | Technology |\n|----------|------------|\n| Framework | React 18 |\n| Language | TypeScript 5.6 |\n| Build Tool | Vite 6 |\n| Styling | Tailwind CSS 3 |\n| State (Server) | TanStack Query |\n| State (Client) | Zustand |\n| Routing | React Router 7 |\n| Forms | React Hook Form + Zod |\n| Charts | ECharts |\n| Icons | Iconify |\n\n## 📦 Project Structure\n\n```\n.\n├── backend\u002F                    # Go backend service\n│   ├── cmd\u002F                    # Application entrypoints\n│   │   └── server\u002Fmain.go      # Server entry point\n│   ├── internal\u002F               # Private application code\n│   │   ├── handler\u002F            # HTTP handlers (controllers)\n│   │   ├── service\u002F            # Business logic layer\n│   │   ├── repository\u002F         # Data access layer\n│   │   ├── model\u002F              # Domain entities\n│   │   ├── middleware\u002F         # HTTP middlewares\n│   │   └── docs\u002F               # Swagger documentation\n│   ├── migrations\u002F             # Database migrations\n│   ├── config.toml.example     # Configuration template\n│   ├── Dockerfile              # Backend container\n│   └── Makefile                # Build automation\n│\n├── frontend\u002F                   # React frontend application\n│   ├── src\u002F\n│   │   ├── components\u002F         # Reusable UI components\n│   │   │   ├── ui\u002F             # Base UI primitives\n│   │   │   └── layout\u002F         # Layout components\n│   │   ├── features\u002F           # Feature-based modules\n│   │   │   ├── articles\u002F       # Article feature\n│   │   │   ├── auth\u002F           # Authentication\n│   │   │   ├── gallery\u002F        # Photo albums\n│   │   │   └── admin\u002F          # Admin dashboard\n│   │   ├── hooks\u002F              # Custom React hooks\n│   │   ├── api\u002F                # API client & types\n│   │   ├── stores\u002F             # Zustand stores\n│   │   ├── utils\u002F              # Utility functions\n│   │   └── types\u002F              # TypeScript definitions\n│   ├── public\u002F                 # Static assets\n│   ├── Dockerfile              # Frontend container\n│   └── nginx.conf              # Nginx configuration\n│\n├── docker-compose.yml          # Docker Compose orchestration\n├── build-docker.sh             # Docker build script\n└── README.md                   # This file\n```\n\n## 🚀 Quick Start\n\n### Prerequisites\n\n- **Go** 1.25 or later\n- **Node.js** 18 or later\n- **PostgreSQL** 15 or later\n- **Docker** (optional, for containerized deployment)\n\n### Option 1: Local Development\n\n#### 1. Clone the Repository\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fdomye\u002FSolace.git\ncd Solace\n```\n\n#### 2. Backend Setup\n\n```bash\ncd backend\n\n# Copy and configure environment\ncp config.toml.example config.toml\n# Edit config.toml with your database credentials\n\n# Install dependencies and run\ngo mod download\ngo run cmd\u002Fserver\u002Fmain.go\n```\n\nBackend will be available at `http:\u002F\u002Flocalhost:8080`\n\n#### 3. Frontend Setup\n\n```bash\ncd frontend\n\n# Install dependencies\nnpm install\n\n# Start development server\nnpm run dev\n```\n\nFrontend will be available at `http:\u002F\u002Flocalhost:5173`\n\n### Option 2: Docker Deployment\n\n```bash\n# Create config directory\nmkdir -p config\ncp backend\u002Fconfig.toml.example config\u002Fconfig.toml\n\n# Edit configuration\n# vim config\u002Fconfig.toml\n\n# Start all services\ndocker-compose up -d\n```\n\nServices:\n- Frontend: `http:\u002F\u002Flocalhost:8088`\n- Backend API: `http:\u002F\u002Flocalhost:8080`\n- API Docs: `http:\u002F\u002Flocalhost:8080\u002Fswagger\u002Findex.html`\n\n## 🏗 Architecture\n\n### Backend Architecture (Clean Architecture)\n\n```\n┌─────────────────────────────────────────────────────────────┐\n│                        Handler Layer                         │\n│              (HTTP Request\u002FResponse Handling)                │\n├─────────────────────────────────────────────────────────────┤\n│                        Service Layer                         │\n│                  (Business Logic & Orchestration)            │\n├─────────────────────────────────────────────────────────────┤\n│                      Repository Layer                        │\n│                   (Data Access & Queries)                    │\n├─────────────────────────────────────────────────────────────┤\n│                        Model Layer                           │\n│                     (Domain Entities)                        │\n└─────────────────────────────────────────────────────────────┘\n```\n\n### Frontend Architecture\n\n```\n┌─────────────────────────────────────────────────────────────┐\n│                          Pages                               │\n│                   (React Router Routes)                      │\n├─────────────────────────────────────────────────────────────┤\n│                      Features                                │\n│          (Feature-based module organization)                 │\n├─────────────────────────────────────────────────────────────┤\n│                     Components                               │\n│              (Reusable UI components)                        │\n├─────────────────────────────────────────────────────────────┤\n│                       Hooks                                  │\n│           (Custom hooks for data & behavior)                 │\n├─────────────────────────────────────────────────────────────┤\n│              API Client & Stores                             │\n│    (TanStack Query + Zustand for state management)          │\n└─────────────────────────────────────────────────────────────┘\n```\n\n## 📖 API Documentation\n\nAfter starting the backend, access the Swagger documentation at:\n\n```\nhttp:\u002F\u002Flocalhost:8080\u002Fswagger\u002Findex.html\n```\n\n### API Endpoints Overview\n\n| Method | Endpoint | Description |\n|--------|----------|-------------|\n| `GET` | `\u002Fapi\u002Fv1\u002Farticles` | List all articles |\n| `GET` | `\u002Fapi\u002Fv1\u002Farticles\u002F:slug` | Get article by slug |\n| `POST` | `\u002Fapi\u002Fv1\u002Farticles` | Create article (auth required) |\n| `PUT` | `\u002Fapi\u002Fv1\u002Farticles\u002F:id` | Update article (auth required) |\n| `DELETE` | `\u002Fapi\u002Fv1\u002Farticles\u002F:id` | Delete article (auth required) |\n| `GET` | `\u002Fapi\u002Fv1\u002Fcategories` | List categories |\n| `GET` | `\u002Fapi\u002Fv1\u002Ftags` | List tags |\n| `GET` | `\u002Fapi\u002Fv1\u002Falbums` | List photo albums |\n| `POST` | `\u002Fapi\u002Fv1\u002Fauth\u002Flogin` | User login |\n| `POST` | `\u002Fapi\u002Fv1\u002Fauth\u002Fregister` | User registration |\n\n## 📝 Available Scripts\n\n### Backend\n\n```bash\n# Development\ngo run cmd\u002Fserver\u002Fmain.go\n\n# Build\ngo build -o bin\u002Fserver cmd\u002Fserver\u002Fmain.go\n\n# Tests\ngo test .\u002F... -cover\n\n# Lint\ngolangci-lint run\n\n# Generate Swagger docs\nswag init -g cmd\u002Fserver\u002Fmain.go -o internal\u002Fdocs\n```\n\n### Frontend\n\n```bash\n# Development\nnpm run dev\n\n# Build\nnpm run build\n\n# Preview production build\nnpm run preview\n\n# Type checking\nnpm run typecheck\n\n# Lint\nnpm run lint\n```\n\n## 🔧 Configuration\n\n### Backend (config.toml)\n\n```toml\n[server]\nport = 8080\nmode = \"debug\"  # debug, release, test\n\n[database]\nhost = \"localhost\"\nport = 5432\nname = \"blog\"\nuser = \"postgres\"\npassword = \"your_password\"\n\n[jwt]\nsecret = \"your_jwt_secret\"\nexpire = 24  # hours\n```\n\n### Frontend Environment\n\n| Variable | Description | Default |\n|----------|-------------|---------|\n| `VITE_API_BASE` | Backend API URL | `\u002Fapi\u002Fv1` |\n| `SITE_BASE_URL` | Site base URL | - |\n| `SITE_NAME` | Site name | `Solace` |\n| `SITE_DESCRIPTION` | Site description | - |\n\n## 🤝 Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request.\n\n1. Fork the repository\n2. Create your feature branch (`git checkout -b feature\u002FAmazingFeature`)\n3. Commit your changes (`git commit -m 'Add some AmazingFeature'`)\n4. Push to the branch (`git push origin feature\u002FAmazingFeature`)\n5. Open a Pull Request\n\n## 📄 License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## 🙏 Acknowledgments\n\n- [Gin](https:\u002F\u002Fgithub.com\u002Fgin-gonic\u002Fgin) - HTTP web framework\n- [GORM](https:\u002F\u002Fgorm.io\u002F) - ORM library\n- [React](https:\u002F\u002Freact.dev\u002F) - UI library\n- [Tailwind CSS](https:\u002F\u002Ftailwindcss.com\u002F) - CSS framework\n- [TanStack Query](https:\u002F\u002Ftanstack.com\u002Fquery) - Data fetching\n\n\n\n\n![Stargazers over time](https:\u002F\u002Fstarchart.cc\u002Fdomye\u002FSolace.svg?variant=adaptive)\n\n**[⬆ Back to Top](#solace)**\n\nMade with ❤️ by [domye](https:\u002F\u002Fgithub.com\u002Fdomye)\n\n\u003C\u002Fdiv>\n\n---\n\n\u003C!-- SEO Keywords for Search Engine Discovery -->\n\n\u003C!--\nKeywords: blog, blog system, blog platform, personal blog, blog engine, 开源博客, 博客系统, 个人博客, 博客平台, Go blog, React blog, TypeScript blog, Gin blog, GORM blog, PostgreSQL blog, full-stack blog, fullstack blog, 前后端分离博客, 全栈博客, modern blog, markdown blog, markdown 编辑器, Markdown 博客, dark mode blog, 深色模式博客, SEO blog, SEO 博客, 响应式博客, responsive blog, Vite blog, Tailwind CSS blog, React 18 blog, Go 1.25 blog, Go Gin blog, Gin framework, GORM, TanStack Query blog, Zustand blog, React Router blog, JWT authentication blog, JWT 认证, Docker blog, Docker 部署博客, containerized blog, 容器化博客, Clean Architecture blog, clean architecture, 整洁架构, DDD blog, Domain Driven Design, 领域驱动设计, blog template, 博客模板, blog starter, 博客脚手架, blog boilerplate, 博客框架, self-hosted blog, 自托管博客, personal website, 个人网站, portfolio blog, 作品集博客, developer blog, 开发者博客, tech blog, 技术博客, programming blog, 编程博客, code blog, 代码博客, article management, 文章管理, CMS, content management system, 内容管理系统, photo album, 相册, gallery blog, 图库博客, category tags, 分类标签, visitor tracking, 访客统计, ECharts visualization, ECharts 可视化, 地图可视化, visitor footprints, 访客足迹, syntax highlighting, 语法高亮, code highlighting, 代码高亮, lazy loading, 懒加载, performance optimization, 性能优化, fast blog, 高速博客, secure blog, 安全博客, REST API blog, RESTful API, Swagger API, OpenAPI, API documentation, API 文档, PostgreSQL, React, Go, Golang, TypeScript, Vite, Tailwind, Zustand, React Query, React Hook Form, Zod, ECharts, Iconify, nginx, JWT, zerolog, TOML, GitHub, open source, 开源项目, free blog, 免费博客, MIT license, MIT 许可证, blog tutorial, 博客教程, how to build a blog, 如何搭建博客, build blog with Go, 用 Go 搭建博客, build blog with React, 用 React 搭建博客, full stack development, 全栈开发, web development, 网站开发, frontend development, 前端开发, backend development, 后端开发, database design, 数据库设计, software architecture, 软件架构, best practices, 最佳实践, production ready, 生产就绪, scalable blog, 可扩展博客, maintainable code, 可维护代码, testable code, 可测试代码, CI CD blog, 持续集成, continuous integration, GitHub Actions, 自动化部署, automated deployment, cloud deployment, 云部署, server deployment, 服务器部署, Linux blog, Linux 部署, Windows blog, Windows 部署, macOS blog, macOS 部署, cross-platform, 跨平台, mobile friendly, 移动端友好, PWA blog, progressive web app, 渐进式网页应用, SSR blog, server side rendering, 服务端渲染, CSR blog, client side rendering, 客户端渲染, SPA blog, single page application, 单页应用, MPA blog, multi page application, 多页应用, SEO friendly, SEO 友好, search engine optimization, 搜索引擎优化, Google SEO, Baidu SEO, Bing SEO, sitemap, 站点地图, robots txt, meta tags, 元标签, Open Graph, Twitter Cards, structured data, 结构化数据, JSON LD, RSS feed, RSS 订阅, Atom feed, web performance, 网页性能, Core Web Vitals, LCP, FID, CLS, page speed, 页面速度, load time, 加载时间, bundle size, 打包体积, tree shaking, code splitting, 代码分割, dynamic import, 动态导入, image optimization, 图片优化, compression, 压缩, minification, 混淆压缩, caching, 缓存, CDN, content delivery network, 内容分发网络, security headers, 安全头, HTTPS, SSL, TLS, encryption, 加密, password hashing, 密码哈希, bcrypt, SQL injection prevention, SQL 注入防护, XSS prevention, XSS 防护, CSRF protection, CSRF 防护, rate limiting, 限流, input validation, 输入验证, error handling, 错误处理, logging, 日志, monitoring, 监控, alerting, 告警, backup, 备份, restore, 恢复, migration, 迁移, version control, 版本控制, Git, branching strategy, 分支策略, code review, 代码审查, pull request, issue tracking, 问题追踪, project management, 项目管理, documentation, 文档, README, CHANGELOG, CONTRIBUTING, LICENSE, community, 社区, support, 支持, contribution, 贡献, sponsor, 赞助, donation, 捐赠, star, fork, watch, follow, share, 分享, like, 点赞, comment, 评论, feedback, 反馈, feature request, 功能请求, bug report, Bug 报告, improvement, 改进, update, 更新, upgrade, 升级, changelog, 更新日志, release notes, 发布说明, version history, 版本历史, roadmap, 路线图, future plans, 未来计划, development status, 开发状态, maintenance, 维护, active development, 积极开发, stable release, 稳定版本, latest version, 最新版本, download, 下载, install, 安装, setup, 设置, configuration, 配置, customization, 自定义, theme, 主题, plugin, 插件, extension, 扩展, integration, 集成, third party, 第三方, analytics, 分析, Google Analytics, 百度统计, multi language, 多语言, i18n, internationalization, 国际化, localization, 本地化, translation, 翻译, accessibility, 可访问性, a11y, WCAG, ADA compliance, screen reader, 屏幕阅读器, keyboard navigation, 键盘导航, ARIA, semantic HTML, 语义化 HTML, web standards, 网页标准, W3C, HTML5, CSS3, ES6, ES2023, JavaScript, JS, TS, Node.js, npm, yarn, pnpm, package manager, 包管理器, dependency management, 依赖管理, responsive images, 响应式图片, webp, avif, image format, 图片格式, vector graphics, 矢量图形, SVG, canvas, WebGL, animation, 动画, transition, 过渡, transform, 变换, CSS Grid, Flexbox, 布局, layout, typography, 排版, font, 字体, Google Fonts, custom fonts, 自定义字体, icon font, 图标字体, SVG icons, SVG 图标, favicon, 网站图标, manifest, 清单文件, service worker, 服务工作线程, offline support, 离线支持, push notification, 推送通知, web push, 消息推送, real-time, 实时, WebSocket, SSE, Server-Sent Events, polling, 轮询, long polling, 长轮询, streaming, 流式传输, file upload, 文件上传, file download, 文件下载, drag and drop, 拖拽, copy paste, 复制粘贴, keyboard shortcut, 快捷键, context menu, 右键菜单, modal, 模态框, tooltip, 提示框, popover, 弹出框, dropdown, 下拉菜单, autocomplete, 自动完成, search, 搜索, filter, 筛选, sort, 排序, pagination, 分页, infinite scroll, 无限滚动, virtual scroll, 虚拟滚动, table, 表格, data grid, 数据网格, form, 表单, validation, 验证, submission, 提交, success message, 成功消息, error message, 错误消息, loading state, 加载状态, skeleton screen, 骨架屏, placeholder, 占位符, empty state, 空状态, 404 page, 404 页面, error page, 错误页面, maintenance mode, 维护模式, coming soon, 即将推出, under construction, 建设中\n\nRelated Projects: Hexo, Hugo, Jekyll, WordPress, Ghost, Gatsby, Next.js blog, Nuxt.js blog, Astro blog, VuePress, VitePress, Docusaurus, Notion blog, Medium alternative, WordPress alternative, Ghost alternative, blog alternatives, 博客替代方案\n\nProgramming Languages: Go, Golang, React, TypeScript, JavaScript, SQL, HTML, CSS, Markdown\n\nFrameworks: Gin, GORM, React, Vite, Tailwind CSS, TanStack Query, Zustand, React Router, React Hook Form, Zod, ECharts, Swagger, OpenAPI\n\nDatabases: PostgreSQL, MySQL, SQLite, MongoDB, Redis, database, 数据库\n\nDeployment: Docker, Docker Compose, Kubernetes, K8s, Nginx, Caddy, Apache, IIS, reverse proxy, 反向代理, load balancer, 负载均衡, cloud, 云服务, AWS, Azure, GCP, Aliyun, Tencent Cloud, 阿里云, 腾讯云, VPS, dedicated server, 独立服务器\n\nDevelopment Tools: VS Code, GoLand, WebStorm, IntelliJ IDEA, Git, GitHub, GitLab, Bitbucket, CI\u002FCD, Jenkins, CircleCI, Travis CI, GitHub Actions\n\nLearning Resources: tutorial, 教程, documentation, 文档, guide, 指南, example, 示例, demo, 演示, sample code, 示例代码, best practices, 最佳实践, design patterns, 设计模式, architecture patterns, 架构模式, coding standards, 编码规范, code style, 代码风格\n\nIndustry: web development, 网站开发, software engineering, 软件工程, IT, technology, 科技, internet, 互联网, startup, 创业公司, enterprise, 企业, personal project, 个人项目, side project, 副业项目, portfolio, 作品集, resume, 简历, career, 职业, job, 工作, freelancer, 自由职业, remote work, 远程工作\n\nSearch Terms: how to create a blog, how to build a blog, best blog platform, best open source blog, free blog software, self hosted blog, personal blog examples, developer blog examples, tech blog examples, blog vs website, blog vs CMS, blog vs social media, 博客搭建教程, 博客建站, 博客程序推荐, 开源博客推荐, 免费博客系统, 自建博客, 个人博客搭建, 程序员博客, 技术博客搭建, 博客系统对比, 博客平台对比, 博客软件对比\n-->\n","Solace 是一个基于 Go、React 和 TypeScript 构建的全栈博客系统。项目的核心功能包括支持 Markdown 编辑的文章管理、相册管理和 SEO 优化，同时具备深色模式和 Docker 部署能力。采用整洁架构设计，确保了系统的可维护性和扩展性。Solace 适用于个人博客、技术分享网站以及开发者作品集展示等场景，是学习全栈开发、REST API 设计及容器化部署的理想选择。",2,"2026-06-11 02:44:43","CREATED_QUERY"]