<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Djunekz — Open Source Engineering]]></title><description><![CDATA[Djunekz — Open Source Engineering]]></description><link>https://djunekz.hashnode.dev</link><image><url>https://cdn.hashnode.com/uploads/logos/6ace4f09ab3dfb6d93fa8163/3beace7d-b982-4ba6-a48b-96632b9ade65.jpg</url><title>Djunekz — Open Source Engineering</title><link>https://djunekz.hashnode.dev</link></image><generator>RSS for Node</generator><lastBuildDate>Sun, 25 Oct 2026 14:21:16 GMT</lastBuildDate><atom:link href="https://djunekz.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Building an Offline-First Package Manager for Termux on Android]]></title><description><![CDATA[Explore Djunekz's open-source projects, Python tools, Termux App Store, and developer utilities built for the community.]]></description><link>https://djunekz.hashnode.dev/building-an-offline-first-package-manager-for-termux-on-android</link><guid isPermaLink="true">https://djunekz.hashnode.dev/building-an-offline-first-package-manager-for-termux-on-android</guid><category><![CDATA[Open Source]]></category><category><![CDATA[Python]]></category><category><![CDATA[Linux]]></category><category><![CDATA[Android]]></category><category><![CDATA[termux]]></category><dc:creator><![CDATA[Djunekz]]></dc:creator><pubDate>Tue, 13 Oct 2026 16:00:10 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/6ace4f09ab3dfb6d93fa8163/a0073c85-0aeb-4ce9-a78e-c698bcb1975c.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Android can be more than a device for running a few shell commands. With Termux, it can become a practical environment for programming, automation, and command-line development.</p>
<p>But managing community packages raises important questions:</p>
<ul>
<li><p>How should users discover available packages?</p>
</li>
<li><p>How can local caching improve the experience?</p>
</li>
<li><p>When should a package be installed as a binary versus built from source?</p>
</li>
<li><p>How can users verify downloaded files before installation?</p>
</li>
</ul>
<p>These are some of the problems I explore in Termux App Store, an open-source package management project designed for the Termux environment.</p>
<p>Why I Started This Project</p>
<p>I wanted to build a tool that makes package discovery and management more accessible without hiding what happens behind the scenes.</p>
<p>For me, a good developer tool should be understandable, practical, and transparent. Users should be able to inspect the project, understand its workflow, and decide how they want to use it.</p>
<p>That philosophy guides my approach to Termux App Store.</p>
<p>A TUI and CLI in One Project</p>
<p>Termux App Store provides both a terminal user interface (TUI) and a command-line interface (CLI).</p>
<p>The TUI offers an interactive way to explore and manage packages. The CLI is designed for users who prefer direct commands and automation.</p>
<p>Having both interfaces allows the project to serve different workflows without requiring users to choose between an interactive experience and command-line control.</p>
<p>Local Caching and Offline-First Design</p>
<p>Network availability is not always reliable, especially when working on a mobile device.</p>
<p>Local caching can help make previously retrieved information available without repeatedly fetching it from a remote source. However, offline-first behavior needs to be clearly defined.</p>
<p>A cached package list is not the same as a complete offline installation system. Operations that require new downloads, remote updates, or unavailable dependencies still need network access.</p>
<p>I believe documenting these limitations is just as important as implementing the features themselves.</p>
<p>Binary Packages, Source Builds, and Integrity Checks</p>
<p>Different installation methods involve different trade-offs.</p>
<p>Binary packages can simplify installation, while building from source can provide more visibility into the build process. Source builds also require suitable dependencies, compatible build instructions, and additional time.</p>
<p>Integrity checks are another important part of package distribution.</p>
<p>SHA-256 verification can help detect whether a downloaded file differs from the expected checksum. However, a matching checksum alone does not prove that the package is safe or that its publisher is trustworthy. The source of the checksum and the trustworthiness of the distribution channel matter too.</p>
<p>These distinctions are important when designing package management workflows that users can understand and evaluate.</p>
<p>Open Source Means Making the Work Inspectable</p>
<p>I want Termux App Store to be a project that people can explore, test, discuss, and improve.</p>
<p>That means maintaining clear documentation, making installation instructions accessible, responding to issues, and providing a straightforward path for contributions.</p>
<p>There is always room to improve a project through testing, user feedback, and independent code review. I see those activities as part of building reliable software rather than as something separate from development.</p>
<p>Explore Termux App Store</p>
<p>The source code, documentation, and project history are available on GitHub:</p>
<p>Repository: <a href="https://github.com/djunekz/termux-app-store">https://github.com/djunekz/termux-app-store</a></p>
<p>You can explore the implementation, review the available features, report problems, and contribute ideas through the project's public repository.</p>
<p>A Question for the Community</p>
<p>When building a package manager for a mobile development environment, what matters most to you?</p>
<p>Is it offline availability, source transparency, package integrity, ease of installation, or something else?</p>
<p>I'd be interested in hearing how other developers approach these trade-offs.</p>
<hr />
<p>I'm Djunekz, an independent developer working on open-source tooling for Termux and the command line.</p>
]]></content:encoded></item></channel></rss>