Show HN: Citadel, ứng dụng quản lý sách điện tử tương thích với Calibre
(github.com/every-day-things)- Citadel là ứng dụng quản lý thư viện sách điện tử, hướng tới UX tốt hơn và cảm giác nhanh hơn trong khi vẫn duy trì thư viện sách điện tử mà Calibre có thể đọc được
- Mục tiêu cốt lõi là tương thích ngược với Calibre, giao diện dễ dùng và đẹp mắt, cùng hiệu năng cho cảm giác nhanh hơn nhiều so với Calibre và tuyệt đối không chậm hơn
- Hiện tại đây là phần mềm giai đoạn đầu, nên có thể có lỗi và thiếu tính năng; ứng dụng có thể bị crash, thiếu các chức năng cơ bản hoặc làm hỏng thư viện sách điện tử
- Citadel không phải là trình đọc sách điện tử hay trình chỉnh sửa nội dung sách điện tử; ứng dụng mở tệp bằng app mặc định và tập trung vào quản lý metadata như tiêu đề
- Có thể tải bản ổn định từ Releases, bản phát triển từ GitHub Actions, và việc phát triển cần Bun cùng Rust
Citadel hướng tới điều gì
- Citadel là ứng dụng quản lý thư viện sách điện tử, với tiền đề cốt lõi là khả năng tương thích ngược với Calibre
- Thư viện mà Citadel chỉnh sửa phải có thể được Calibre đọc
- Dự án có ba mục tiêu
- Tương thích ngược với Calibre: thư viện do Citadel chỉnh sửa phải có thể được Calibre đọc
- UX tốt: phải dễ dùng và đẹp mắt
- Hiệu năng: phải cho cảm giác nhanh hơn nhiều so với Calibre và tuyệt đối không được chậm hơn
Những điều không làm
- Citadel không phải là trình đọc sách điện tử
- Đã có nhiều ứng dụng đọc sách điện tử tốt, và Citadel sẽ mở tệp bằng ứng dụng mặc định của người dùng
- Citadel không phải là trình chỉnh sửa nội dung sách điện tử
- Nếu mục đích là chỉnh sửa nội dung thân sách thay vì metadata như tiêu đề, thì đây không phải công cụ thay thế
- Không hướng tới tương đương 100% tính năng với Calibre
- Chủ yếu là ở mảng plugin
- Một số tính năng nâng cao của Calibre có thể sẽ không được làm
Trạng thái hiện tại và tải xuống
- Citadel đang ở giai đoạn phát triển rất sớm
- Có thể bị crash
- Có thể thiếu các tính năng cơ bản
- Có thể làm hỏng thư viện sách điện tử
- Nếu dùng Citadel với thư viện Calibre thì cần sao lưu định kỳ
- Có thể tải các bản build tương đối ổn định từ Releases
- Có thể tải các bản build phát triển từ GitHub Actions
- Tác giả đề nghị báo cáo mọi vấn đề hoặc lỗi crash gặp phải khi dùng bất kỳ phiên bản nào
Lưu ý cài đặt trên macOS
- Bản build cho macOS hiện vẫn chưa được ký
- Nếu mở trực tiếp
Citadel.app, sẽ hiện cảnh báo tệp bị “damaged” - Có thể khắc phục bằng cách xóa thuộc tính Quarantine của tệp
- Hướng dẫn liên quan: Removing the Quarantine attribute from the file
- Lệnh ví dụ:
xattr -d com.apple.quarantine /Applications/Citadel.app/
Phát triển và build
- Điều kiện tiên quyết để phát triển là cài Bun và Rust
- Cài package:
bun install - Chạy môi trường phát triển:
bun run dev # or just bun dev - Các lệnh lint và format như sau
- Format toàn bộ mã:
bun format - Kiểm tra format toàn bộ mã:
bun format:check - Lint toàn bộ mã:
bun lint - Format backend:
bun format:backend - Lint backend:
bun lint:backend - Format frontend:
bun format:web - Lint frontend:
bun lint:web
- Format toàn bộ mã:
- Có thể chạy bản xem trước của ứng dụng mà không cần backend
- Vì giả định backend Rust tồn tại dù thực tế không có, nên sẽ hiện lỗi
bun dev:app - Có thể tạo bản build production bằng các lệnh sau sau khi đã chuẩn bị đủ điều kiện phát triển
bun install bun run build
Cập nhật và các dự án liên quan
- Citadel có thể kiểm tra cập nhật ứng dụng và cài đặt khi được yêu cầu
- Có thể tắt việc tự động kiểm tra cập nhật trong Settings tại
Auto updates: On/Off - Việc cài đặt luôn được thực hiện một cách tường minh, và câu chữ trên UI là
Install and restart - Chi tiết về cấu hình cho maintainer và quy trình phát hành có tại
docs/updater-and-releases.md - Citadel lấy Calibre làm điểm tham chiếu và được truyền cảm hứng từ Calibre redesign Figma prototype
1 bình luận
Ý kiến trên Hacker News
Có thể sẽ có người hỏi: "Tại sao không đóng góp cho các dự án hiện có như Calibre Web mà lại làm ứng dụng mới?" Câu trả lời là chỉ đơn giản vì muốn làm
Hiện tại đây là một dự án sở thích, nên thay vì mở rộng các dự án có sẵn, tôi hứng thú hơn với việc tự tay làm phần mềm một cách vui vẻ, dù có hơi thô ráp. Citadel được thiết kế để tương thích ngược với Calibre, nên vẫn có thể tiếp tục dùng Calibre Web
Phần backend kết nối với Calibre cũng đã được tách ra thành một thư viện riêng, và sau này tôi muốn để các dự án khác cũng có thể dùng. Có lẽ cũng có thể làm một CLI cho thư viện Calibre
"Trong nhiều lĩnh vực, lời khuyên đừng tái phát minh cái bánh xe gần như đã trở thành lẽ thường. Nhưng đôi khi tôi vẫn muốn khuyên bạn cứ thử làm đi. Chỉ riêng quá trình đó cũng khiến bạn tiến bộ hơn, và rồi những cái bánh xe tốt hơn cũng xuất hiện theo cách đó. Bởi vì có người cứ đơn giản là thử."
https://www.youtube.com/watch?v=YOZnqjHkULc
Calibre khá đau khổ để sử dụng ngay cả khi bạn biết nó có những tính năng gì, nên rất khó để giới thiệu cho cả ông bà lẫn người rành công nghệ
Dù vậy vẫn hy vọng dự án sẽ thành công
[0] https://www.cs.cmu.edu/~awb/linux.history.html
Nếu có một đối thủ đủ vững chắc, cởi mở và hiện đại hơn, được xây dựng với thư viện lưu trữ được host trong đầu, tôi có lẽ sẽ chuyển sang dùng ngay
Đôi khi tôi nghĩ nếu Calibre trông đẹp hơn một chút thì mọi người đã nhận ra nó tuyệt đến mức nào. Thành thật mà nói thì nó không tệ đến vậy, và cá nhân tôi còn thích nó, nhưng có vẻ nhiều người không vượt qua được phần hình thức
Nó liên tục bị crash, quá trình thì chậm đến mức tôi phải chuyển sang một máy riêng. Tìm kiếm qua giao diện web cũng thấy rất chậm
Chưa kể UI thiếu trực quan. Với thứ đóng vai trò như thư viện, nó còn kém xa cả danh sách tác giả theo thứ tự bảng chữ cái/abc kiểu thư viện truyền thống
Tôi hiểu đa số mọi người có lẽ chỉ có khoảng 10 đến 300 cuốn, nhưng tôi đã thử dùng Calibre cho vài thư viện lớn và nó thực sự không chịu nổi
Quyết định cứ khăng khăng dùng SQLite cũng không giúp ích gì. Khoảng năm 2016 tôi đã mở một PR, nhưng người bảo trì khá phản đối việc thay đổi tầng cơ sở dữ liệu hoặc làm nó có thể thay thế được
Hơn nữa, chỉ mất vài giây để dựng một container calibre-web và có ngay UI gọn gàng cùng OPDS, nên tôi không hiểu tại sao lại phải chịu đựng cái "thẩm mỹ" đó
Nó không trực quan và UI/UX khá tệ. Nó đúng kiểu lời nguyền mà các ứng dụng mạnh mẽ thường gặp phải
Dù vậy hôm nay tôi vẫn sẽ thử dùng lại xem có thể làm quen được không. Đặc biệt với người dùng nâng cao thì đây thực sự là một sản phẩm miễn phí rất tuyệt vời
Dự án hay đấy. Tôi thích các tính năng của Calibre, nhưng cũng thấy UI của nó khá bí bách, nên đã bắt đầu thiết kế một giao diện giống như sự pha trộn giữa iTunes thời trước Apple Music và iBooks.
Hiện tôi mới làm được một màn hình, có thể xem ở đây: https://www.figma.com/file/m8qaYbPSnxiFPDPbuYtz2w/Calibre-re...
Câu hỏi cốt lõi là làm sao thể hiện các tính năng chính của Calibre trong một UI có cảm giác như ứng dụng native trên macOS
Nếu không nhắm tới đa nền tảng, có lẽ khi rảnh tôi sẽ thử biến nó thành một ứng dụng SwiftUI với backend Rust
Việc bám theo quá trình phát triển của Calibre để bảo trì có thể sẽ khó, nhưng trông như một dự án sở thích khá thú vị
Đặc biệt, bản redesign mà Kemie Guaida[1] đăng trên Reddit là nguồn cảm hứng thiết kế lớn, và tôi cũng cần thêm phần ghi công vào repository nên sẽ cập nhật sớm: https://old.reddit.com/r/Calibre/comments/udzumn/testing_a_n...
Có thể xem tổng quan toàn bộ dự án ở đây: https://www.figma.com/file/g4ntqXWa6C0PRGrG3WjyXM/Calibre-pr...
[1]: https://kemielikes.design/
Hôm qua tôi mới nhận ra là trên Ubuntu 22.04, sau khi kết nối máy đọc Kobo thì chỉ cần chép file epub vào thư mục
root/tại điểm mount/media/oakhaven/koboreaderlà được. Khi đó nó sẽ xuất hiện trong danh sách sách trên thiết bịKhông hiểu sao tôi cứ nghĩ việc đưa sách lên Kobo là một việc phức tạp, nên từ trước đến giờ mỗi khi chuyển sách từ laptop sang Kobo tôi chỉ dùng Calibre
Tôi biết Calibre còn có nhiều chức năng khác, nhưng tôi không thích giao diện của nó, nên thật vui vì giờ không còn phải dùng Calibre hay ứng dụng tương tự nữa
Không cần định dạng đặc biệt nào cả, và các định dạng chuẩn như ePub hoạt động rất tốt
Vì thế tôi luôn thắc mắc tại sao Kindle vẫn có thể nổi tiếng đến vậy. Có thể là lợi thế người đi trước, nhưng một máy đọc sách điện tử không đọc được ePub và PDF thì giống như một máy nghe nhạc không phát được MP3 và AAC vậy
[1]: https://pgaskin.net/kepubify/
Hình như tôi cho sách vào bằng USB trước, rồi đồng bộ tin tức hằng ngày và sách bổ sung bằng rsync. Một số nội dung được tạo tự động, như thu thập tự động hoặc đăng ký qua email, rồi được đưa vào thư mục; còn một số khác thì tôi thêm thủ công, giống như chép sách mới sau khi mua
Thật ra đây không phải vấn đề quá phức tạp, nhưng Calibre làm được nhiều việc hơn rất nhiều ngoài chuyện sao chép sách vào một cấu trúc thư mục nhất định
Tôi không chắc nó có thực sự dễ hơn việc chỉ mở thư mục rồi copy/paste hay không, nhưng Citadel sẽ cập nhật tệp metadata mà Calibre dùng khi phát hiện những cuốn sách có trên thiết bị, để không cần đọc mọi file trong thư mục
Trông ổn đấy. Mới tuần trước tôi còn thử quay lại dùng Calibre, rồi lại bị hút vào cái hố đen UI đó. Tôi từng nghĩ đến chuyện đóng góp phần UI/UX, nhưng có vẻ sẽ thành một dự án kéo dài nhiều năm
Thay vào đó, có khi tôi có thể giúp phần UI/UX cho dự án này
Ông ấy đã làm được một công việc đáng kinh ngạc, nhưng cũng là kiểu người có gu rất mạnh, nên dù người khác có đề nghị làm giúp thì với một số thứ ông ấy có thể nhanh chóng và khá tùy tiện trở nên kỳ lạ là thù địch
Sau đó đọc sách trong vài tháng rồi lặp lại quy trình nhập sách
Thành thật mà nói tôi khá tò mò, có ví dụ nào về ứng dụng smartphone native vừa giàu tính năng như Calibre mà lại cung cấp chúng theo cách tốt hơn và dễ hơn đáng kể không?
Điểm hay là đây là một dự án sở thích đã được phát hành thật sự. Nhìn cũng rất gọn gàng. Và calibre CLI chắc chắn là thứ được hoan nghênh. Tôi ghét phải bấm qua năm lớp menu mới vào được chỗ cần tìm
Nếu phần "trình đọc" và "trình chỉnh sửa" không phải là mục tiêu được nhắm tới một cách rõ ràng, thì tôi tò mò Citadel thực sự làm gì cho người dùng. Chủ yếu là một cổng để xem, sắp xếp và nhấp vào sách thôi sao? Có lộ trình nào với nhiều tính năng hơn không?
Citadel hỗ trợ chỉnh sửa metadata như tên sách, tác giả, và sau này là thẻ cùng các cột tùy chỉnh; thực ra hiện đã hỗ trợ một phần rồi. Điều đó là chắc chắn. Đồng bộ thiết bị cũng sẽ được thêm vào theo thời gian, và tính năng tải metadata từ các nguồn trực tuyến cũng dự kiến sẽ được bổ sung
Tuy vậy, không có kế hoạch chỉnh sửa nội dung sách hay tích hợp trình đọc sách điện tử. Đã có rất nhiều ứng dụng và thiết bị đọc ebook rất tốt rồi, và việc chỉnh sửa epub có lẽ không phổ biến bằng quản lý bộ sưu tập
Không có lộ trình cụ thể, nhưng luôn sẵn sàng đón nhận phản hồi và ý tưởng
Ngoài ra, các tính năng như chuyển đổi định dạng và gỡ DRM có lẽ cũng sẽ được thêm vào. Lý tưởng nhất là triển khai chúng bằng crate hoặc plugin để việc mở rộng trở nên dễ dàng hơn
ebook-convert. Nó hỗ trợ nhiều định dạng tệp như epub, pdf, azw3, mobiVí dụ:
ebook-convert file.epub file.azw3Trông thật sự rất tuyệt, tôi định sẽ xem thử. Trớ trêu là gần đây tôi cũng làm một ứng dụng desktop để quản lý audiobook bằng đúng stack này, tức Rust + Tauri + Svelte
Nếu có ai quan tâm thì xin quảng bá luôn: https://gitlab.com/fonner/audiobook-locker#audiobook-locker
Tôi tò mò vì sao bạn chọn Svelte và Tauri cho dự án này. Bạn đã quen với chúng từ trước rồi à?
Hơi lạc đề một chút, nhưng cách chạy này đã làm ngày của tôi vui hơn
bun dev -- -- -- -- --server ...Thú vị đấy. Tôi cũng đã bắt đầu làm một dự án tương tự với ý tưởng gần giống như vậy được một thời gian, nhưng thay vì ứng dụng native thì tôi chọn SvelteKit và trình duyệt
https://github.com/project-kiosk/kiosk
Tôi không giữ được động lực đủ lâu để hoàn thành nó
Một bài viết ngắn về Citadel: https://denhoff.ca/posts/replacing-calibre