마음이 문장을 따라 흐르는 곳, 📙 리드로그
독서 기록을 사진과 함께 남기고, 다양한 사람들과 소통하며 책을 추천·공유할 수 있는 플랫폼 바로가기 링크 👉 https://readlog.streamlit.app/
리드로그는 독서 기록 + 인스타그램 스타일의 SNS 기능을 결합한 서비스입니다.
책을 읽고 느낀 점을 기록하고, 사진과 함께 업로드하며, 좋아요·책갈피·댓글로 다른 독서가와 소통할 수 있습니다.
앱은 Streamlit 기반 단일 페이지로 작동하며, SQLite에 영구 저장하고, 변경사항을 CSV로 미러 저장합니다
- 책 제목, 작가, 독서 사진, 책 표지를 함께 기록
- 닉네임(볼드체) + 감상 텍스트 표시
- 사진 / 책 표지 보기 전환 (버튼 방식)
- 사진과 책 표지를 가운데 정렬로 배치
- 카카오 도서 검색으로 책 선택 → 내 사진 업로드 → 게시하기 클릭 시 저장, 바로 피드로 이동.
- 최신순 피드(최대 50)와 내 글/리포스트 목록 제공.
- 카드 내부 “✏️ 수정/🗑️ 삭제”에서 내용/사진 교체 및 삭제 가능. 삭제 후 자동으로 피드 이동.
- 📖 좋아요 (BookLike)
- 📢 책갈피 (BookUp, 리포스트)
- 💬 댓글 작성 및 조회
- 알림(Notification) 기능 (좋아요, 책갈피, 댓글 시 알림 전송)
- Streamlit 기반의 직관적인 인터페이스
- 버튼/이미지 크기 및 정렬 최적화
- 제목·작가 표기 형식:
제목: 바다가 들리는 편의점 | 작가: 마치다 소노코
Frontend/UI: Streamlit (단일 페이지 라우팅, 라디오 내비를 탭처럼 스타일링)
Backend/DB: SQLite + SQL(외래키 활성화), 스키마 보장 실행(재실행 안전)
이미지 처리: Pillow(PIL)로 JPEG 변환 저장(quality=90)
인증/세션: SHA-256 비밀번호 해시, EncryptedCookieManager로 암호화 쿠키 로그인 복원
readlog/
├── app.py # 메인 실행(라디오 내비)
├── auth_ui.py # 로그인/회원가입 + 쿠키 로그인 복원
├── book_utils.py # 카카오 도서 검색 + 커버 폴백
├── db.py # DB 경로 고정(data/readlog.db) + 스키마 보장
├── models.py # DB 액션(글/좋아요/리포스트/댓글) + CSV 미러
├── storage.py # 이미지 저장(data/uploads/…, JPEG 변환)
├── ui_components.py # 카드 UI(좋아요/리포스트/댓글/수정/삭제)
├── utils.py # now_str, 해시 등 유틸
├── requirements.txt # 의존성 목록
├── README.md # 프로젝트 설명 문서
├── ui_pages/ # 화면별 페이지
│ ├── __init__.py
│ ├── create_post.py # 글쓰기(업로드 후 자동 피드 이동)
│ ├── feed.py # 피드(최신 50)
│ └── profile.py # 내 글/리포스트
├── data/ # 영구 저장소(앱이 자동 생성)
│ ├── readlog.db # SQLite DB
│ ├── posts.csv # 게시글 CSV 미러(자동 갱신)
│ └── uploads/ # 업로드 이미지 폴더
│ └── ... # 이미지 파일들
├── .gitignore
└── (legacy) data.db # 예전 경로 사용분(이제 미사용, 백업 후 삭제 권장)
---
로그인/회원가입: 사이드바에서 진행, 로그인 성공 시 쿠키에 사용자 ID 저장 → 다음 접속 시 자동 로그인.
글쓰기: 상단 라디오에서 📝 글쓰기 선택 → 책 검색(제목/ISBN) → 결과 선택 → 내 사진 업로드 + 감상 입력 → 게시하기. 성공 시 피드로 자동 이동하여 최상단에서 내 게시물을 확인합니다.
수정/삭제: 내 카드의 “✏️ 게시글 수정 / 🗑️ 삭제”에서 실행. 삭제 후 자동으로 피드로 이동.
좋아요/리포스트/댓글: 버튼 클릭 시 DB 업데이트 및 알림 전송, 화면은 즉시 갱신됩니다.
- 준비물
Python 3.10 이상 (권장: 3.11~3.12) 카카오 도서 API 키 → KAKAO_API_KEY (필수) (선택) 자동 로그인 암호화 키 → COOKIE_PASSWORD (16자 이상 임의 문자열)
- 프로젝트 받기
git clone readlog cd readlog
- 가상환경 만들기 & 켜기
Windows (PowerShell)
python -m venv .venv .venv\Scripts\Activate.ps1
macOS / Linux
python3 -m venv .venv source .venv/bin/activate
- 패키지 설치
pip install -r requirements.txt
- API 키 설정(가장 쉬운 방법) 프로젝트 루트에 .streamlit/secrets.toml 파일 만들고 아래 내용 저장:
KAKAO_API_KEY = "카카오_REST_API_키" COOKIE_PASSWORD = "원하는_아무_문자열_16자_이상"
- 실행
streamlit run app.py
처음 실행하면 data/readlog.db, data/uploads/, data/posts.csv가 자동 생성됩니다.
- 📚 책 정보 자동 불러오기 (교보문고/알라딘 API 연동)
- 📱 모바일 UI 최적화
- 🏷 해시태그 기반 검색 기능
- 👥 팔로우 / 팔로잉 시스템
- 🔔 실시간 알림 기능
- 개발 및 기획: [토리양]
- 문의: [a01037575147@gmail.com]