Skip to content

Repository files navigation

个人信息管理系统 (Personal Knowledge)

全方位个人知识库/信息管理系统,支持:

  • 📝 笔记/文章 - 富文本编辑,知识整理
  • 📔 生活日记 - 日常记录,支持心情/天气标签
  • 📚 收藏摘录 - 保存文章摘录,支持来源链接和个人批注
  • 🏷️ 灵活标签系统 - 多维度分类整理所有内容
  • 🔍 全文搜索 - 跨内容类型搜索
  • 🔐 单用户密码认证 - 保护隐私
  • 📤 完整数据导出 - 全量 JSON 备份
  • 🌓 深色/浅色主题 - 跟随系统自动切换
  • 🐳 Docker Compose 一键部署

技术栈

  • 后端: Python FastAPI + SQLAlchemy + SQLite(单文件零依赖)
  • 前端: React 18 + TypeScript + Tailwind CSS + TipTap 富文本编辑器
  • 数据库: SQLite
  • 部署: Docker Compose

快速开始

# 克隆项目
git clone https://github.com/SimenYY/personal-knowledge
cd personal-knowledge

# 复制环境变量示例
cp backend/.env.example backend/.env
# 编辑 backend/.env 设置 SECRET_KEY
# 可以用这个命令生成:openssl rand -hex 32

# 一键启动
docker-compose up -d

首次使用 - 创建管理员账号

启动后需要手动创建第一个用户(账号密码):

# 进入数据库
cd backend/data
sqlite3 pim.db

# 插入用户(替换成你自己的用户名和密码哈希)
INSERT INTO users (username, password_hash) VALUES ('你的用户名', 'bcrypt加密后的密码');

如何生成密码哈希?

python -c "
from passlib.context import CryptContext
ctx = CryptContext(schemes=['bcrypt'], deprecated='auto')
print(ctx.hash(input('输入密码: ')))
"

开发模式

后端:

cd backend
pip install -r requirements.txt
uvicorn app.main:app --reload

前端:

cd frontend
npm install
npm run dev

项目结构

backend/
├── app/
│   ├── api/           # API 路由处理器
│   ├── crud/          # CRUD 操作
│   ├── __init__.py
│   ├── auth.py        # JWT 认证
│   ├── database.py    # 数据库连接
│   ├── main.py        # FastAPI 入口
│   ├── models.py      # SQLAlchemy 模型
│   └── schemas.py     # Pydantic 模型
frontend/
├── src/
│   ├── components/    # React 共享组件
│   ├── pages/         # 页面组件
│   ├── hooks/         # React Hooks
│   ├── services/      # API 服务调用
│   ├── types/         # TypeScript 类型定义
│   ├── utils/         # 工具函数
│   ├── App.tsx         # 根组件
│   └── main.tsx        # 入口

功能说明

功能 说明
笔记/文章 富文本编辑,适合长篇知识整理
日记/生活记录 按月份浏览,支持心情和天气标签,适合日常感悟
摘录收藏 保存网页文章片段、好句摘录,支持来源 URL 和个人批注
标签管理 创建/编辑/删除标签,任何内容都可以打多个标签
全文搜索 搜索所有内容类型的标题和内容
数据导出 一次性导出所有数据为 JSON 备份
认证 单用户密码登录,JWT 保持登录

许可证

MIT

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages