一个旨在深度实践现代Java技术栈的个人知识管理/效率工具平台
这不是一个生产级应用,而是一个技术驱动的练手项目! 核心目标是深入学习和实践Java生态的流行技术与架构模式。
- 技术熔炉: 深度集成并实践多种前沿Java技术栈。
- 技能提升: 提升Java后端开发、架构设计、DevOps及云原生能力。
- 构建实用工具原型: 创建一个可用的个人知识管理/效率工具雏形,管理笔记、书签、任务等。
- 文档驱动学习: 记录技术选型、实现细节与踩坑经验。
- 用户认证与授权: JWT / OAuth2.0 (集成GitHub/Google登录)。
- 知识单元管理:
- 富文本/Markdown笔记的创建、编辑、删除、版本管理。
- 网页书签收藏与管理(含元数据抓取)。
- 待办事项(Todo List)管理。
- 内容组织:
- 标签(Tags)系统。
- 文件夹/分类管理。
- 全文搜索(基于Elasticsearch)。
- (扩展) 文件管理: 上传/下载附件(集成对象存储如MinIO/S3)。
- (扩展) 数据统计: 简单的知识库数据概览。
本项目致力于集成以下技术,重点在于学习与实践:
| 类别 | 技术选型 | 应用场景/学习点 |
|---|---|---|
| 核心框架 | Spring Boot 3.x, Spring MVC, Spring Data | 项目基石,依赖注入,REST API开发,数据访问抽象 |
| 安全 | Spring Security 6.x, JWT, OAuth 2.0 Client (GitHub/Google) | 认证、授权、资源保护、第三方登录集成 |
| 数据库 | PostgreSQL (主存储), Redis (缓存/Session), Elasticsearch (搜索) | 关系型数据存储、高频查询缓存、会话管理、复杂全文搜索 |
| ORM | Spring Data JPA (Hibernate), QueryDSL | 对象关系映射、复杂查询构建 |
| API | RESTful, OpenAPI 3 (Swagger UI) | API设计与文档化 |
| 消息队列 | RabbitMQ 或 Apache Kafka | 异步处理(如邮件通知、附件处理、搜索索引更新) |
| 微服务/云原生 | Spring Cloud Gateway, Spring Cloud Config, Eureka/Nacos | API网关、动态配置管理、服务注册与发现 (即使单体,也可模拟微服务模式练习) |
| 容器化与编排 | Docker, Docker Compose | 应用及中间件容器化、本地环境编排 |
| 部署与CI/CD | GitHub Actions / GitLab CI, Jenkins | 自动化构建、测试、部署流程 |
| 监控与日志 | Prometheus, Grafana, Micrometer, ELK Stack (或 Loki) | 应用性能指标监控、仪表盘可视化、集中式日志收集与分析 |
| 前端 (可选) | React / Vue.js + TypeScript, Ant Design / Material UI | 现代化交互界面,前后端分离实践 (可先使用Postman测试API) |
| 测试 | JUnit 5, Mockito, Testcontainers, Postman/Newman | 单元测试、集成测试(含数据库/中间件)、API契约测试、压力测试 |
| 基础设施即代码 | (探索) Terraform | 云资源管理实践 |
| 对象存储 | MinIO (自建) 或 AWS S3 / 阿里云 OSS | 文件附件存储 |
| 搜索增强 | Elasticsearch | 笔记/书签内容的高性能全文检索 |
注: 并非所有技术都会在初始版本中实现,这是一个渐进式学习和集成的过程。
<你的项目名>
├── README.md # 项目总览
├── LICENSE # 开源许可证 (建议MIT)
├── .gitignore # Git忽略规则
├── build.gradle / pom.xml # 构建配置 (Gradle推荐)
├── docker-compose.yml # Docker Compose编排 (用于启动依赖服务)
├── config-repo/ # (可选) Spring Cloud Config Server的配置仓库
│ └── application.yml
│ └── <service>-dev.yml
├── docs/ # 项目文档 (设计决策、技术笔记、踩坑记录)
│ ├── ARCHITECTURE.md # 架构设计说明
│ └── TECH-NOTES.md # 特定技术集成笔记
├── backend/ # Java后端主模块
│ ├── src/main/
│ │ ├── java/com/yourdomain/pkm/
│ │ │ ├── application/ # 应用层 (DTO, Service接口, 控制器等)
│ │ │ ├── domain/ # 领域层 (实体, 值对象, 领域服务, 仓储接口)
│ │ │ ├── infrastructure/ # 基础设施层 (仓储实现, 外部服务调用, 配置)
│ │ │ ├── security/ # 安全配置
│ │ │ ├── config/ # Spring配置类
│ │ │ └── PkmApplication.java # 启动类
│ │ └── resources/
│ │ ├── application.yml # 主配置文件
│ │ └── ...
│ └── src/test/ # 后端单元/集成测试
├── frontend/ # (可选) 前端项目目录 (如果用React/Vue)
│ ├── public/
│ ├── src/
│ ├── package.json
│ └── ...
└── deployment/ # (可选) 部署相关脚本、K8s manifests、Terraform配置
├── k8s/
└── terraform/