도움이 됐다면 ⭐ 하나 눌러 주세요 — 계속 만드는 데 큰 힘이 돼요.
창 하나가 곧 종이 한 장인 macOS 플래너. · spiralday.com 10분 단위 종이 플래너 형식에 하루를 적고, 스프링 노트처럼 한 장씩 넘깁니다.
종이 플래너의 좋은 점은 한 장 안에 하루가 다 보인다는 것과 넘기는 손맛입니다. 캘린더 앱에는 둘 다 없습니다.
Spiralday 는 앱 안에 플래너를 그려 넣지 않고 창 자체를 종이 한 장으로 만들었습니다. 창의 빨강·노랑·초록 버튼이 종이 왼쪽 위에 놓이고, 스프링 링은 창 밖으로 튀어나와 있으며, 페이지는 Metal 로 계산한 진짜 종이 말림으로 넘어갑니다.
| 📓 플래너 여러 권 | 권마다 이름 · 시작일(필수) · 종료일(선택) · 표지 색. 시작일 이전 / 종료일 이후로는 넘어가지 않고, 종료일이 없으면 계속 넘어갑니다. 권마다 기록 · 형광펜 · D-day 가 따로 저장됩니다. |
| 📕 표지와 첫 장 | 일간 · 주간 모두 책 맨 앞에 표지(이름 · 기간 · 표지 색)와 하고 싶은 말을 적는 첫 장이 있습니다. 표지 → 첫 장 → 첫날(첫 주) 순서로 넘어갑니다. |
| 🗒 일간 | 10분 단위 종이 플래너 형식 — DATE · D-DAY · COMMENT · TOTAL TIME · TASKS 15줄 · MEMO · TIMETABLE (06시–05시 × 10분). 할 일은 아무 줄에나 먼저 쓰고, 형광펜(분류)은 나중에 왼쪽 칸을 눌러 고릅니다. 긴 할 일은 아래 빈 줄까지 이어 쓰고, 막히면 글씨를 줄여 제 줄에 맞춥니다. MEMO 는 칸이 모자라면 줄 간격과 글씨가 함께 조금씩 줄어듭니다. |
| 📅 주간 | MY GOAL (┌ … ┘ 강조), REVIEW OF THE WEEK ★, 월–일 7칸 — 할 일 10줄 · 타임테이블 · 하루 합계. 위아래 여백을 줄이고 그만큼 타임테이블을 크게 잡았습니다. |
| 📊 홈 | 이번 주 · 이번 달 시간, 하루 평균, 연속 기록, 완료율, 최근 12주, 형광펜별 시간, 시간대 · 요일 패턴, 최근 35일 달력. |
| 🖍 형광펜 타임테이블 | 팔레트에서 형광펜을 골라 10분 칸을 드래그로 칠하면 TOTAL TIME 이 계산됩니다 (TOTAL TIME 에 넣을지는 형광펜마다 설정에서). 팔레트의 펜은 타임테이블 칠하기 전용입니다. 타임테이블 위에 손글씨 메모, 🍴 밥시간 화살표. |
| 🧰 도구 팔레트 | 종이 오른쪽(기본) · 왼쪽 · 위 · 아래 중 고른 쪽에 붙습니다 (위 · 아래는 가로 한 줄). ⌘\ 나 끝의 화살표로 접으면 지금 도구가 보이는 가느다란 손잡이만 남고, 손잡이에 마우스를 올리면 펼쳐집니다. 설정 → 팔레트에서 자리와 자동으로 접기를 고릅니다. |
| ○ △ × → | 체크 박스를 누를 때마다 완료 → 일부 → 못함 → 미룸. 완료한 일에만 그 할 일의 형광펜이 그어집니다. → 로 미룬 일은 다음 날, 같은 형광펜 묶음 바로 아래로 넘어갑니다. |
| 🚩 날마다 D-day | D-day 를 목록에 저장해 두고, 일간 페이지마다 골라 붙입니다 (하루 두 개까지). 붙인 D-day 는 그날에만 남아서 다음 날에 저절로 넘어가지 않고, 목록에서 고치거나 지워도 이미 붙인 날은 그대로입니다. |
| 🎨 날마다 컬러 | 9가지 컬러 컨셉 — TOTAL TIME · 요일 · D-day · 체크 표시 색이 함께 바뀝니다. 기본값은 설정에서. |
| 🖨 PDF 로 뽑기 | 일간 A4 세로 / A4 반쪽 (두 장씩, 자르면 실물 크기), 주간 · 홈 A4 가로. 기간을 정해 한 번에, 맨 앞에 표지와 첫 장까지. 벡터라 인쇄가 선명합니다. |
| 🧭 둘러보기 | 처음 플래너를 펼치면 일간 → 주간 → 홈 → 표지 · 첫 장 순서로 쓰는 법을 하나씩 짚어 줍니다. 튜토리얼과 둘러보기는 설정에서 언제든 골라 다시 볼 수 있습니다. |
| 🔒 내 Mac 에만 | 계정 없음, 광고 없음. 기록은 JSON 파일로 내 Mac 에만 저장. 인터넷은 하루 한 번 업데이트 확인과 익명 사용 통계(설정에서 끌 수 있음)에만 써요. |
![]() 일간 |
![]() 주간 — 위쪽 스프링 ![]() 홈 — 전체 통계 |
- spiralday.com 또는 Releases 에서
Spiralday.dmg를 받아 엽니다. - 열린 창에서 Spiralday 를 Applications 폴더로 끌어다 놓습니다.
- 응용 프로그램 폴더(또는 Launchpad)에서 Spiralday 를 엽니다. 끝.
LeanAgileHungry Inc. 의 Developer ID 로 서명하고 Apple 공증(notarization)을 받은 앱이라, 따로 허용할 필요 없이 바로 열립니다.
- macOS 14 Sonoma 이상, Apple Silicon · Intel 모두 지원
- 자동 업데이트 — 하루 한 번 새 버전을 확인하고, 있으면 알려 줘요 (메뉴 Spiralday → 업데이트 확인…). Sparkle 로 서명을 확인한 뒤 설치해요.
Xcode 16 이상 (Swift 6 툴체인) 이 필요합니다.
git clone https://github.com/Grwaywee/spiralday.git
cd spiralday
./build.sh # → build/Spiralday.app (이 Mac 용)
open build/Spiralday.app직접 빌드한 앱은 이 Mac 에서만 쓰는 애드혹 서명이고, 공증은 받지 않습니다. Apple Silicon · Intel 유니버설로 빌드하려면 UNIVERSAL=1 ./build.sh.
처음 열면 튜토리얼이 플래너 만들기부터 안내하고, 플래너를 펼치면 둘러보기가 이어집니다.
- 일간 — D-day 붙이기와 원리, COMMENT 와 DAY OFF, 할 일 쓰기 · 완료 표시 · → 넘기기, MEMO, 타임테이블 칠하기와 TOTAL TIME 에 들어가는 기준(설정에서 형광펜마다 포함 · 미포함), 펜 색 고르기, 글씨 · 밥, 오늘의 컬러, 넘기는 법 (단축키 · 클릭)
- 주간 — 위쪽에 이번 주 목표, 마무리하는 날에 리뷰 (별점). 아래 칸은 일간과 같습니다
- 홈 — 섹션마다 무엇을 볼 수 있는지
- 표지와 첫 장 — 첫 장에 하고 싶은 말 적기, 설정에서 PDF 로 뽑아 인쇄하거나 실제 책처럼 두기
튜토리얼과 둘러보기는 설정 → 튜토리얼에서 언제든, 보고 싶은 것을 골라 다시 볼 수 있습니다 (도움말 → 플래너 둘러보기로도 바로 시작).
책장에는 오늘까지 14일을 미리 채워 둔 예시 플래너도 한 권 꽂혀 있습니다. 팔레트 맨 위에서 펼쳐 형광펜 · 체크 표시 · D-day · 주간 목표가 어떻게 쓰이는지 둘러보고, 다 봤으면 설정 → 플래너에서 지우면 됩니다. 지워도 내 기록은 그대로이고, ‘예시 플래너 다시 넣기’로 언제든 다시 넣을 수 있습니다.
| 동작 | 방법 |
|---|---|
| 다음 / 이전 장 | → / ←, 팔레트 ‹ ›, ⌘] / ⌘[ |
| 잡고 넘기기 | 종이 아래 모서리를 끌기 (마우스를 올리면 모서리가 살짝 들려요) |
| 트랙패드 | 두 손가락 가로 스와이프 |
| 오늘 | T · ⌘T |
| 표지 · 첫 장 | 첫날(첫 주)에서 ← 두 번. 표지 앞으로는 넘어가지 않아요 |
| 홈 / 주간 / 일간 | H / W / D · ⌘0 / ⌘1 / ⌘2 |
| 동작 | 방법 |
|---|---|
| 할 일 | 아무 빈 줄이나 눌러 쓰기 (가운데 줄부터 써도 그 자리에 남아요). Return 은 아랫줄로 (비어 있으면 같은 형광펜으로 새 할 일), ↑ ↓ 는 윗줄 · 아랫줄로. 글을 다 지우면 그 할 일도 지워져요 |
| 할 일 분류 | 먼저 쓰고, 할 일의 왼쪽 칸을 눌러 형광펜 고르기 · 없음 (주간은 왼쪽 색 막대 자리). 이미 쓰는 형광펜을 고르면 그 묶음 바로 아래로 모여요 |
| 체크 | 체크 박스 클릭 (○ → △ → × → → → 없음). → 표시하면 다음 날로 넘어가요 (→ 를 떼면 손대지 않은 것은 거둬요) |
| 형광펜 | 팔레트에서 펜 클릭 또는 1–7, 지우개 E — 팔레트 펜은 타임테이블 칠하기 전용 |
| 시간 칠하기 | 타임테이블 드래그 (같은 색을 다시 칠하면 지워져요). TOTAL TIME 에 넣을지는 설정 → 형광펜에서 펜마다 |
| 글씨 / 밥시간 | 팔레트의 글씨 · 밥 을 고르고 칸을 누르거나 끌기 |
| 쉬는 날 | 일간 페이지의 COMMENT ▾ → DAY OFF (적어 둔 COMMENT 는 그대로, ▾ → 작성하기로 돌아와요) |
| 오늘의 컬러 | 팔레트의 색 동그라미 (오른쪽 클릭: 기본값으로) |
| 팔레트 접기 · 펼치기 | ⌘\ 또는 팔레트 끝의 작은 화살표 · 접힌 손잡이 (손잡이에 마우스를 올리면 잠깐 펼쳐지고, 누르면 펼친 채로 고정). 접혀 있어도 지금 도구로 칠할 수 있고, 1–7 · E 로 바꾸면 잠깐 펼쳐 보여 줘요 |
| D-day | 일간 페이지의 D-DAY 칸 또는 팔레트의 D-day (주간 · 홈에서는 오늘) → 저장한 D-day 에서 고르기 · 새로 만들기 · 어제와 같게. 붙이고 떼고 고친 것은 그날에만 |
| 하고 싶은 말 | 첫 장 가운데를 눌러 쓰기 (⌥↩ 줄 바꿈) |
| 편집 끝 | Esc 또는 종이 빈 곳 클릭 |
플래너(여러 권) · 형광펜 이름/색/순서/TOTAL TIME 포함 · 컬러 컨셉 기본값 · 저장한 D-day 목록 (개수 제한 없음, 날마다 여기서 골라 붙이기) · PDF (표지와 첫 장 넣기) · 팔레트 (자리: 오른쪽 · 왼쪽 · 위 · 아래, 자동으로 접기) · 단축키 · 데이터 백업 · 튜토리얼과 둘러보기 다시 보기
⌘P 또는 설정 → PDF
| 종류 | 용지 | 한 장에 |
|---|---|---|
| 일간 | A4 세로 | 하루 |
| 일간 | A4 가로, 반씩 | 이틀 — 가운데 선을 따라 자르면 실물 플래너 크기 |
| 주간 | A4 가로 | 한 주 |
| 홈 | A4 가로 | 통계 |
일간 · 주간은 맨 앞에 표지와 첫 장을 넣을 수 있습니다 (기본 켜짐). A4 반쪽은 첫 장에 둘이 나란히 들어가서, 잘라 묶으면 실제 책처럼 가지고 다닐 수 있습니다.
기록이 없는 날은 빈 양식으로 나오니, 인쇄해서 종이 플래너로도 쓸 수 있습니다.
~/Library/Application Support/Spiralday/
├── library.json # 플래너 목록, 펼친 플래너, 예시 플래너를 꽂았는지
└── books/<id>.json # 플래너 한 권의 기록 · 형광펜 · 저장한 D-day · 날마다 붙인 D-day · 첫 장에 적은 말
1.0.3 에서 D-day 가 날마다 따로 붙도록 바뀌었습니다. 1.0.2 까지 쓰던 플래너를 처음 열면 원본을 books/<id>.json.before-per-day-dday.json 으로 남긴 뒤, 이미 쓴 날과 그날(오늘)에만 지금까지의 D-day 를 붙여서 전과 똑같이 보이게 옮깁니다. 이 사본은 그 플래너를 지울 때 함께 지워집니다.
1.0.5 부터 할 일마다 TASKS 의 줄 번호를 함께 적습니다. 1.0.4 까지 쓴 할 일은 처음 열 때 그때 보이던 줄 그대로 번호를 매기고, 다음에 저장할 때 파일에 적습니다.
입력은 즉시 자동 저장됩니다 (원자적 쓰기, 종료 시 즉시 저장). 백업은 폴더째 복사하거나 설정 → 데이터 → 백업 내보내기.
플래너 기록은 내 Mac 밖으로 나가지 않습니다. 1.0.2 부터 하루 한 번 익명 사용 통계(무작위 설치 번호 · 앱 버전 · macOS 버전 · 칩 종류 · 언어)만 보내고, 설정 → 데이터에서 끌 수 있습니다. 자세한 내용은 개인정보 처리방침.
flowchart LR
subgraph AppKit
WC[MainWindowController<br/>창 = 종이 · 비율 고정 · 전환]
PC[Palette<br/>옆에 뜨는 도구 패널]
RW[Rings<br/>창 밖 스프링 링]
end
subgraph SwiftUI
RV[RootView] --> PV[PageView]
PV --> DP[Daily]
PV --> WP[Weekly]
PV --> HP[Home]
end
subgraph Metal
CC[CurlController<br/>입력 · 물리] --> CR[Curl shader]
end
WC --> RV
RV --> CC
PS[PageSnapshotter] --> CC
Store[(PlannerStore<br/>books)] --> PV
State[AppState<br/>페이지 · 범위] --> RV
- 디자인 단위 — 페이지는 고정된 디자인 좌표로 그립니다 (일간 1277×2000, 주간·홈 2000×1277). 창 크기에 맞춰
u = 창 너비 / 디자인 너비를 곱합니다. - 페이지 넘김 — 넘김이 시작되기 전에 앞뒤 페이지를 비트맵으로 미리 그려 두고, 원통형 말림 모델을 픽셀 셰이더로 계산합니다 (뒷면 비침, 그림자, 안티에일리어싱, 스프링 물리). 셰이더는 실행 중 한 번 컴파일되어 별도 Metal 툴체인이 필요 없습니다.
- 흘려 쓰기 — CoreText 로 손글씨 줄바꿈을 계산해 인쇄된 줄에 맞춥니다. 할 일은 아래 줄이 비어 있는 동안만 이어 쓰고 막히면 글씨를 줄이며, MEMO 는 넘치면 줄 수를 늘리면서 간격과 글씨를 같은 비율로 줄입니다.
코드는 두 타깃으로 나뉩니다. SpiraldayKit (라이브러리, macOS 14 · iOS 17) 에 종이 · 저장 · 페이지 그리기 · 넘김 엔진이 있고, Spiralday (macOS 앱) 는 그 위의 창 · 팔레트 · 설정 같은 앱 셸입니다.
| 폴더 / 파일 | 역할 |
|---|---|
Sources/SpiraldayKit/ |
|
Models.swift · SharedReader.swift |
플래너(책) · 기록 · 저장, 읽기 전용 읽기 |
Theme.swift · Platform.swift |
색 · 글꼴 · 종이 바탕 · 디자인 단위, 플랫폼 차이 (글꼴 · 햅틱 · 링크 · 커서) |
DailyTemplate.swift · DailyPage.swift |
일간 양식 인쇄 레이어 / 손글씨 레이어 |
WeeklyPage.swift · HomePage.swift · HomeStats.swift |
주간, 홈 통계 |
FrontMatter.swift · PageView.swift · Rings.swift |
책 맨 앞의 표지 · 첫 장, 페이지 · 스냅샷, 스프링 |
Components.swift · RuledText.swift |
인라인 편집, 체크 표시, 타임테이블 레이어, 흘려 쓰기 |
AppState.swift · Curl/ |
펼친 장 · 넘기기 · 단축키, Metal 페이지 넘김 엔진 |
PDFExport.swift · SampleBook.swift · DataSafetyText.swift |
PDF 그리기, 예시 플래너, 읽지 못한 파일 알림 글 |
Sources/Spiralday/ |
|
App.swift · WindowController.swift · RootView.swift · RingWindow.swift |
앱, 창 = 종이, 창 밖 스프링 |
Palette.swift · Settings.swift · Onboarding.swift · Tour.swift · PDFExportWindow.swift |
도구 팔레트, 설정, 튜토리얼, 플래너 둘러보기, PDF 창 |
Telemetry.swift · StarPrompt.swift · DataSafety.swift |
익명 사용 통계, GitHub ⭐ 부탁 (한 번만), 데이터 안전 알림 |
swift build
swift test # SpiraldayKit: 페이지 · 넘김 그리기, 저장 · 읽기 전용 읽기
.build/debug/Spiralday --demo # 샘플 데이터 (실제 기록을 건드리지 않음)
.build/debug/Spiralday --snapshot ./out # 페이지 · 넘김 프레임 · 표지 · 첫 장 PNG (--front-qa 를 더하면 여러 경우와 번호 점검까지)
.build/debug/Spiralday --pdf-test ./out # PDF 레이아웃 4종 샘플
.build/debug/Spiralday --demo --star-prompt # GitHub ⭐ 부탁 창 미리 보기
.build/debug/Spiralday --dday-migrate-test old.json out.json # 옛 책 파일의 D-day 옮기기를 복사본으로 해 보고 요약 출력
.build/debug/Spiralday --sample-book-test ./out # 예시 플래너 JSON · 표지 · 첫 장 · 모든 장 PNG · 책장 동작 확인 (실제 기록을 건드리지 않음)
.build/debug/Spiralday --tour-test ./out # 플래너 둘러보기의 모든 단계 PNG (--palette-edge left|top|bottom 으로 팔레트 자리를 바꿔 보기)
.build/debug/Spiralday --palette-test ./out # 팔레트 네 자리 × 펼침 · 접힘(펜 · 지우개 · 글씨 · 밥) 을 종이 옆에 그린 PNG, 설정의 자리 고르기
.build/debug/Spiralday --demo --palette-edge top # 설정을 건드리지 않고 이번 실행만 팔레트를 그 자리에
build/Spiralday.app/Contents/MacOS/Spiralday --ping-test # 익명 통계를 한 번 보내 보고 결과 출력site/ 에는 소개 페이지 spiralday.com 이 들어 있습니다.
- 월간 페이지
- iCloud Drive 동기화 (선택)
- 종이 넘김 소리 (선택)
MIT © 2026 LeanAgileHungry Inc.
- 손글씨 폰트 Poor Story — © YoonDesign Inc., SIL Open Font License 1.1
- 페이지 구성은 흔히 쓰는 10분 단위 종이 플래너 형식에서 영감을 받았으며, 특정 제품의 상표와 로고는 포함하지 않습니다.



