TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Show HN: Franz – A desktop client for Apache Kafka

45 pointsby Bogdanpover 1 year ago
This is the source code to Franz, a native desktop client for Apache Kafka I&#x27;ve been working on for the past ~three years or so. Around 2021, I started using Kafka at a startup and I didn&#x27;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&#x27;t web based and didn&#x27;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&#x27;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 &quot;backend&quot; (the &quot;core&quot; folder) is written in Racket, the Mac &quot;frontend&quot; (the &quot;FranzCocoa&quot; folder) is Swift + Cocoa&#x2F;SwiftUI[3, 4], and the two sides communicate over pipes. The Windows and Linux versions (the &quot;FranzCross&quot; folder) reuse the Racket core and implement the frontend using a wrapper around Racket&#x27;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:&#x2F;&#x2F;defn.io&#x2F;2022&#x2F;11&#x2F;20&#x2F;ann-franz&#x2F;" rel="nofollow">https:&#x2F;&#x2F;defn.io&#x2F;2022&#x2F;11&#x2F;20&#x2F;ann-franz&#x2F;</a><p>[2]: <a href="https:&#x2F;&#x2F;defn.io&#x2F;2023&#x2F;08&#x2F;10&#x2F;ann-franz-source-available&#x2F;" rel="nofollow">https:&#x2F;&#x2F;defn.io&#x2F;2023&#x2F;08&#x2F;10&#x2F;ann-franz-source-available&#x2F;</a><p>[3]: <a href="https:&#x2F;&#x2F;defn.io&#x2F;2023&#x2F;03&#x2F;19&#x2F;racketfest-talk-2023&#x2F;" rel="nofollow">https:&#x2F;&#x2F;defn.io&#x2F;2023&#x2F;03&#x2F;19&#x2F;racketfest-talk-2023&#x2F;</a><p>[4]: <a href="https:&#x2F;&#x2F;defn.io&#x2F;2022&#x2F;08&#x2F;21&#x2F;swiftui-plus-racket-screencast&#x2F;" rel="nofollow">https:&#x2F;&#x2F;defn.io&#x2F;2022&#x2F;08&#x2F;21&#x2F;swiftui-plus-racket-screencast&#x2F;</a><p>[5]: <a href="https:&#x2F;&#x2F;defn.io&#x2F;2021&#x2F;11&#x2F;07&#x2F;racketcon-talk-2021&#x2F;" rel="nofollow">https:&#x2F;&#x2F;defn.io&#x2F;2021&#x2F;11&#x2F;07&#x2F;racketcon-talk-2021&#x2F;</a><p>[6]: <a href="https:&#x2F;&#x2F;arxiv.org&#x2F;abs&#x2F;2308.16024v1" rel="nofollow">https:&#x2F;&#x2F;arxiv.org&#x2F;abs&#x2F;2308.16024v1</a>

5 comments

Bogdanpover 1 year ago
In terms of code size, the repo is about 50&#x2F;50 Racket and Swift:<p><pre><code> $ cloc FranzCocoa FranzCross core&#x2F; manual&#x2F; --include-lang=swift,racket 355 text files. 244 unique files. 419 files ignored. github.com&#x2F;AlDanial&#x2F;cloc v 1.98 T=0.06 s (2511.1 files&#x2F;s, 383637.1 lines&#x2F;s) ------------------------------------------------------------------------------- Language files blank comment code ------------------------------------------------------------------------------- Racket 91 1235 79 9968 Swift 53 1148 132 9438 ------------------------------------------------------------------------------- SUM: 144 2383 211 19406 ------------------------------------------------------------------------------- </code></pre> But, if I include all the supporting Racket libraries I built for the app, the ratio changes to about 4&#x2F;1 in favor of Racket:<p><pre><code> $ cloc FranzCocoa FranzCross core&#x2F; manual&#x2F; &lt;more paths&gt; --include-lang=swift,racket 1644 text files. 996 unique files. 3334 files ignored. github.com&#x2F;AlDanial&#x2F;cloc v 1.98 T=0.35 s (1871.6 files&#x2F;s, 168111.5 lines&#x2F;s) ------------------------------------------------------------------------------- Language files blank comment code ------------------------------------------------------------------------------- Racket 598 5535 356 41295 Swift 65 1316 272 10779 ------------------------------------------------------------------------------- SUM: 663 6851 628 52074 -------------------------------------------------------------------------------</code></pre>
cellularmitosisover 1 year ago
Very interesting to see a Racket&#x2F;Swift hybrid! Though this seems more of a strict front-end &#x2F; back-end division, I was reminded at least initially of Shrimp &#x2F; Goby from Mike Fikes <a href="https:&#x2F;&#x2F;github.com&#x2F;mfikes&#x2F;shrimp">https:&#x2F;&#x2F;github.com&#x2F;mfikes&#x2F;shrimp</a>
tecoholicover 1 year ago
I thought this was <a href="https:&#x2F;&#x2F;meetfranz.com&#x2F;" rel="nofollow">https:&#x2F;&#x2F;meetfranz.com&#x2F;</a> until the word “Apache Kafka” and was puzzled.<p>Naming things and name collisions…
99112000over 1 year ago
O hey WinRAR!<p>On a more serious note, cool app. The iconic WinRAR notice to purchase a license would be a nice easteregg.
wscourgeover 1 year ago
Franz will always be a free Ferdium&#x27;s fork for me.