<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: minaduki</title>
    <description>The latest articles on DEV Community by minaduki (@_ad122393ca44f5a698b1).</description>
    <link>https://dev.to/_ad122393ca44f5a698b1</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4166302%2Fd2c46833-ad61-4324-aeb0-793988e86bf2.jpg</url>
      <title>DEV Community: minaduki</title>
      <link>https://dev.to/_ad122393ca44f5a698b1</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/_ad122393ca44f5a698b1"/>
    <language>en</language>
    <item>
      <title>【Python Streamlit】ローカルPC（CPU）で動かす自分だけのAI画像生成Webアプリ</title>
      <dc:creator>minaduki</dc:creator>
      <pubDate>Mon, 19 Oct 2026 11:18:01 +0000</pubDate>
      <link>https://dev.to/_ad122393ca44f5a698b1/python-streamlit-rokarupccpudedong-kasuzi-fen-dakenoaihua-xiang-sheng-cheng-webapuri-2gg8</link>
      <guid>https://dev.to/_ad122393ca44f5a698b1/python-streamlit-rokarupccpudedong-kasuzi-fen-dakenoaihua-xiang-sheng-cheng-webapuri-2gg8</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ff2jxynhrdib7wpur0044.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ff2jxynhrdib7wpur0044.webp" alt=" " width="800" height="419"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;今回はPythonとStreamlit、そしてHugging FaceのDiffusersライブラリを使って、ローカルPC（CPU環境）で手軽に動かせるAI画像生成Webアプリを作ったので、その魅力と仕組みをご紹介します。&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmsd35z5cggc3xocg2w7o.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmsd35z5cggc3xocg2w7o.webp" alt=" " width="651" height="584"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;「ハイスペックなGPUがないとAI画像生成は無理……」と諦めていませんか？このアプリなら、CPU環境であっても、モデルに「DreamShaper 8」を採用し、設定を最適化することで、お使いのパソコン上で画像生成とImg2Img（画像から画像への変換）を楽しむことができます。&lt;br&gt;
テキストからの画像生成（Text-to-Image）：英語のプロンプトを入力して、思い描いたイラストや写真を生成できます。&lt;br&gt;
画像からの画像生成（Img2Img）：ベースとなる画像をアップロードし、変更度合（Strength）を調整しながらアレンジが可能です。&lt;br&gt;
履歴ギャラリー機能：過去に生成した画像と、そのときのパラメータ（プロンプトやシード値）を自動で保存し、タブ切り替えですぐに振り返ることができます。&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;CPU環境への最適化と高速化
GPU（CUDA）を使わずCPUで動作させるため、演算精度を標準的な形式に固定しています。また、キャッシュ機能を活用することで、重たいAIモデルの読み込みを初回のみにし、2回目以降の操作を快適に行えるように工夫しています。&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvk85gw3vf2p8vp5k3i43.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvk85gw3vf2p8vp5k3i43.webp" alt=" " width="677" height="414"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;高速かつ安定したスケジューラの採用&lt;br&gt;
サンプリングアルゴリズムには、少ないステップ数でも綺麗な描写がしやすい専用のスケジューラを採用しています。CPUでの処理時間を考慮し、デフォルトのステップ数も軽めに設定できるよう調整されています。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;テキスト生成とImg2Imgのシームレスな切り替え&lt;br&gt;
ベース画像がアップロードされているかどうかをアプリが自動で判断し、テキストからの生成と画像からの生成のパイプラインをスムーズに切り替える設計になっています。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;自動保存＆履歴ギャラリー機能&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffzel5ijhyvtuubzjhq7y.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffzel5ijhyvtuubzjhq7y.webp" alt=" " width="570" height="348"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;生成した画像はタイムスタンプ付きのファイル名で専用フォルダに保存され、同時にプロンプトやシード値などの設定情報も一緒に保存されます。タブを「履歴ギャラリー」に切り替えるだけで、過去に作った作品を一覧で振り返ることができます。&lt;br&gt;
実際にこのアプリを動かすには、Python環境といくつかのライブラリが必要です。&lt;/p&gt;

&lt;p&gt;PythonとStreamlitを使えば、手軽に自分だけのAI画像生成Webツールを作ることができます。「クラウドのサービスだと制限が気になる」「ローカル環境で色々試してみたい」という方にぴったりの構成です。ローカルで（しかも骨董品で・・・）これくらいの画像が生成できればまあまあ遊べますよ。&lt;br&gt;
Streamlitでデプロイしたので触ってみたい人はコメントください。&lt;/p&gt;

</description>
      <category>ai</category>
      <category>machinelearning</category>
      <category>python</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>【完全無料・サーバーレス】AWS Lambda FastAPI で作る「お出かけホテル検索マップ」の手順</title>
      <dc:creator>minaduki</dc:creator>
      <pubDate>Fri, 09 Oct 2026 04:59:31 +0000</pubDate>
      <link>https://dev.to/_ad122393ca44f5a698b1/wan-quan-wu-liao-sabaresu-aws-lambda-fastapi-dezuo-ruochu-kakehoterujian-suo-matupu-noshou-shun-bj3</link>
      <guid>https://dev.to/_ad122393ca44f5a698b1/wan-quan-wu-liao-sabaresu-aws-lambda-fastapi-dezuo-ruochu-kakehoterujian-suo-matupu-noshou-shun-bj3</guid>
      <description>&lt;p&gt;こんにちは！今回は、自宅の重いサーバーや有料のホスティング環境を使わず、AWS Lambdaの永年無料枠を活用して、ほぼ完全無料（サーバー代0円）で動くホテル検索マップアプリを個人開発したので、その仕組みと作り方をシェアしたいと思います。&lt;br&gt;
&lt;a href="https://kvar3quzrcgvz7loutkcftcoti0gppjv.lambda-url.ap-northeast-3.on.aws/" rel="noopener noreferrer"&gt;hotel map&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1re8o1piatwksx23u2i8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1re8o1piatwksx23u2i8.png" alt=" " width="800" height="544"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;フロントエンドの地図操作から、バックエンドのPython（FastAPI）、そして安全に公開するためのセキュリティ対策までギュッとまとめました。&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;このアプリで実現したこと・アーキテクチャ
地図上で中心地を選ぶと、その周辺にあるホテルを自動で検索して一覧・マップ表示してくれるアプリです。&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;フロントエンド: HTML / JavaScript （Google Mapsをインタラクティブに操作）&lt;/p&gt;

&lt;p&gt;バックエンド: Python 3.11 ＋ FastAPI&lt;/p&gt;

&lt;p&gt;インフラ（ホスティング）: AWS Lambda（関数URL）＋ Mangum&lt;/p&gt;

&lt;p&gt;外部API: SerpAPI（Google Hotels）&lt;/p&gt;

&lt;p&gt;「サーバーレス」構成にすることで、アクセスがないときの維持費は完全0円。個人開発のサービス公開やポートフォリオにぴったりの構成です。&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;実装のポイントとハマりどころ
今回の開発でこだわったポイントや、実際に躓きやすいポイントをいくつか紹介します。&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;① 重いSDKを排除し、requests 直叩きで軽量化&lt;br&gt;
AWS Lambdaで動かす際、パッケージサイズが大きすぎるとデプロイやコールドスタート（初回起動）のパフォーマンスに影響します。今回は余計な重いSDKを使わず、標準的な requests ライブラリだけでSerpAPIのエンドポイントを直接叩くシンプルな設計にしました。&lt;/p&gt;

&lt;p&gt;② Windows環境でのZIP地獄をPowerShellでスマートに解決&lt;br&gt;
Lambdaに外部ライブラリ（fastapi, requests など）を同梱してアップロードするためには、依存関係を含めたZIPファイルを作る必要があります。Windows環境ではPowerShellを使って以下のように一撃でビルド・圧縮する仕組みを整えました。&lt;/p&gt;

&lt;p&gt;PowerShell&lt;/p&gt;

&lt;h1&gt;
  
  
  依存関係のインストールとZIP圧縮のスクリプト例
&lt;/h1&gt;

&lt;p&gt;Remove-Item -ErrorAction SilentlyContinue deployment.zip&lt;br&gt;
Remove-Item -Recurse -Force -ErrorAction SilentlyContinue package&lt;br&gt;
pip install --platform manylinux2014_x86_64 --target package --implementation cp --python-version 3.11 --only-binary=:all: fastapi uvicorn mangum pydantic requests&lt;br&gt;
New-Item -ItemType Directory -Force package | Out-Null&lt;br&gt;
Copy-Item main.py package/&lt;br&gt;
if (Test-Path templates) { Copy-Item -Recurse -Force templates package/ }&lt;br&gt;
Add-Type -AssemblyName System.IO.Compression.FileSystem&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;安全に公開するための「4つのセキュリティ対策」
個人でWebアプリを公開する場合、APIキーの流出や不正利用（予期せぬコスト発生）を防ぐ対策が不可欠です。今回は以下の万全な備えを行っています。&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;APIキーの完全隠蔽&lt;/p&gt;

&lt;p&gt;Google MapsやSerpAPIのキーはソースコードに直書きせず、すべてAWS Lambdaの環境変数として安全に管理しています。&lt;/p&gt;

&lt;p&gt;Google Maps APIの「HTTPリファラー制限」&lt;/p&gt;

&lt;p&gt;万が一キーが露出しても他のサイトで勝手に使われないよう、Google Cloud Console側で「自分のLambda関数URL」からしかマップが読み込めないよう制限をかけています。&lt;/p&gt;

&lt;p&gt;アプリ側の簡易レートリミット（回数制限）&lt;/p&gt;

&lt;p&gt;不正なボット等による無限スクレイピングを防ぐため、IPアドレスごとに「1人あたり3回まで」の検索制限をコード内に実装しています。&lt;/p&gt;

&lt;p&gt;エラーメッセージのマスク処理&lt;/p&gt;

&lt;p&gt;バックエンドで万が一エラーが起きた際、内部のシステム詳細やパスが画面に露出しないよう、クライアント側には一律で Internal Server Error を返し、詳細な原因はAWSのCloudWatch Logsにだけ記録するようにしています。&lt;/p&gt;

&lt;p&gt;さらに、AWS Budgets（予算アラート）を設定して、万が一のコスト発生時にも即座に気づける体制にしています。&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;サンプルコード（バックエンド: main.py）
実際にAWS Lambda（Mangum経由）で動かしているFastAPIのメインコードはこちらです。&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Python&lt;/p&gt;

&lt;p&gt;import os&lt;br&gt;
import math&lt;br&gt;
from collections import defaultdict&lt;br&gt;
import requests&lt;br&gt;
from fastapi import FastAPI, HTTPException, Query, Request&lt;br&gt;
from fastapi.responses import HTMLResponse&lt;br&gt;
from mangum import Mangum&lt;/p&gt;

&lt;h1&gt;
  
  
  環境変数からAPIキーを取得
&lt;/h1&gt;

&lt;p&gt;GOOGLE_MAPS_API_KEY = os.getenv("GOOGLE_MAPS_API_KEY", "")&lt;br&gt;
SERPAPI_API_KEY = os.getenv("SERPAPI_API_KEY", "")&lt;/p&gt;

&lt;h1&gt;
  
  
  IPごとの簡易検索回数管理（3回まで）
&lt;/h1&gt;

&lt;p&gt;search_counts = defaultdict(int)&lt;br&gt;
MAX_SEARCH_LIMIT = 3&lt;/p&gt;

&lt;p&gt;def check_search_limit(request: Request):&lt;br&gt;
    client_ip = request.client.host if request.client else "unknown"&lt;br&gt;
    if search_counts[client_ip] &amp;gt;= MAX_SEARCH_LIMIT:&lt;br&gt;
        raise HTTPException(&lt;br&gt;
            status_code=429,&lt;br&gt;
            detail="無料体験の検索回数（3回）に達しました。ページを再読み込みしてください。"&lt;br&gt;
        )&lt;br&gt;
    search_counts[client_ip] += 1&lt;/p&gt;

&lt;p&gt;app = FastAPI()&lt;/p&gt;

&lt;p&gt;@app.get("/api/search-vacant-hotels")&lt;br&gt;
def search_vacant_hotels(request: Request, ...):&lt;br&gt;
    check_search_limit(request)&lt;br&gt;
    try:&lt;br&gt;
        # ホテル検索ロジック...&lt;br&gt;
        return {"hotels": []}&lt;br&gt;
    except HTTPException:&lt;br&gt;
        raise&lt;br&gt;
    except Exception as e:&lt;br&gt;
        print(f"[Backend Exception]: {e}")&lt;br&gt;
        raise HTTPException(status_code=500, detail="Internal Server Error")&lt;/p&gt;

&lt;p&gt;@app.get("/", response_class=HTMLResponse)&lt;br&gt;
def read_root():&lt;br&gt;
    # HTMLテンプレートを読み込んでAPIキーを埋め込む処理&lt;br&gt;
    ...&lt;/p&gt;

&lt;p&gt;handler = Mangum(app)&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;おわりに
サーバーレスと聞くと難しそうに感じるかもしれませんが、AWS Lambdaの関数URLとFastAPIを組み合わせれば、驚くほど手軽にモダンなWebアプリを公開できます。&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>api</category>
      <category>aws</category>
      <category>python</category>
      <category>serverless</category>
    </item>
    <item>
      <title>🎮 Flutterで “にこにこ九九ゲーム” を作った話 子どもが笑顔で学べるアプリを目指して</title>
      <dc:creator>minaduki</dc:creator>
      <pubDate>Thu, 08 Oct 2026 12:02:59 +0000</pubDate>
      <link>https://dev.to/_ad122393ca44f5a698b1/flutterde-nikonikojiu-jiu-gemu-wozuo-tutahua-zi-domogaxiao-yan-dexue-beruapuriwomu-zhi-site-124c</link>
      <guid>https://dev.to/_ad122393ca44f5a698b1/flutterde-nikonikojiu-jiu-gemu-wozuo-tutahua-zi-domogaxiao-yan-dexue-beruapuriwomu-zhi-site-124c</guid>
      <description>&lt;p&gt;&lt;a href="https://play.google.com/store/apps/details?id=com.junsa.kukuapp8&amp;amp;pli=1" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>[Indie Dev] Released "US Map Quiz" - An Ad-Free Paid Map Quiz App Targeted for the US Market</title>
      <dc:creator>minaduki</dc:creator>
      <pubDate>Thu, 08 Oct 2026 03:40:49 +0000</pubDate>
      <link>https://dev.to/_ad122393ca44f5a698b1/ge-ren-kai-fa-mi-guo-xiang-keniwan-quan-guang-gao-nasinoyou-liao-di-tu-apurius-map-quiz-woririsusimasita-5b75</link>
      <guid>https://dev.to/_ad122393ca44f5a698b1/ge-ren-kai-fa-mi-guo-xiang-keniwan-quan-guang-gao-nasinoyou-liao-di-tu-apurius-map-quiz-woririsusimasita-5b75</guid>
      <description>&lt;p&gt;Hi everyone! I'm Minaduki, an indie developer.&lt;/p&gt;

&lt;p&gt;I recently launched "US Map Quiz" (Package: com.junsa.us_mapquiz), a completely ad-free educational app targeted specifically at the US market, on the Google Play Store!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://play.google.com/store/apps/details?id=com.junsa.us_mapquiz" rel="noopener noreferrer"&gt;us_mapquiz&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/shorts/dFpxPCJbrCU" rel="noopener noreferrer"&gt;demo&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This project wasn't just about building a quiz game—it was my opportunity to take on several new challenges as an indie developer, including:&lt;/p&gt;

&lt;p&gt;・Testing a pricing model suited for the     purchasing power and exchange rates of the US market.&lt;br&gt;
　・Delivering a seamless, premium learning experience with a strict no-ads, no-in-app-purchases policy.&lt;br&gt;
　・Meeting the latest Android technical requirements and metadata compliance policies.&lt;/p&gt;

&lt;p&gt;In this article, I’ll share the behind-the-scenes story—from initial planning and technical stack selection to the real-world obstacles I hit during the app store review.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Why Build a "US Map Quiz" App?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;While I have developed various apps in the past, this project was planned from day one with a clear focus on the US market.&lt;/p&gt;

&lt;p&gt;Reason 1: Purchasing Power &amp;amp; Market Opportunity&lt;br&gt;
I wanted to test monetization in the English-speaking market using a simple one-time paid app model ($1.99 – $2.99 USD) rather than relying on freemium ad models.&lt;/p&gt;

&lt;p&gt;Reason 2: The True Value of "Zero Ads"&lt;br&gt;
Most free educational apps on the market are cluttered with intrusive banner ads or popups that kids accidentally tap, leading to a frustrating user experience. I was convinced that a 100% ad-free, safe, and clean learning tool would strongly resonate with parents, teachers, and homeschoolers in the US.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Tech Stack &amp;amp; Key Design Choices&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I chose Flutter for cross-platform development to build a lightweight, responsive UI.&lt;/p&gt;

&lt;p&gt;　・Frontend / Framework: Flutter (Dart)&lt;/p&gt;

&lt;p&gt;　・Map Rendering: High-resolution SVG vector maps that scale crisp and clean across any screen size or pixel density.&lt;/p&gt;

&lt;p&gt;　・Localization &amp;amp; Design: Minimalist UI/UX tailored for native English speakers to ensure a natural look and feel.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Real-World Obstacles Before Release&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;While the development went smoothly, I encountered a few unexpected technical and policy roadblocks during submission.&lt;/p&gt;

&lt;p&gt;16KB Memory Page Size Support (Android 15)&lt;br&gt;
Google’s latest requirements require support for 16KB memory page sizes on Android 15+. Adjusting native dependencies, build configurations, and package structures to ensure native layer compatibility took some effort, but I successfully passed verification.&lt;/p&gt;

&lt;p&gt;Red Card on Google Play Metadata Policy&lt;br&gt;
During my initial submission, I set the store title to "US Map Quiz No Ads". It was immediately rejected for a policy violation.&lt;/p&gt;

&lt;p&gt;Reason for Violation: App titles and store metadata must not contain promotional phrases, pricing details, or claims like "Sale", "Free", or "No Ads".&lt;/p&gt;

&lt;p&gt;Even though "No Ads" was my core value proposition, I had to drop it from the title and update it simply to US Map Quiz. Instead, I emphasized the ad-free experience within the detailed store description text. After this fix, the app passed review and went live!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Promotion Strategy: Leveraged by Short-Form Video&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Now that the app is published, the biggest challenge is discoverability without a big marketing budget.&lt;/p&gt;

&lt;p&gt;I’m currently running a organic promo campaign using YouTube Shorts targeted at global audiences. By creating quick 15-to-20-second vertical videos hooked with "Can your kids name all 50 states?" and showcasing fast-paced gameplay, I’m able to reach parents and geography enthusiasts directly. Tools like CapCut make producing these shorts quick and efficient for solo developers.&lt;/p&gt;

&lt;p&gt;Final Thoughts&lt;/p&gt;

&lt;p&gt;From concept and technical troubleshooting to fixing policy violations and launching on the store, this project encapsulated the true joy of indie app development.&lt;/p&gt;

&lt;p&gt;If you are an indie developer considering launching a paid, ad-free app, I hope my experience gives you a useful reference! Feel free to check out the app or drop your thoughts below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/shorts/dFpxPCJbrCU" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>android</category>
      <category>showdev</category>
      <category>startup</category>
    </item>
  </channel>
</rss>
