Granit Jupolli

London Based Systems Developer @Nebula Cloud Limited↗

About & Experience

Systems Engineer based in London. I build distributed systems, optimise data pipelines, and ship across the stack — primarily in Rust, Java, and TypeScript.

About

My love of books led me to build Midori, a Discord bot and admin dashboard for a reading community. Outside of work I tinker with graphics programming.

Languages:

RustJavaTypeScriptGo

Other:

PostgreSqlRedisDockergRPCReactSvelte

Experience

Systems Engineer
Nebula Cloud Limited · Sep 2022 — Present

Systems:Implemented a custom queue based RPC layer for distributed low latency event handling, aleviating a core bottleneck and increasing scalability by a minimum of 4x. Backend:Built a modular ETL pipeline for syncing user data across 20+ integration.
Created a custom BI backend for real time data.
Frontend:Led a rework on a Electron/React desktop app introducing virtualisation and modern performance improvements for lower end systems.

Projects

Midori & Lyria

Distributable monorepo that contains a full web server, cached database and discord bots connected to the main api via gRPC.

RustSvelteDockergRPC

Lyria is a discord bot that started with 1 goal early 2025 "Allow people to log books though discord".
This was then built into a whole micro ecosystem with events, user profiles and admin tooling.
To date, we have 200 active users on the bot, out of 600 users on the server, who have logged over 2_400 books with Lyria.

  midori.osrsisle.com            Discord
           |                        ^
           v                        |
       +-------+                    |
+------| Caddy |------------------------------+
|      +-------+                    ^         |
|          |                     WebSocket    |
|          v                        |         |
|      +--------+               +-------+     |
|      | Midori | - - gRPC - -> | Lyria |     |
|      +--------+               +-------+     |
|           |                       |         |
|           + - - - - - + - - - - - +         |
|                       |                     |
|           + - - - - - + - - - - - +         |
|           DB        Cache       Search      |
|           v           v           v         |
|     +----------+  +-------+  +---------+    |
|     | Postgres |  | Redis |  | Elastic |    |
|     +----------+  +-------+  +---------+    |
|                                             |
+---------------------------------------------+
                        

System diagram of Midori & bot system.

All systems are in their own docker containers, using internal 10. IP addresses. This ensures only authorised connectors have access and allows the system to be distributed to other machines in the internal network

Try the Demo at Midori↗

Try the bot in the Discord Server↗

Containerisation

Hosted on a VPS, each service runs in its own Docker container on an internal network. Caddy acts as the reverse proxy, handling TLS termination and automatic certificate renewal.

Midori

Core Axum/Rust API containing REST endpoints, business logic, and bot configuration. Frontend is Svelte 5.

Primary Storage

PostgreSQL for all persistent data. Both Midori and Lyria share the same instance. A WireGuard tunnel allows secure dev access.

Caching Layer

Redis for hot-path caching and Discord bot session data.

Lyria / Discord

Lyria is a Discord bot built with Serenity, connected via WebSocket for event-driven actions, such as sprints, polls, and community commands.

gRPC

Strongly-typed channel between Midori and Lyria using Protobuf, used to trigger events and query Discord state without HTTP overhead.

Elasticsearch

Full-text search over book data. Likely overkill at this scale, used primarily as a learning exercise.

Visusta

Modular image processing library in Rust. Type-safe pipelines chain filters with swappable CPU/GPU processors. Sobel, Gaussian, ASCII output.
ASCII renders at the top of the page were rendered with this.

RustRayon

Core Lib

Visusta, at its core, is intended to be embedded and nonrestrictive.
Using rayon to parallelise image processing processing a pipeline can be constructed to near instantly process very high quality images.
Full source code available on Github↗

Visplayer

Using Visusta, Visplayer is an in terminal video player that responds to terminal size to play video at 20fps.
Using ffmpeg and multi threading, Visplayer has a seamless playback.
Full source code available on Github↗

© 2026 Granit Jupolli