# speak-out **Repository Path**: LIRUIYI/speak-out ## Basic Information - **Project Name**: speak-out - **Description**: 不吐不快一阶段 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-04 - **Last Updated**: 2026-05-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 如何运行 使用 Docker(推荐): cd speak-out docker-compose up -d 访问 http://localhost 本地开发: # 1. 启动数据库和缓存 docker-compose up -d postgres redis # 2. 启动后端 cd backend # 3. 启动前端 cd frontend npm install npm run dev 访问 http://localhost:5173 # 不吐不快 (Speak Out) 一个匿名情绪留言板,让用户可以自由表达情绪,通过五彩缤纷的卡片和物理碰撞效果,创造独特的视觉体验。 ## 功能特性 - **匿名留言**:无需登录,直接发表留言(限300字) - **情绪分析**:根据文字内容自动分析情绪,分配对应颜色 - 喜 (JOY) - 红色 - 怒 (ANGER) - 青色 - 哀 (SADNESS) - 灰白色 - 乐 (HAPPINESS) - 黄色 - 愁 (WORRY) - 蓝色 - **物理碰撞**:使用 Matter.js 实现真实的卡片碰撞效果 - **鼠标交互**:鼠标移动时产生视差/排斥效果 - **高性能**:Redis 缓存热点数据 ## 界面设计 1. 顶部栏 留言,留言可选择心情,和是否显示所属城市(可根据IP自动获取),发布留言时从顶部掉落,然后贴到墙上 2. 顶部左上角有留言人数统计,今日留言人数统计 3. 便签墙可以缩放 4. 轮换榜+今日话题+热门话题 5. 分层设计:最新便签最上层 ## 技术栈 ### 后端 - Java 17 - Spring Boot 3.x - Spring Data JPA - PostgreSQL - Redis ### 前端 - Vue 3 + TypeScript - Vite - Matter.js (物理引擎) - GSAP (动画) - Axios ### 部署 - Docker - Docker Compose - Nginx ## 快速开始 ### 前置要求 - Docker 和 Docker Compose - 或 Java 17 + Node.js 18 + PostgreSQL + Redis ### 使用 Docker 运行 ```bash # 克隆项目 git clone cd speak-out # 复制环境变量文件 cp .env.example .env # 启动所有服务 docker-compose up -d # 访问应用 # 前端: http://localhost # 后端 API: http://localhost/api ``` ### 本地开发 #### 1. 启动基础设施 ```bash docker-compose up -d postgres redis ``` #### 2. 启动后端 ```bash cd backend ./mvnw spring-boot:run -Dspring-boot.run.profiles=dev ``` #### 3. 启动前端 ```bash cd frontend npm install npm run dev ``` 访问 http://localhost:5173 ## API 文档 ### 留言接口 #### 获取留言列表 ``` GET /api/messages?page=0&size=20 ``` #### 获取最新留言 ``` GET /api/messages/latest?limit=50 ``` #### 发表留言 ``` POST /api/messages Content-Type: application/json { "content": "今天天气真好!" } ``` ### 统计接口 #### 情绪统计 ``` GET /api/stats/emotions ``` ## 项目结构 ``` speak-out/ ├── backend/ # Spring Boot 后端 │ ├── src/ │ │ ├── main/ │ │ │ ├── java/com/speakout/ │ │ │ │ ├── controller/ │ │ │ │ ├── service/ │ │ │ │ ├── repository/ │ │ │ │ ├── entity/ │ │ │ │ ├── dto/ │ │ │ │ └── config/ │ │ │ └── resources/ │ │ └── test/ │ ├── Dockerfile │ └── pom.xml ├── frontend/ # Vue 3 前端 │ ├── src/ │ │ ├── components/ │ │ ├── api/ │ │ ├── types/ │ │ ├── styles/ │ │ └── App.vue │ ├── public/ │ ├── Dockerfile │ ├── package.json │ └── vite.config.ts ├── nginx/ # Nginx 配置 │ ├── nginx.conf │ └── Dockerfile ├── docker-compose.yml # Docker Compose 编排 ├── .env.example # 环境变量示例 └── README.md # 项目文档 ``` ## 安全 1 同一个ip回复和点赞短时间不能一直操作 ## 贡献指南 1. Fork 项目 2. 创建功能分支 (`git checkout -b feature/AmazingFeature`) 3. 提交更改 (`git commit -m 'Add some AmazingFeature'`) 4. 推送到分支 (`git push origin feature/AmazingFeature`) 5. 创建 Pull Request ## 许可证 MIT License - 详见 [LICENSE](LICENSE) 文件 ## 致谢 - [Vue.js](https://vuejs.org/) - [Spring Boot](https://spring.io/projects/spring-boot) - [Matter.js](https://brm.io/matter-js/) - [PostgreSQL](https://www.postgresql.org/) - [Redis](https://redis.io/)