Skip to content

Commit 2a63a24

Browse files
committed
Fix headings
1 parent c99a4f2 commit 2a63a24

1 file changed

Lines changed: 13 additions & 13 deletions

File tree

blog/2026-01-01-december/index.md

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -68,15 +68,15 @@ Upgraded to Django 5.2.9 and added documentation for User Collections and Readin
6868

6969
Now that User Collections is up and running and Reading Lists have been improved, the plan is to refine these features based on user feedback and explore additional integration opportunities.
7070

71-
# Desaad: A Comic Book Library Management System
71+
## Desaad: A Comic Book Library Management System
7272

73-
## What is Desaad?
73+
### What is Desaad?
7474

7575
[Desaad](https://codeberg.org/bpepple/desaad) is a self-hosted, web-based comic book library manager and reader built with Django that I've been working on over the past week or so. I created it to test and plan features for Metron that might be useful for other comic servers.
7676

77-
## Key Features
77+
### Key Features
7878

79-
### Library Management
79+
#### Library Management
8080

8181
Desaad imports CBZ, CBR, and PDF comic archives and automatically pulls metadata from MetronInfo.xml files - things like series information, publishers, creators, characters, teams, universes, and story arcs. I'm not planning to add ComicInfo.xml support, since there are a _lot_ of comic servers that already do.
8282

@@ -94,11 +94,11 @@ It uses [Darkseid](https://github.com/Metron-Project/darkseid) for handling comi
9494
style={{maxWidth: '100%', height: 'auto'}}
9595
/>
9696

97-
### Built-in Web Reader
97+
#### Built-in Web Reader
9898

9999
The web reader uses [HTMX](https://htmx.org/) and automatically saves your reading position and progress, so you can pick up where you left off.
100100

101-
### Reading Lists
101+
#### Reading Lists
102102

103103
You can import reading lists from [Metron](https://metron.cloud) using the API. The feature automatically tracks which issues are in your library and shows you which ones you're missing.
104104

@@ -108,25 +108,25 @@ You can import reading lists from [Metron](https://metron.cloud) using the API.
108108
style={{maxWidth: '100%', height: 'auto'}}
109109
/>
110110

111-
### OPDS 1.2 Catalog Support
111+
##### OPDS 1.2 Catalog Support
112112

113113
You can access your comic library from mobile devices and e-readers using OPDS-compatible apps like Chunky Comic Reader (iOS), Panels (iOS), or Challenger Comics Viewer (Android).
114114

115115
I tried testing it with the Challenger app, but their OPDS support doesn't seem to work and is still marked as Beta. If anyone wants to test with Chunky or Panels, I'd appreciate hearing how it goes.
116116

117-
### Auto-Import Functionality
117+
#### Auto-Import Functionality
118118

119119
There's an import management command that you can run manually or set up to watch a directory for new comics.
120120

121121
I haven't optimized it much yet - the most expensive part is cover extraction, which I'll probably move to a background task at some point. I deployed it on a spare [GMKtec NucBox G3](https://www.gmktec.com/products/nucbox-g3-most-cost-effective-mini-pc-with-intel-n100-processor) I had, and it took about 3 hours to import around 65,000 comics. Once I move cover extraction to a background task, I should be able to get that down to 1-2 hours.
122122

123-
## Technical Foundation
123+
### Technical Foundation
124124

125125
Desaad is built on Django 6.0 with SQLite for simplicity (though I'll probably switch to PostgreSQL at some point since SQLite has some performance limitations and missing features). The frontend uses the Bulma CSS framework with HTMX, and comic processing is handled by the [Darkseid](https://github.com/Metron-Project/darkseid) library. It's container-ready with Podman support and systemd integration.
126126

127127
It requires Python 3.13+ and uses the [uv](https://github.com/astral-sh/uv) package manager for dependency management.
128128

129-
## Important Considerations
129+
### Important Considerations
130130

131131
A few things to keep in mind about Desaad:
132132

@@ -136,11 +136,11 @@ A few things to keep in mind about Desaad:
136136

137137
3. **Under Active Development**: The project is still under construction and not ready for production use. Features and APIs will change.
138138

139-
## Who Should Use Desaad?
139+
### Who Should Use Desaad?
140140

141141
Desaad might be a good fit if you're a developer or tester who prefers browser-based reading and wants to see possible new features like scrobbling. It works best if your collection uses metadata from a single source (Metron, Comic Vine, or Grand Comics Database). If your collection has mixed metadata from multiple sources, Desaad probably isn't the right tool for you.
142142

143-
## Getting Started
143+
### Getting Started
144144

145145
Setting up Desaad is pretty straightforward:
146146

@@ -165,7 +165,7 @@ uv run python manage.py runserver
165165

166166
For production deployments, there are Podman compose configurations with systemd service integration.
167167

168-
## Container Deployment
168+
### Container Deployment
169169

170170
If you're using Fedora Linux, the included Podman configuration should make deployment simple. It should work on other systems running Podman too, but I haven't tested that yet. To get started:
171171

0 commit comments

Comments
 (0)