Lokal nettapp · under arbeid
Estante virtual
En hylle med bøker og manga som kjører på datamaskinen din. Hvert bind er en rygg tegnet i CSS, i fargene fra sitt eget omslag; et klikk åpner et panel med omslag, detaljer, lesestatus, framdrift, karakter og notater.
github.com/wtuxen/estante_virtualHva den gjør
- Rygger
- Bakgrunns- og aksentfarge hentes fra omslaget. Høyden følger formatet (pocket, tankōbon, trade, innbundet, artbook) og bredden sidetallet. Manga viser bindnummeret nederst.
- Serier
- Ett bind per rygg, som i en ekte hylle, og bind i samme serie deler farge. I seriemodus blir hver serie en boks, med samlet framdrift og et rutenett av omslag.
- Lesing
- Status (ulest, leser, lest, avbrutt), leste sider, karakter fra 1 til 5 og notater som lagres av seg selv. Søk, statusfilter og sortering holder seriene samlet.
- Import
- Bøker kommer fra Markdown-filer med feltene fra Google Books; manga fra eksporten til MyAnimeList, med omslag og titler hentet fra MangaDex.
Hvordan dataene lagres
To filer, koblet med id. Katalogen (titler, forfattere, omslag, farger) lages av importen og kan bygges på nytt når som helst. Tilstanden (status, sider, karakterer, datoer og notater) skrives bare av appen, og er den som ikke kan gå tapt: den lagres atomisk, via en midlertidig fil og et navnebytte, og blir den noen gang ødelagt, nekter serveren å skrive over den. Ny import av katalogen sletter aldri et notat.
Valg
- Ingen byggesteg: grensesnittet er ren HTML, CSS og JavaScript, servert av en liten Express-server som bare lytter på 127.0.0.1.
- Endringer sendes til serveren én om gangen, i rekkefølge, med forsinkelse på notater og nytt forsøk ved feil. Et nytt forsøk sender aldri en gammel verdi over en nyere.
- Lesehistorikken fra MyAnimeList fyller bare tomme felt, så den kan kjøres igjen uten å angre det som er endret i hyllen. Framdrift som bare er lagret i kapitler, blir til bind via kapittelkartet til MangaDex.
- Importen respekterer grensen for forespørsler hos MangaDex, sender sin egen User-Agent og laster ned omslagene lokalt i stedet for å lenke direkte til dem.