[Indie Dev] A Low-Cost Web App Stack Built to Monetize and Scale (Onamae.com + Firebase) | Real Costs and Traffic, All Shared
Published: June 30, 2026 (Updated September 28, 2026)
For: Solo developers who want to ship a web app on their own domain
Introduction
I build web apps and write technical articles as a solo developer, and I publish all of it on one domain, kabe-tech.com.
With so many services out there, picking the best setup is not easy. Personally, I think it's more important to start with something and learn from it than to spend a long time searching for the perfect choice.
This article shows the setup I chose and what it actually costs. I hope it helps if you're planning to earn money from a web app.
Services and What Each One Does
kabe-tech.com uses the following ten services to publish, monetize and analyze its web apps.
| Role | Service | Cost |
|---|---|---|
| Publishing the web apps | ||
| Domain and DNS | Domain and DNS | ¥1,778/year |
| Hosting | Hosting | ~¥150/month* |
| Data | Data | Free tier |
| Sign-in | Sign-in | Free tier |
| Source code | Source code | Free |
| Monetization | ||
| Ads | Ads | Free |
| Affiliate | Affiliate | Free |
| Payments | Payments | Fees only |
| Analytics | ||
| Views and traffic sources | Views and traffic sources | Free |
| Google Search presence | Google Search presence | Free |
*Firebase Hosting is free up to 10GB of transfer a month. kabe-tech.com serves a Unity-built web app (PoseMirror) that transfers about 14.7MB each time it's opened, so it goes over the free tier and I pay for the difference. A typical web app built with HTML and JavaScript stays inside the free tier.
How I Chose Each Service
Selection Criteria
When I publish a web app, I choose services based on these points:
- Keep running costs as close to zero as possible
- Allow ads and payments on the free plan (commercial use)
- Well known, with plenty of documentation and articles
- Let me keep going on the same service by moving to a paid plan as traffic grows
The result is a setup built mostly on Google services. Keeping things within Google has helped: I've run it so far without any major trouble connecting one service to another.
Domain and DNS (Onamae.com)
A domain is the name that works as a website's address; for my site, that's kabe-tech.com. DNS is the system that turns that name into the location of the actual server.
I bought my domain from Onamae.com, which also handles DNS. I chose it because it's a Japanese service with a Japanese dashboard and support; any registrar works the same way. It cost ¥0 for the first year and renews at ¥1,778 a year.
As an aside, GitHub Pages lets you publish a web app for free without a domain of your own. But then it lives on a GitHub domain such as username.github.io, not your own. Without your own domain, you run into these drawbacks:
- You can't apply for Google AdSense
- Your URL changes if you move to another host. Search rankings, backlinks and bookmarks don't carry over to the new URL
- You can't have an email address on your own domain. An address like
contact@kabe-tech.comfor inquiries isn't possible
Tips: What Google AdSense is
A service that lets you place ad slots on your site and get paid by Google when ads are shown or clicked. To run ads, each site has to pass Google's review.
AdSense registers sites per domain. github.io and Firebase's web.app are parts of domains someone else owns, so you can't register them as your own site (people in the AdSense community do report being unable to add a github.io subdomain).
At about ¥2,000 a year, I recommend getting a domain unless you really need everything to be free. It also helps in the sense of growing a site that is truly yours.
Hosting (Firebase Hosting)
Hosting is a service that stores files such as HTML and images and delivers them to the browser of whoever visits.
I use Firebase Hosting, Google's hosting service.
Compared with other hosting services, I chose Firebase Hosting for four reasons:
- It connects easily with the other features a web app needs. Google's Firestore (data) and Authentication (sign-in) work with it with little setup.
- You can run ads and payments on the free plan. For example, Vercel's free Hobby plan prohibits commercial use, including AdSense ads (Vercel Fair Use Guidelines). GitHub Pages also states that it isn't intended as free hosting for running an online business or SaaS (GitHub Pages limits)
- You can deploy from a private repository. Using GitHub Pages with a private repository requires a paid plan (GitHub Pro)
- You can set your own response headers. Unity web builds are usually compressed, and the host has to declare the compression format. With Firebase Hosting, that's a single entry in
firebase.json.
On pricing, the free Spark plan costs nothing up to 10GB of storage and 10GB/month of transfer. Beyond that, the pay-as-you-go Blaze plan charges $0.026 per GB of storage and $0.15 per GB of transfer (Firebase Hosting usage, quotas, and pricing). kabe-tech.com uses Unity for a web app, and its transfer is heavy, so I pay about ¥150 a month.
If traffic grows and the monthly bill climbs, I think moving to Cloudflare is worth considering.
Data (Cloud Firestore)
I use Cloud Firestore as a database, in the role an RDB or file storage would play. Cloud Firestore is Firebase's database, and the browser can read and write it directly without a server of your own.
On kabe-tech.com, it stores the subscription status of PoseMirror's paid plan and the numeric results of SkeletonCheck's body-frame checks.
I chose it because it lives in the same Firebase project as the hosting and fits well within the free tier (1GiB of storage, 50K reads a day).
Sign-in (Firebase Authentication)
Sign-in means storing passwords and verifying identity, the kind of thing that goes wrong easily when you build it yourself. With Firebase Authentication, you leave sign-in with a Google account and the like to Firebase.
kabe-tech.com uses only Google sign-in, to identify people on PoseMirror's paid plan. I never have to manage passwords myself, and it's free up to 50K monthly active users.
Analytics (GA4 and Search Console)
Google Analytics 4 (GA4) is a tool that counts how many times each page was viewed and where visitors came from. The screen below shows page views on kabe-tech.com for the last four weeks (August 30 to September 26, 2026). The pages of PoseMirror, a drawing reference app, and SkeletonCheck, a body-frame check app, take the top spots.
Search Console is a tool that shows which search terms your pages appeared and were clicked for on Google, and whether your pages are indexed. Over the last 28 days, Google Search brought 1,060 clicks from 16K impressions. Seeing how people respond to what I made keeps me motivated.
Source Code (GitHub)
GitHub is a service that keeps the change history of your source code. You can always get back a file you deleted by mistake, or the state before something broke.
Private repositories are free too, so I keep unpublished drafts and config files there as well.
Ads (Google AdSense)
Google AdSense is a service that shows ads on your site and pays you based on impressions and clicks. To run ads, each site has to pass Google's review.
It's the most common ad service, so kabe-tech.com's ads are built around AdSense.
Affiliate (A8.net)
Affiliate marketing pays you a reward when a product or service you introduced sells. A8.net is one of Japan's largest affiliate networks, and signing up is free.
Payments (Stripe)
Stripe is a service for adding card payments and the like to your own site. Stripe provides the card entry screen, so your own server never has to handle card details.
I use it for PoseMirror's paid plan (a monthly subscription). There's no setup or monthly fee; fees are 3.6% of the amount for domestic (Japanese) cards plus 0.7% for subscription management (Stripe Billing) (Stripe pricing, Japan). You only pay when something sells, so you don't lose money before you have any revenue.
Final Thoughts
If you're about to publish a web app, why not start with the setup in this article? I wrote it hoping to give even one more solo developer a push. Let's keep at it together.
Related (English):
- [Unity] How to Shrink a WebGL Build for the Web — the settings that took transfer from 50.79MB to 14.20MB
- Best free 3D pose reference web apps for artists (2026) — the app in this article next to other tools
Related (Japanese):
- 【Firebase】Unity WebGLを無料で公開する手順 — deploying to Firebase Hosting

