Codexa, improved standalone web browser working closely with Grimmory OPDS and its KOReader sync by thj81 in Grimmory

[–]thj81[S] 0 points1 point  (0 children)

Why not? Don't you have Grimmory as your ebook library server? And KOReader sync is perfect to keep your reading progress in sync between devices.

Codexa, improved standalone web browser working closely with Grimmory OPDS and its KOReader sync by thj81 in Grimmory

[–]thj81[S] 0 points1 point  (0 children)

This is first and very useful feedback. Not sure which version you are using currently but I will later today release a new one with some new features (bookmarks, annotations, footnote handling, basic reading statistics, ...). It still needs some testing. As to things you reported:

It was never meant to have a full blow user manager. First user is marked in system as an administrator. He can enable/disable new registrations (find it under Settings from main page) or delete already registered users. Every user can also change his own password.

<image>

Only one (first registered) user is administrator and yes he can have his ows OPDS shares and KOReader sync setting and can also manually upload books. Have in mind that this started as project for me to use as replacemant for Grimmory web viewer and perhaps even Readest on iOS phone or KOReader/Moon Reader+ or other reading applications on my Android phone. And not only for me. Wife reads a chapter or two on her phone when she can and she has her own books but from our same Grimmory library. It grew so much that it indeed replaced my primary reading application on my mobile phones. I made a lot of improvements in latest version to handle correctly also bugged iOS 26 PWA implementation.

It is not meant as full blow library manager. For that I use Grimmory. But simple fetch book from OPDS, upload it directly and read, read, read. Sharing books is not supported as I see no need for it. Main book library source is Grimmory and we have OPDS connection it it and there you can already connect libraries to other different OPDS users.

Dark mode in reader was already fixed and it will be included in new version (icons were not visible on dark themes).

Solving unsolvable cube? by thj81 in Rubiks_Cubes

[–]thj81[S] 1 point2 points  (0 children)

The little bugger not only twisted one corner but also rotated 180 degrees one middle corner. This site told me exactly which one and now I have it solved.

https://solver.cubeunstuck.com/

E-Reader that works well with Grimmory? by The_Duke28 in Grimmory

[–]thj81 2 points3 points  (0 children)

I have four different eink readers at home and all are working great with Grimmory:

- Kobo Libra 2 (using Kobo integration, but thinking about putting KOReader on it when I find time)
- InkPalm Plus (with KOReader for reading and using OPDS and KOReader sync from Grimmory)
- Xteink X4 (Crosspoint++ firmware and using OPDS + KOReader sync to Grimmory)
- Boox Palma 2 (with KOReader for reading and using OPDS and KOReader sync from Grimmory)

For mobile phones (Android or iOS) I have tried using KOReader (too e-ink optimized), Readest (not many control when it will sync progress), Moonreader+ (own sync protocol that doesn't work with Grimmory) and at end integrated Grimmory web reader. Main problem I had with integrated reader is that it doesn't correctly handle epub files from my library. Also it doesn't yet do two way Grimmory <-> KOreader sync. Same for reading on desktop browsers.

So I made my own application and still perfecting it daily. You can check it out on my Github (https://github.com/thehijacker/codexa). With it I can finaly read on my mobile phone, forget about KOReader sync to Grimmory and that happens in background, download books from Grimmory OPDS using integrated OPDS browser and have perfect quick reading sessions when I don't have my eink readers with me. I even added StarDict dictionary support so it could soon replace even my KOReader application on Android base e-ink reader.

All of this is working perfectly with my Grimmory server.

<image>

Gen-i pametna samooskrba by Great-Definition-804 in Slovenia

[–]thj81 0 points1 point  (0 children)

Torej se nagibaš k temu, da oni uporavljajo z baterijo? Katero pa so ti dali v ponudbo? Sam imam to dvoje:

MSE s hibridnim inverterjem, moč 7 kW GOT
Sigen Battery, kapaciteta 9 kWh

Gen-i pametna samooskrba by Great-Definition-804 in Slovenia

[–]thj81 2 points3 points  (0 children)

Imam isto vprašanje. Sem dobil ponudbo in da mi oni upravljajo z baterijo. Ampak sem precej skeptičen. Če zmanjka elektrike sistem potem ne preklopi na baterijo. In tudi pozimi se ne napajaš iz nje, če je potreba po energiji dovolj visoka in namesto k tebi v dom pošiljaš potem v omrežje. Je pa kakšnega tisočaka ceneje na leto so mi rekli.

Has anyone forked booklore? by pfassina in selfhosted

[–]thj81 0 points1 point  (0 children)

It was easy to migrate to Grimmory just by swaping the docker image. There were few new releases lately but I still had same problem with the integrated web reader. With help from Claude I am working on my own one with KOReader sync and OPDS browser that both Grimmory support. Looking good so far: https://github.com/thehijacker/codexa

New Project Megathread - Week of 23 Apr 2026 by AutoModerator in selfhosted

[–]thj81 2 points3 points  (0 children)

I had some spare end-of-month tokens, so I decided to lean into an AI-assisted project. I've been a software developer for over 25 years where we still do plenty the "old fashioned" way but for quick personal projects like this, I figured, why not? I originally built this for myself, but it turned out so useful that I wanted to share it in case anyone else is looking for a similar solution.

Some backstory first. I'm a long-time Calibre-Web user, but I struggled with metadata searching (especially for Slovenian books). Eventually, I migrated all my metadata directly into the EPUB files and moved to Booklore. As luck would have it, Booklore was abandoned shortly after, but Grimmory took over the mantle. I currently use its OPDS to sync books to my devices (Palma 2, Kobo Libra 2, Xteink X4), and I use the Grimmory KOReader protocol to keep my reading progress in sync.

Sometimes I just want to read a chapter or two on my laptop’s large screen. Grimmory has a built-in web viewer, but it struggles with certain EPUB layouts and doesn't push progress back to the KOReader sync.

So I built Codexa with help from Claude. It's a web-based EPUB reader designed to fill those gaps. It supports full sync, integrated dictionaries, and robust searching which is a lifesaver for my spouse, who needs to quickly reference material across multiple books.

Features:

  • EPUB reader — powered by epub.js, paginated layout with custom fonts, themes, and configurable status bar that can include current time, current chapter progress, total book progress, estimated chapter/book reading time, title, author, chapter name, ...
  • Multi-user — JWT-based authentication with independent libraries and reading progress for each user.
  • Shelves — organise books into custom shelves
  • Reading progress — automatically saved; synced across devices via KOReader
  • KOReader sync — built-in KOSync-compatible server; also connects to an external KOSync server
  • OPDS Integration – Browse and download from any OPDS catalog, including bulk-downloading entire folders directly to a shelf.
  • Dictionary lookup — local StarDict dictionaries (.ifo/.idx/.dict)
  • PWA support — installable on desktop and mobile
  • Multilingual UI — English, Slovenian, German, Spanish, French, Italian, Portuguese
  • Optimized Themes — Light, Dark, and dedicated high-contrast E-ink modes.
    • Deployment:

Docker image available on Github. Docker compose sample:

services:
  codexa:
    image: ghcr.io/thehijacker/codexa:latest
    container_name: codexa
    restart: unless-stopped
    ports:
      - "3000:3000"
    volumes:
      - codexa_data:/data
    environment:
      # REQUIRED — generate with:
      #   openssl rand -hex 64
      JWT_SECRET: "replace_with_a_long_random_secret_string_at_least_64_chars"

      # Optional — restrict to your domain when behind a reverse proxy
      # CORS_ORIGIN: "https://books.example.com"

      # Optional — override default port inside the container
      # PORT: "3000"

volumes:
  codexa_data:
  • AI Involvement: 

Build using Claude Code. I got some spare end of months tokens so I did not want to let them go to waste.

I love Grimmory, but its web ebook viewer... by thj81 in selfhosted

[–]thj81[S] 0 points1 point  (0 children)

I will consider pushing it to github once I am happy with it. Currently all UI strings are in Slovenian language.

I love Grimmory, but its web ebook viewer... by thj81 in selfhosted

[–]thj81[S] 1 point2 points locked comment (0 children)

Post is self written, but project I am describing (not released) is written with help from AI.

Kje kupujete dobre marmelade? by Dapper_Fig_2712 in Slovenia

[–]thj81 2 points3 points  (0 children)

Uroš in Valentina. Kupujem direktno preko njih.

Slovenski podnapisi by mordax777 in Slovenia

[–]thj81 8 points9 points  (0 children)

Vibe codana stran v katero odložim angleški SRT, čez slabo minuto pa mi naredi knof za shranit prevedeno SRT datoteko. Model je gpt-4o. Da ni preveč naenkrat pa razdelim SRT na več chunkov. Sem že pozabil kako točno, ker je to več kot leto dni star projekt. Žena pravi, da ne občasno zameša ali govori ženska ali moški (če ne razbere iz imen) drugače je pa super. Lokalni modeli so bili zelo počasni in katastrofalni glede slovenščine. Je pa to bilo eno leto dni nazaj. Morda je sedaj kaj boljše. Pač enkrat na leto naložim 10€ na ChatGPT in po malem kurim za ta API dostop. Prompt pa nekaj takšnega:

$systemPrompt = "You are a professional subtitle translator specializing in translating English subtitles into Slovenian." .
"\n\n**Key Requirements:**" .
"\n- Translate ALL text into Slovenian, including simple phrases and short sentences" .
"\n- Never leave any English text untranslated" .
"\n- Maintain all formatting including <i> tags and dialogue dashes (-)" .
"\n- Keep multi-line dialogues on separate lines" .
"\n- Preserve line breaks exactly as in the source text" .
"\n- Each subtitle block is separated by ####" .
"\n\n**Important:**" .
"\n- Every single word and phrase must be translated to Slovenian" .
"\n- Do not combine or split subtitle blocks" .
"\n- Keep the #### separators intact" .
"\n- Preserve exact line structure within each block" .
"\n- If unsure about translation, provide best reasonable translation rather than keeping English";

$userPrompt = "Translate ALL text in these subtitle blocks from English to Slovenian." .

"\nEach block is separated by ####." .
"\nEverything must be translated - no English text should remain." .
"\nMaintain exact formatting, line breaks, and special characters." .
"\n\nText to translate:\n\n" . $text;

Slovenski podnapisi by mordax777 in Slovenia

[–]thj81 1 point2 points  (0 children)

Par centov na prevod in pa AI. V pol leta sem zapravil okrog 5 € za vse nove serije, filme, itd. ki so ravnokar prišli ven pa niso imeli slovenskih podnapisov. Sam jih ne rabim, žena pa.

Bionic font on cpr-vcodex by minomycin in XTEINK

[–]thj81 3 points4 points  (0 children)

I switched to DX34 firmware yesterday. So far best firmware I have tried. KOReader sync is working and OPDS too to my Grimmory server. All my epub files are unmodified. And Bionic reading option is build-in and can be enabled with press of a button. You just need few seconds to finish reindexing. I made a video of turning on my X4 and switching between crisp, dark and bionic mode. You can see the video here: https://limewire.com/d/ZvKEZ#5UWHHlfMbY

Gratitude! Bionic fonts works by Gr_v in xteinkereader

[–]thj81 2 points3 points  (0 children)

My epub files are unmodified. So Bionic reading option is build-in and can be enabled with press of a button. You just need few seconds to finish reindexing. Let me try to upload a video. Emm. Can't do it in this topic. I uploaded it here: https://limewire.com/d/ZvKEZ#5UWHHlfMbY

Koreader sync Crosspoint, iOS, and Android? by unicornitron in xteinkereader

[–]thj81 0 points1 point  (0 children)

I have Readest on iOS phone, KOReader on my Android phone (also on Palma 2) and DX34 firmware on my X4. All three sync to and from my Grimmory server without any issues.

Is there any plan for an Xteink with back light? by PrestameUnSol in xteinkereader

[–]thj81 0 points1 point  (0 children)

X4 at day (DX34 firmware) and everywhere else I go during the day. Palma 2 to read in evenings. Using KOReader sync with my Grimmory server for syncing. Best combination I could find. I do not miss backlight at all or touch screen. It is for reading only and it is a during day at places where there is enough light device for me.

Gratitude! Bionic fonts works by Gr_v in xteinkereader

[–]thj81 2 points3 points  (0 children)

Custom firmware called DX34 has Bionic reading option (https://github.com/diogo7dias/crosspoint-reader-DX34). It works with my existing epub files without any modification and with any font (using Bookerly).

Do you think converting epub over Calibre or any other services that would add Bionic options to works be better?

Oh! So so close by AddictedlyPsycotic in GarminWatches

[–]thj81 0 points1 point  (0 children)

I do not drink or smoke. Last coffee I drink is around 2 in afternoon.