<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>App recommendations on vikiea</title><link>https://vikiea.github.io/en/</link><description>Recent content in App recommendations on vikiea</description><generator>Hugo</generator><language>en-US</language><copyright>© vikiea</copyright><lastBuildDate>Sun, 24 May 2026 00:00:00 +0800</lastBuildDate><atom:link href="https://vikiea.github.io/en/index.xml" rel="self" type="application/rss+xml"/><item><title>Age Android</title><link>https://vikiea.github.io/en/apps/age-android/</link><pubDate>Sun, 24 May 2026 00:00:00 +0800</pubDate><guid>https://vikiea.github.io/en/apps/age-android/</guid><description>&lt;p&gt;Age Android is a local-first age file encryption app for Android devices. It pairs a native Jetpack Compose interface with a local Go age engine, keeping encryption, decryption, key management, history, and streaming batch processing on device.&lt;/p&gt;
&lt;p&gt;Product page: &lt;a href="https://vikiea.github.io/age_android/"&gt;vikiea.github.io/age_android/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Repository: &lt;a href="https://github.com/vikiea/age_android"&gt;github.com/vikiea/age_android&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="features"&gt;Features&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Encrypt files or folders into &lt;code&gt;.age&lt;/code&gt; archives.&lt;/li&gt;
&lt;li&gt;Decrypt &lt;code&gt;.age&lt;/code&gt; files and restore archived content.&lt;/li&gt;
&lt;li&gt;Generate, import, view, and reuse local X25519 age keys.&lt;/li&gt;
&lt;li&gt;Pick files through Android&amp;rsquo;s storage access framework instead of a remote upload flow.&lt;/li&gt;
&lt;li&gt;Review encryption and decryption history, output paths, and task status.&lt;/li&gt;
&lt;li&gt;Download a Universal APK or ABI-specific APKs.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="privacy-model"&gt;Privacy Model&lt;/h2&gt;
&lt;p&gt;Age Android does not collect analytics, upload files, or transmit passphrases or private keys. Files, passphrases, private keys, and operation history are processed and stored only on the Android device.&lt;/p&gt;</description></item><item><title>Age Mac</title><link>https://vikiea.github.io/en/apps/age-mac/</link><pubDate>Fri, 22 May 2026 00:00:00 +0800</pubDate><guid>https://vikiea.github.io/en/apps/age-mac/</guid><description>&lt;p&gt;Age Mac is a native macOS file encryption app built around the age format. It is a standalone SwiftUI desktop app with a bundled Go streaming engine, designed for local file work: choose files, encrypt or decrypt them, watch progress, and keep keys on your own machine.&lt;/p&gt;
&lt;p&gt;Repository: &lt;a href="https://github.com/vikiea/age_mac"&gt;github.com/vikiea/age_mac&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="features"&gt;Features&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Encrypt multiple files into one &lt;code&gt;.tar.gz.age&lt;/code&gt; or &lt;code&gt;.tar.age&lt;/code&gt; archive.&lt;/li&gt;
&lt;li&gt;Encrypt files separately, one age archive per input file.&lt;/li&gt;
&lt;li&gt;Decrypt &lt;code&gt;.age&lt;/code&gt; files and automatically unpack tar or tar.gz payloads.&lt;/li&gt;
&lt;li&gt;Use passphrases or X25519 age keys.&lt;/li&gt;
&lt;li&gt;Generate, import, rename, view, and export local age keys.&lt;/li&gt;
&lt;li&gt;Import existing keys from &lt;code&gt;~/.config/age&lt;/code&gt; on launch.&lt;/li&gt;
&lt;li&gt;Keep operation history, outputs, and task progress local.&lt;/li&gt;
&lt;li&gt;Check for app updates with Sparkle through the public GitHub Pages appcast.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="architecture"&gt;Architecture&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Sources/AgeMac/App/AgeMacApp.swift App entry, commands, scenes
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Sources/AgeMac/Views/ SwiftUI screens and components
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Sources/AgeMac/Stores/AppStore.swift State, persistence, task lifecycle
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Sources/AgeMac/Services/AgeEngineClient.swift
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Process bridge to the Go engine
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Sources/AgeMac/Services/UpdateService.swift Sparkle update checks
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Sources/AgeMac/Models/AppModels.swift Shared app models
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Engine/main.go Streaming age engine
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;script/build_and_run.sh Local build and bundle staging
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The Swift app owns UI, local state, AppKit panels, and task orchestration. The Go engine owns streaming tar, gzip, encryption, and decryption work. Communication between them is JSON Lines over a child process.&lt;/p&gt;</description></item><item><title>About</title><link>https://vikiea.github.io/en/about/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://vikiea.github.io/en/about/</guid><description>&lt;p&gt;I build small tools, native apps, and engineering workflows. This site is the front door for app projects and a quiet place for technical notes.&lt;/p&gt;
&lt;p&gt;The first featured project is &lt;a href="https://vikiea.github.io/age_mac/"&gt;Age Mac&lt;/a&gt;, a local-first macOS app for age file encryption.&lt;/p&gt;</description></item><item><title>Archive</title><link>https://vikiea.github.io/en/archives/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://vikiea.github.io/en/archives/</guid><description/></item></channel></rss>