This is the source code to Franz, a native desktop client for Apache
Kafka I've been working on for the past ~three years or so. Around
2021, I started using Kafka at a startup and I didn't like any of
the clients that were available at the time, so I decided to build
my own in my spare time[1]. I wanted a solid native experience
on the Mac that wasn't web based and didn't require any Docker
containers to run.<p>A few months ago, I decided to make the code source-available[2]
in part because I like the idea of my users being able to see the
code they're running and in part because I want to showcase that
one can build serious applications with Racket. The app also has a
somewhat unusual architecture: the "backend" (the "core" folder)
is written in Racket, the Mac "frontend" (the "FranzCocoa" folder)
is Swift + Cocoa/SwiftUI[3, 4], and the two sides communicate over
pipes. The Windows and Linux versions (the "FranzCross" folder)
reuse the Racket core and implement the frontend using a wrapper
around Racket's cross-platform GUI toolkit[5, 6]. My goal is to
eventually port the frontend for the latter two platforms to use
their native toolkits directly as well (see [3] for some more
details re. Windows).<p>Happy to answer any questions!<p>[1]: <a href="https://defn.io/2022/11/20/ann-franz/" rel="nofollow">https://defn.io/2022/11/20/ann-franz/</a><p>[2]: <a href="https://defn.io/2023/08/10/ann-franz-source-available/" rel="nofollow">https://defn.io/2023/08/10/ann-franz-source-available/</a><p>[3]: <a href="https://defn.io/2023/03/19/racketfest-talk-2023/" rel="nofollow">https://defn.io/2023/03/19/racketfest-talk-2023/</a><p>[4]: <a href="https://defn.io/2022/08/21/swiftui-plus-racket-screencast/" rel="nofollow">https://defn.io/2022/08/21/swiftui-plus-racket-screencast/</a><p>[5]: <a href="https://defn.io/2021/11/07/racketcon-talk-2021/" rel="nofollow">https://defn.io/2021/11/07/racketcon-talk-2021/</a><p>[6]: <a href="https://arxiv.org/abs/2308.16024v1" rel="nofollow">https://arxiv.org/abs/2308.16024v1</a>