Skip to content

jeiel85/markleaf-android

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

243 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Markleaf

Markleaf Logo

가볍게 쌓이는 생각, 정돈된 Markdown 노트
Android용 로컬 우선(Local-first) 미니멀 Markdown 메모 앱

Platform Language UI License F-Droid


🍃 Markleaf란?

Markleaf는 군더더기를 덜어내고 오직 '기록'과 '정리'에만 집중할 수 있도록 설계된 Android Markdown 메모 앱입니다. 당신의 데이터는 오직 당신의 기기에만 저장되며, 표준 Markdown 형식을 사용하여 데이터의 소유권과 이식성을 완벽히 보장합니다. 동기화도 당신이 선택한 폴더 를 통해서만 일어납니다 — Markleaf 자체는 인터넷에 나가지 않습니다.

브랜딩 페이지 보기 · 현재 버전: v2.15.3 · F-Droid · Google Play (비공개 테스트)


✨ 핵심 기능

작성 & 미리보기

  • 실시간 Markdown 미리보기 — 편집과 즉시 전환되는 프리뷰, 또는 Show Markdown syntax 옵션으로 라이브 syntax 컬러링
  • GFM 표 / 체크박스 / 인용문 / 콜아웃 (> [!NOTE] …) — 모두 미리보기에 렌더링
  • 코드 블록 syntax highlighting — Kotlin, Java, Python, JavaScript/TypeScript, Bash, JSON, YAML, XML, SQL 10개 언어 토큰 컬러링
  • 각주([^N]) ref ↔ def 점프 — 위첨자를 탭하면 정의로 부드럽게 스크롤
  • 이미지 첨부 + alt 텍스트 편집 — 앱 내부 저장소에 격리된 사본으로 보관 (미디어 권한 불필요)
  • 포커스 모드 / 단어·글자·읽기 시간 통계 / 노트 안에서 찾기·바꾸기

정리 & 탐색

  • 태그 기반 분류 — 본문에 #태그 만 쓰면 자동 인덱싱, 폴더 없음
  • Wikilinks ([[Title]]) + 백링크 패널 — 자동 완성, 누가 이 노트를 가리키는지 한눈에
  • 빠른 이동 (Quick switcher / Ctrl+K) — Obsidian 스타일 제목 substring 점프
  • SQLite FTS 기반 전문 검색 — 본문까지 빠르게
  • 핀 / 아카이브 / 휴지통 — 휴지통은 영구 삭제 전에 한 번 더 묻습니다

동기화 & 내보내기 (No-Cloud 원칙)

  • 폴더 미러 동기화 — SAF로 사용자가 선택한 폴더(Drive/Dropbox/Syncthing/OneDrive/NAS 등)에 각 노트를 .md 파일로 미러링. Markleaf 자체는 인터넷에 안 나가고, 동기화는 외부 앱이 그 폴더를 동기화하는 방식 으로 위임
  • 개별 / 전체 노트 .md 내보내기
  • 시스템 공유 시트로 보내기

디자인 & 접근성

  • Markleaf 녹색 테마 + Material You 토글 — 안드로이드 12+ 시스템 월페이퍼 색상도 옵션
  • 자동 다크 모드 — 시스템 설정 따라
  • 태블릿 2-Pane 레이아웃 최적화 — 접고 펴기 가능한 노트 목록
  • 3개 언어 UI — 한국어 / 영어 / 스페인어
  • 스크린샷 / 최근 앱 미리보기 차단 옵션 — 민감한 노트용

🛠 기술 스택

Markleaf는 최신 Android 개발 표준을 준수하며, 유지보수가 용이한 현대적인 스택을 사용합니다.

  • UI: Jetpack Compose + Material 3 + Material You 다이내믹 컬러
  • Architecture: 단순한 레이어 분리 (core / data / domain / feature / ui) + Repository 패턴
  • Database: Room — SQLite 기반 로컬 퍼시스턴스, FTS4 가상 테이블로 전문 검색
  • Markdown 파서: commonmark-java (CommonMark 0.30 + GFM 확장: 표, 취소선, task lists, 각주, YAML frontmatter)
  • Asynchronous: Kotlin Coroutines & Flow
  • Storage Access Framework (SAF) — 폴더 미러 동기화 + 이미지 첨부
  • 이미지 로딩: Coil — F-Droid 친화적 Apache 2.0
  • DataStore Preferences — 앱 설정
  • Profile Installer 1.4.0 + Macrobenchmark — Cold start baseline profile 측정 (TB320FC 기준 326ms)
  • 테스트: JUnit + Robolectric + Roborazzi 시각 회귀 테스트 (Linux 골든, threshold 0.005)
  • CI: GitHub Actions — 빌드, 릴리스(서명된 APK + AAB), launch-smoke, record-roborazzi

🏗 아키텍처

Markleaf는 관심사 분리와 테스트 가능성을 위해 다음과 같은 레이어 구조를 가집니다.

com.markleaf.notes
├── core          # 마크다운 처리, 첨부, 동기화 등 공통 핵심 로직
├── data          # Room DB, Entity, Repository 구현체 (Data Source)
├── domain        # Model, Repository 인터페이스 (Business Logic)
├── feature       # 화면별 UI 및 ViewModel (Presentation)
│   ├── editor    # 편집기, Find/Replace, Wikilink 자동완성, 콜아웃, 표
│   ├── notes     # 노트 목록, Quick Switcher, 아카이브
│   ├── search    # FTS 기반 전문 검색
│   ├── tags      # 태그 인덱스
│   ├── trash     # 휴지통 / 영구 삭제
│   └── settings  # 테마, 동기화 폴더, 스크린샷 차단 등
├── navigation    # Jetpack Compose Navigation 설정
└── ui            # 테마(Markleaf green / Material You), 공통 컴포넌트

🚀 시작하기

설치 방법

  • F-Droid: Markleaf on F-Droid — F-Droid 클라이언트에서 검색하거나 위 링크로 바로 설치할 수 있습니다. 동일 서명 키(SHA-256 0be97352…f91a)를 사용하므로 GitHub Releases APK로 사이드로드한 경우에도 끊김 없이 업데이트가 이어집니다.
  • Google Play (비공개 테스트): Markleaf on Google Play — 테스터로 등록된 계정으로 접속해야 보입니다.
  • APK 직접 설치: Releases 페이지에서 최신 버전의 APK를 다운로드한 뒤 Android 기기에서 실행해 설치합니다.

개발 환경 구축

직접 빌드하거나 기여하고 싶다면 다음 과정을 따르세요.

# 저장소 복제
git clone https://github.com/jeiel85/markleaf-android.git

# 프로젝트 폴더 이동
cd markleaf-android

# 빌드 및 설치
./gradlew installDebug

🔒 No-Cloud by design

Markleaf 자체는 절대로 네트워크에 나가지 않습니다. 데이터를 기기 밖으로 보낼지 여부는 전적으로 당신의 선택 입니다.

  • android.permission.INTERNET 권한 선언 없음 — Markleaf는 네트워크 요청을 직접 수행하지 않습니다
  • ✅ Markleaf 자체 서버 / 자체 백엔드 없음
  • ✅ 분석 / 광고 / 추적 / 폐쇄형 SDK 없음
  • android:allowBackup="false" — Android 자동 백업 / 기기 간 전송에서 Markleaf 데이터 제외
  • ✅ 사용자가 직접 export, share, 외부 링크 열기, SAF 폴더 선택을 수행할 때만 OS 경로를 통해 데이터가 이동
  • ✅ 완전한 오픈소스, Apache 2.0 라이선스로 누구나 감사 가능

"never leaves your device" 가 어떻게 정확히 작동하는지는 Privacy PolicyNo-Cloud Certification 에 정리되어 있습니다.


🗺 로드맵

v1.x — MVP

  • 기본적인 Markdown 편집 및 저장
  • 태그 기반 필터링 및 검색
  • 새로운 앱 아이콘 및 브랜딩 적용
  • 실시간 마크다운 미리보기 및 다크 모드
  • SQLite FTS 기반 고성능 검색
  • 태블릿용 2-Pane 레이아웃 최적화
  • 전체 데이터 ZIP 백업 및 복구
  • v1.0.0 정식 출시 완료

v2.x — Bear-class 확장 (현재)

  • v2.3 CommonMark 파서 도입 — 콜아웃, GFM 취소선, task lists, 각주, YAML frontmatter
  • v2.4–2.5 Wikilinks ([[Title]]) + 자동 완성 + 백링크 패널
  • v2.6 이미지 첨부 + alt 텍스트 + 라이트박스
  • v2.7 SAF 폴더 미러 동기화 (Drive/Dropbox/Syncthing 위임형, no INTERNET 유지)
  • v2.8 Material You 토글 + Markleaf 녹색 테마 복원
  • v2.9 스크린샷 차단 옵션, 시각 회귀 테스트(Roborazzi) 정착
  • v2.10 코드 블록 syntax highlighting (10개 언어)
  • v2.11 GFM 표 미리보기 부활
  • v2.12 빠른 이동(Quick Switcher / Ctrl+K)
  • v2.13 노트 안에서 찾기 / 바꾸기
  • v2.14 각주 ref ↔ def 클릭 점프
  • Google Play 정식 출시 (현재 비공개 테스트 중)

📜 라이선스

이 프로젝트는 Apache License 2.0에 따라 라이선스가 부여됩니다. 자세한 내용은 LICENSE 파일을 확인하세요.


Made with ❤️ by Markleaf Team

About

Markleaf는 Android용 가벼운 로컬 우선 Markdown 메모 앱입니다.

Resources

License

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors