Skip to content

Repository files navigation

📙 리드로그 (ReadLog)

마음이 문장을 따라 흐르는 곳, 📙 리드로그
독서 기록을 사진과 함께 남기고, 다양한 사람들과 소통하며 책을 추천·공유할 수 있는 플랫폼 바로가기 링크 👉 https://readlog.streamlit.app/


📌 프로젝트 소개

리드로그는 독서 기록 + 인스타그램 스타일의 SNS 기능을 결합한 서비스입니다.
책을 읽고 느낀 점을 기록하고, 사진과 함께 업로드하며, 좋아요·책갈피·댓글로 다른 독서가와 소통할 수 있습니다. 앱은 Streamlit 기반 단일 페이지로 작동하며, SQLite에 영구 저장하고, 변경사항을 CSV로 미러 저장합니다


🖼 주요 기능

1. 포스트 작성 및 표시

  • 책 제목, 작가, 독서 사진, 책 표지를 함께 기록
  • 닉네임(볼드체) + 감상 텍스트 표시
  • 사진 / 책 표지 보기 전환 (버튼 방식)
  • 사진과 책 표지를 가운데 정렬로 배치
  • 카카오 도서 검색으로 책 선택 → 내 사진 업로드 → 게시하기 클릭 시 저장, 바로 피드로 이동.
  • 최신순 피드(최대 50)와 내 글/리포스트 목록 제공.
  • 카드 내부 “✏️ 수정/🗑️ 삭제”에서 내용/사진 교체 및 삭제 가능. 삭제 후 자동으로 피드 이동.

2. 소셜 기능

  • 📖 좋아요 (BookLike)
  • 📢 책갈피 (BookUp, 리포스트)
  • 💬 댓글 작성 및 조회
  • 알림(Notification) 기능 (좋아요, 책갈피, 댓글 시 알림 전송)

3. UI/UX

  • Streamlit 기반의 직관적인 인터페이스
  • 버튼/이미지 크기 및 정렬 최적화
  • 제목·작가 표기 형식: 제목: 바다가 들리는 편의점 | 작가: 마치다 소노코

🛠 기술 스택

Frontend/UI: Streamlit (단일 페이지 라우팅, 라디오 내비를 탭처럼 스타일링)

Backend/DB: SQLite + SQL(외래키 활성화), 스키마 보장 실행(재실행 안전)

이미지 처리: Pillow(PIL)로 JPEG 변환 저장(quality=90)

인증/세션: SHA-256 비밀번호 해시, EncryptedCookieManager로 암호화 쿠키 로그인 복원

외부 API: Kakao Book Search + OpenLibrary 커버 폴백, URL 유효성 경량 검사(HEAD/소량 GET)

📂 디렉토리 구조

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 업데이트 및 알림 전송, 화면은 즉시 갱신됩니다.


🚀 로컬에서 실행하는 방법

  1. 준비물

Python 3.10 이상 (권장: 3.11~3.12) 카카오 도서 API 키 → KAKAO_API_KEY (필수) (선택) 자동 로그인 암호화 키 → COOKIE_PASSWORD (16자 이상 임의 문자열)

  1. 프로젝트 받기

git clone readlog cd readlog

  1. 가상환경 만들기 & 켜기

Windows (PowerShell)

python -m venv .venv .venv\Scripts\Activate.ps1

macOS / Linux

python3 -m venv .venv source .venv/bin/activate

  1. 패키지 설치

pip install -r requirements.txt

  1. API 키 설정(가장 쉬운 방법) 프로젝트 루트에 .streamlit/secrets.toml 파일 만들고 아래 내용 저장:

KAKAO_API_KEY = "카카오_REST_API_키" COOKIE_PASSWORD = "원하는_아무_문자열_16자_이상"

  1. 실행

streamlit run app.py

처음 실행하면 data/readlog.db, data/uploads/, data/posts.csv가 자동 생성됩니다.

🚀 향후 개발 계획

  • 📚 책 정보 자동 불러오기 (교보문고/알라딘 API 연동)
  • 📱 모바일 UI 최적화
  • 🏷 해시태그 기반 검색 기능
  • 👥 팔로우 / 팔로잉 시스템
  • 🔔 실시간 알림 기능

👨‍💻 제작자

About

마음이 문장을 따라 흐르는 곳, 📙 리드로그

Resources

Stars

11 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages