泛娱乐内容消费是移动互联网的高频场景,用户在地铁通勤、午休、睡前等碎片时间需要低门槛、即开即用的轻松内容。现实中搞笑图片、短视频、段子分散在多个平台,广告和推荐流干扰多;个人站长与小型内容团队又缺少一套“内容自持、可独立部署、能直接变现”的轻量方案。本项目立项的出发点就是解决这个问题:把图片、视频、笑话、链接四类内容聚合到一个自托管站点里,用极低的服务器成本完成部署,内容与用户数据完全掌握在运营方手中;同时内置会员计费能力,让“先免费体验、到期付费解锁”的变现路径开箱可用。它适合作为私域流量入口、公众号或小程序的内容承接页,也可作为独立站长的副业项目,运营方只需一台 2 核 2G 服务器即可长期稳定运行。
功能介绍
系统分为浏览端与管理端两套界面,共用一套后端接口。浏览端包含图片、视频、笑话、链接四个板块:列表分页加载,支持“随机看一张图片、随机看一个视频、随机来一个段子”,喜欢的内容可点赞、收藏;视频同时支持本地上传文件与 B 站 BV 号内嵌播放,笑话分为结构化段子与一句话段子,包袱直接展示在正文下方。
账号与会员方面,支持注册登录与 JWT 无状态鉴权;新用户自动获得 2 天免费体验,到期后内容接口返回 HTTP 402,前端弹出付费墙,扫码支付 10 元开通 30 天会员,未到期续费在原到期时间上顺延,管理员账号不受限制。
管理端提供图片、视频、笑话、链接的增删改查、批量上传、服务端分页与关键词、标签、来源、分类、类型、徽章多条件筛选,列表展示创建时间并按时间倒序,视频支持首帧预览;上传文件具备完整生命周期管理,替换文件自动删除旧文件、删除记录同步清理磁盘文件,多条记录共用同一文件时,只有最后一条引用被删除后才清理。
项目实现
伤心难过就刷刷笑死人不偿命
网页端:http://43.142.136.17:8080/
手机端:http://43.142.136.17:8081/
项目由我独立完成全流程:需求梳理与原型设计、数据库建模、后端接口、前端页面、管理后台、会员支付规则,以及服务器部署脚本与运维文档。
技术栈为 Spring Boot 3.2 + Spring Data JPA + MySQL 8 + JWT,前端使用原生 HTML/CSS/JavaScript,不引入构建工具,最终打包成单个可执行 JAR,一条命令启动。实现亮点:一是单 JAR 交付,静态资源、接口、上传目录一体化,配合 systemd + Caddy 即可上线,内存占用控制在 512MB 以内;二是 dev/prod 双 profile 隔离,端口、数据库、上传目录、种子数据按环境切换,本地调试与线上互不干扰;三是内容页统一按创建时间倒序、同时间以 ID 兜底,旧库通过幂等 SQL 与启动回填补齐时间字段,升级无需手工改表;四是会员到期在拦截层统一判定返回 402,前端按状态渲染付费墙,规则集中在一处。
难点在于上传文件的引用式清理与多环境数据一致性:需要区分“编辑中上传但未使用”的文件和“被多条记录共用”的文件,避免误删;同时要保证自动加列后存量数据排序不乱,这部分用实体预写入、启动回填与幂等脚本三层兜底解决,并逐项在本地 dev、本地 prod 与线上服务器三个环境跑通验证。
声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!

下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态
评论