← 返回作品列表

[ 项目案例 ]

Eson_web

从个人网站,到一套完整的数字产品

一个从设计、开发、CMS、后端到生产部署全部独立完成的个人品牌网站。

分类
平台
技术
  • Nuxt
  • Vue
  • TypeScript
  • NestJS
  • PostgreSQL
  • Prisma
  • Docker
  • Caddy
  • CMS
  • 全栈
时间
至今
Eson_web

01

背景

长期从事前端开发之后,我希望建立一个真正属于自己的数字空间:既能展示工作经历与项目,也能持续承载新的作品、实验与文章。

因此我没有把它做成一个静态简历页面,而是从产品结构、设计系统、前后端架构、内容管理、媒体管理、身份认证到生产部署,完整构建了一套可以长期运行与持续维护的 Web 产品。

02

我的角色

独立完成产品设计、前端开发、后端开发、数据库设计与生产部署,并负责上线后的持续维护。

03

问题

如果把内容写死在页面里,每增加一个项目或一篇文章都需要改代码、重新构建、重新部署。

这样的结构无法长期承载持续增长的内容,也无法在不接触代码的情况下维护站点。

04

核心工作

  • 先确定「内容必须能脱离代码维护」,因此把 Work / Lab / Writing / Experience 设计成内容类型,而不是写在页面里的文案
  • 为长期运营补齐内容与媒体能力:CMS、媒体库与图片选择,让新增内容不需要改代码、也不需要重新部署
  • 后台只对管理员开放,因此认证与权限校验放在后端完成,而不是靠前端隐藏入口
  • 数据层选择关系型建模:内容、翻译与分类标签之间的关系由 PostgreSQL 承载,schema 与迁移由 Prisma 管理
  • 前后端统一 TypeScript,并保持接口契约稳定,让 SSR 页面与 API 使用同一套数据结构
  • 上线采用容器化 + 反向代理:Docker Compose 保证可重复部署,Caddy 负责证书、反向代理与域名入口,同时建立数据库与媒体备份
  • 把 SEO、可访问性、响应式与自动化测试纳入交付范围,而不是上线后再补

05

解决方案

网站在前端之外增加了完整的后端与内容管理层:内容不再写死在页面里,而是通过 CMS 与后端 API 读取,使内容可以脱离代码独立维护。

内容模型采用翻译表结构,中文与英文分别存储,因此两种语言可以各自维护。

06

工程实现

网站在前端之外保留独立的接口层:内容、认证与媒体都通过同一套后端 API 提供,页面只负责渲染,因此前端不需要了解数据存储细节。

前后端都使用 TypeScript,目标是让接口契约与数据结构只有一处定义,避免跨端字段定义逐渐不一致。

内容没有写死在页面里,而是建立了内容模型与 CMS:项目、实验、文章与经历由数据库驱动,新增内容不需要改代码或重新部署。

数据层选择关系型方案:内容、翻译、分类与标签之间存在明确的关系,因此把数据放在 PostgreSQL、由 Prisma 管理 schema 与迁移,更适合长期维护。

部署选择容器与反向代理:容器化让生产环境可以重复构建,Caddy 负责自动申请与续期证书、反向代理与域名入口,不需要手工维护证书与端口。

07

结果

项目已完成生产环境部署,并运行在独立域名下。

同时具备前端、后端、数据库、CMS、认证、媒体管理、SEO、测试与生产部署能力。

08

项目状态

已上线,持续迭代。

下一个项目

01精选AI 系统 · 电商

Amazon-AI

把 Amazon 运营数据,变成可以执行的分析工具

一个面向 Amazon 广告与运营数据分析的独立开发工具。

  • Amazon
  • 电商
  • 数据分析
  • Next.js
  • React
  • TypeScript
  • AI
  • LLM
  • 自动化
查看案例