Core Problems
Creators should only have to do the work of uploading and annotating their work once and own their own work in their repos. That work should be able to be taken to any other platform freely. A creator's audience should ideally be able to easily follow them from one platform to another. Accessibility should be a top priority through annotations (alt-text) and localization. Allow creators to optionally expose their process through process image layers that can be pealed back in an AppView. Credit creators with roles and direct links to their dids. Allow content warnings to be set by creators, but AppViews can also enable third-party labelers.
These are AT Protocol lexicons for BlamPow, a Webtoons style vertical comics sharing platform. Records live under the app.blampow.* namespace.
Ideally, these lexicons would be an interopable standard established elsewhere similar to standard.site.
Many variables have been left as open-ended strings rather than enums to allow for each AppView to implement their own values. AppViews can choose to support specific values or throw them out entirely.
TODO: Define lexicons page based comic book formats. These would need something like Series > Issue?/Chapter? > Page > Panel. Each page could have localizedImage and process blobs. Alt-text may need to be hoisted out of localizedImage and be per Panel. Covers may need localizedImage and process blobs as well as maybe variants?
A comic series. Currently, BlamPow only implements the vertical format.
| Property | Type | Required | Description |
|---|---|---|---|
title |
string (max 100) | yes | The title of the series. |
banner |
blob (jpeg/png, max 4 MiB) | yes | The banner image of the series. 3:1 aspect ratio (e.g. 3000×1000). |
ogImage |
blob (jpeg/png, max 4 MiB) | yes | The Open Graph share image of the series. 1.91:1 aspect ratio (e.g. 1200×630). |
description |
string (max 255) | yes | A short description of the series. |
createdAt |
string (datetime) | yes | The date and time the series was created. |
categories |
array of defs#category (min 1) |
yes | Categories for this series. Max is open-ended, each AppView can implement their own max number of categories per series. |
format |
string | yes | The reading format of the series. Apps may define their own formats. |
contentWarnings |
array of series#contentWarning |
no | Content warnings for this series. |
chapters |
array of at-uri | no | Ordered list of chapters in this series. |
A content warning for a series. AppViews may define their own content warnings. (string)
Example of content warnings that BlamPow implements:
profanity— Profanitynudity— Nuditysexual— Sexual Contentviolence— Violencegore— Gore
A chapter in a series.
| Property | Type | Required | Description |
|---|---|---|---|
series |
string (at-uri) | yes | AT-URI of the parent series. |
title |
string (max 100) | no | Chapter title or number. |
description |
string (max 3000) | no | A short description of the chapter. |
createdAt |
string (datetime) | yes | When the chapter record was created. |
publishedAt |
string (datetime) | no | The date and time the chapter was published. |
cover |
blob (jpeg/png, max 4 MiB) | yes | The cover image of the chapter. |
slices |
array of at-uri | no | Ordered list of slices that make up this chapter. |
credits |
array of defs#credit |
no | The credits for the people who worked on this chapter. |
A slice of a vertically formatted comic.
| Property | Type | Required | Description |
|---|---|---|---|
chapter |
string (at-uri) | yes | AT-URI of the parent chapter. |
createdAt |
string (datetime) | yes | The date and time the slice was created. |
images |
array of defs#localizedImage (min 1) |
yes | Localized final images for this slice. |
process |
array of slice#process |
no | The process of creating the slice. |
aspectRatio |
defs#aspectRatio |
no | The aspect ratio of the slice. |
A single in-progress artwork capture.
| Property | Type | Required | Description |
|---|---|---|---|
image |
blob (jpeg/png, max 2 MiB) | yes | The process image. |
step |
string | yes | The step of process. AppViews may define their own steps. |
Example of process steps that BlamPow implements:
thumbnails— Thumbnailslayout— Layoutroughs— Roughspencils— Pencilslineart— Line Artinks— Inksflats— Flatscolors— Colorsletters— Letters
Shared object and token definitions referenced by other lexicons.
| Property | Type | Required | Description |
|---|---|---|---|
image |
blob (jpeg/png, max 2 MiB) | yes | The localized image. |
lang |
string (length 2) | yes | ISO 639-1 language code for this image. |
alt |
string (max 10000) | no | A visual description of the image. |
| Property | Type | Required | Description |
|---|---|---|---|
width |
integer | yes | Width component of the ratio. |
height |
integer | yes | Height component of the ratio. |
| Property | Type | Required | Description |
|---|---|---|---|
displayName |
string (max 100) | yes | Display name of the credited person. |
did |
string (did) | no | DID of the credited person, if they have one. |
role |
string | yes | The role of the credit. AppViews may define their own roles. |
Example of credit roles that BlamPow implements:
writer— Writerpenciler— Pencilerinker— Inkercolorist— Coloristflats— Flatsletterer— Letterercover— Cover Artistcreator— Creatoreditor— EditoreditorInChief— Editor-in-ChiefassociateEditor— Associate EditorassistantEditor— Assistant Editordesigner— Designerartist— Artisttranslator— Translatorpainter— Painterbackgrounds— Backgroundsother— Other
A category for a series. AppViews may define their own categories. (string)
Example of categories that BlamPow implements:
action— Actionadventure— AdventurealternateHistory— Alternate Historyanimals— AnimalsantiHero— Anti-Herocomedy— ComedycomingOfAge— Coming of Agecooking— Cookingcrime— Crimecyberpunk— Cyberpunkdrama— Dramadystopian— Dystopianeducational— EducationalenemiesToLovers— Enemies to Loversespionage— Espionagefashion— Fashionfantasy— FantasyfeelGood— Feel-Goodfolklore— FolklorefoundFamily— Found Familygaming— Gamingheartwarming— Heartwarminghistorical— Historicalhorror— Horrorinformative— Informativeinspirational— Inspirationallegal— Legallgbtq— LGBTQ+loveTriangle— Love Trianglemedical— Medicalmedieval— Medievalmelodrama— Melodramamonsters— Monstersmusic— Musicmystery— Mysterymythology— Mythologynoir— Noirparody— Parodypirate— Piratepolitical— PoliticalpostApocalyptic— Post-Apocalypticpsychological— Psychologicalreligious— Religiousromance— RomanceromanceFantasy— Romance Fantasysatire— Satireschool— SchoolsciFi— Sci-FisliceOfLife— Slice of LifeslowBurn— Slow BurnspaceOpera— Space Operasports— Sportssuperhero— Superherosupernatural— Supernaturalsurvival— Survivalsuspense— Suspensethriller— ThrillertimeTravel— Time Traveltragedy— Tragedyutopian— Utopianvampires— Vampireswar— Warwerewolves— Werewolveswestern— Westernwholesome— Wholesomeworkplace— Workplacezombies— Zombies