AWS Costs and User Numbers: WattLog.pro After Seven Months
Since April I have paid AWS $168 to keep WattLog.pro running, a free app for indoor training. In that time 25 people signed up, and two of them recorded a ride in the app. It is indoor season and I expected more. For a few weeks now I have been doubting whether this project makes sense, so I counted everything that can be counted.
Why I built it
I started to save money and out of curiosity. For many months I rode on Zwift and paid $20 a month for it. That virtual world was not for me. Sometimes I felt like I was in a game, sometimes there was simply too much going on. In the beginning I also lacked the fitness for their training plans and free rides. Then my HRM strap broke, and that was the first time I tried vibe coding.
I wanted to understand cycling training and my own limits step by step, and to grow as a developer along the way. I worked in IT as a QA for many years and had long dreamed of building something myself. The blog was meant to be a simple collection of answers to the questions I had when I started riding on the road: why a heart rate monitor, why a power meter, what zones are, why I felt so bad after a week of riding 50–60 km a day even though I loved that craze. I write the articles with the help of AI, then check and edit them myself.
WattLog.pro was also meant to be my escape from unemployment and a way to have something to do every day.
Who signs up
The first regular account appeared in July. In September 9 people signed up, in October 15.
I only know where a signup came from when the link carried a parameter. Fifteen accounts have none, eight came from the wattlog.pro website, two straight from articles. The blog has 370 articles in Polish (1,126 pages across all languages). Some people may have come from the blog through the home page, so I do not know how much the blog really brought in.
What Google sees
Search Console shows what happens before anyone reaches the app. From 26 April to 29 October, WattLog.pro pages were shown in Google 43,232 times and got 548 clicks (CTR 1.27%). Traffic is growing: 9 clicks in June, 83 in July, 206 in October.
The catch is that these readers hardly ever sign up. German pages got the most clicks, 226, and one account out of 25 chose German. Twelve accounts have no language set, so I do not draw strong conclusions from this. Polish pages got 122 clicks, English 95, Dutch 58.
Articles about gear and maintenance got the most: 144 of the 501 clicks on the blog, for example on carbon assembly paste or on the best time to buy a bike. Texts for power meter owners do better. The best of them, on installing and charging Favero Assioma pedals and the German text on left/right balance, have a CTR of 3 to 8% and positions between 5 and 8. Their versions in other languages do worse. One of the two accounts that came from the blog came from an article about power meter pedals and is one of the largest in the database.
| Most clicked URLs | Clicks | Impressions | CTR | Position |
|---|---|---|---|---|
| Home page | 23 | 243 | 9.47% | 5.5 |
| NL: checklist, road bike and being overweight | 19 | 627 | 3.03% | 7.9 |
| PL: installing Favero Assioma pedals | 16 | 466 | 3.43% | 5.9 |
| DE: left/right balance in power measurement | 16 | 206 | 7.77% | 6.4 |
| DE: carbon assembly paste | 13 | 1584 | 0.82% | 8.5 |
Google hides rare queries: of the 1,000 queries in the export only 6 have clicks, so I do not know what exactly people were searching for. Nobody searches for the name: “wattlog” showed up in results 4 times in half a year. I also do not know how many clicks end in an account, because apart from Search Console I have no analytics at all.
What happens after signing up
Eighteen of the 25 accounts have not a single ride, neither recorded nor imported. Thirteen of them were created more than a week ago, so I cannot explain it by saying they have not had time yet.
Seven accounts have any ride at all. Five people uploaded their history from Strava or TCX files, 591 rides in total, and none of them recorded a new ride afterwards. The other two recorded four rides in the app between them. Apart from me and my test accounts, almost nobody rides in the app.
What it costs to run an app on AWS
From April to October AWS cost $168.22: $136.76 for services and $31.46 Polish VAT. I have no credits or discounts. I pay out of my own pocket, and the project earns nothing.
June was the most expensive month, $36 with VAT. In May, June and July I paid for CPU credits on the t3 instance, $26.73 in total, almost a fifth of the bill. In August I turned them off to cut the cost, and the bill with VAT dropped to $18. The downside: once the credits run out, the CPU slows down to its baseline, so the server may have less headroom while someone is riding.
| October bill | USD |
|---|---|
| EC2 server (t3.small, switched off at night 23:00–06:00) | 10.76 |
| Public IPv4 address | 3.67 |
| S3: route map tiles (one file for the whole planet, about 138 GB) | 3.40 |
| Server disk (EBS) | 2.40 |
| Route 53 (DNS zones) | 1.05 |
| Secrets Manager | 0.79 |
| Other (Cost Explorer, CloudFront) | 0.11 |
| Total before tax | 22.19 |
| VAT 23% | 5.10 |
I pay $3.40 a month for a map of the whole world while I ride in Europe. Tiles for Europe alone would be about 48 GB instead of 138 GB and save about $2 a month. I have not done it yet. I also have not bought a reserved instance, because I do not know whether the project will last a year.
Costs outside AWS
| Item | Amount |
|---|---|
| Claude Code, Pro plan | $20 a month |
| Apple Developer Program (iOS app) | $99 a year |
| Domain wattlog.pro, 15.04.2026–14.04.2027 | PLN 23.37 incl. VAT (about €5) |
| Google Pixel 8a, to test on a real Android phone | PLN 1,699 (about €395) |
| Zwift Click V2, to support this controller | €13.75 incl. shipping |
| Favero Assioma PRO MX-1 pedals and the Upgrade Kit to MX-2, my first power meter ever | PLN 3,748 (1,949 + 1,799; about €870) |
It was supposed to be cheaper than Zwift at $20. Today the subscription, the Apple account and AWS add up to about $50 a month before tax. I bought the hardware once, for about PLN 5,500 (around €1,280), and more than two thirds of that is the pedals. I bought those mostly for myself, for training, and they double as test hardware.
I did not count my time. There were weeks when I sat at the computer for 3–4 hours a day, less since August, so it comes to something like a half-time job. On top of that, separate hours of testing with the trainer and other devices.
What went wrong
- I built mostly for myself: ERG mode, a Bluetooth bridge, power meter support and Zwift Click. I am almost the only one who uses them.
- I never asked the people with no rides what stopped them.
- I wrote a lot of content without measuring whether it works: 548 clicks on 1,126 pages in half a year, an average of 0.49 clicks per page.
- I saved money on the server before I took care of the first steps in the app. Funnily enough, the plan below still includes cutting costs by $3.
Does it make sense
I do not know. The app works, it is just that almost nobody rides in it. 591 imported rides is more than I expected, but after importing nobody came back to ride.
Sometimes I wonder whether building an app with AI makes sense at all when it ends with me paying for my own project. I would like more people to come, and I am a little afraid of it: whether I can handle it technically and whether anyone will trust me enough to buy me a coffee. What I fear most is breaking someone's workout with a code change.
What makes me happy
Most of all, my own progress. After one training cycle planned and tracked in WattLog.pro my FTP went up from 178 to 193 W and my weight went down from 96 to 93 kg. Part of that rise is a different power meter between the tests, so a real gain of 4–6% is more likely than 8.4%. I wrote about it in the post on the 3+1 plan. The sample is one person, me, but it worked for me. The second moment like that was the analysis of my ride up St. Anne's Mountain. It showed me that the data I collect can be turned into conclusions. That ride led to posts about the Power Guide and about a second attempt on the same climb, and those led to new features and a post on smart fueling.
Competition
Zwift and Rouvy have a whole world and real routes, RideCave has a great interface. WattLog.pro is a dot moving along an elevation profile, plus a Strava integration. That dot is what I was looking for when I ran away from Zwift. I do not know how many cyclists want the same. I only know that I did.
When I will stop
My budget for the server and the subscription is $20–30 a month, and today I spend about $50, so I am already over it. Above my budget I would like the community to help. My energy runs out when I look at other people's projects: their features, their interfaces and their user numbers. Then I close the console, go for my own workout and sometimes think that no more people will come.
A maintenance mode, where the server runs and I add nothing, would be a relief. I just do not know whether it is realistic: libraries keep changing, and the Apple Developer account has to be paid every year.
What I am doing next
- I will check what a person sees right after logging in, and add a single question in the app: what would make you come back?
- For now I am not adding trainer features. First I want to know why nobody starts riding.
- I will ask three people to analyse one of their rides and tell me what annoyed them.
- I will add analytics to the website and the app.
- I will cut the AWS bill by about $3 (a Europe-only map, SSM instead of Secrets Manager, one DNS zone) and pause the subscription when I am not coding. In maintenance mode that comes to about $28 a month: AWS about $19, Apple about $8, the rest is the domain.
- I will come back to this post on 31 January 2027 with the same charts.
Three questions for you
If you ride indoors, or you once signed up for WattLog.pro, answer any of these, even in one sentence:
- Which training app do you use, and what tires you out about it or what is missing?
- If you signed up for WattLog.pro and did nothing with it: what stopped you?
- What would a calm app without a game or a virtual world need to have for you to try it?
You can reply through the contact form. I will read every answer.
Data and method
- Users: an anonymised copy of the production database from 31.10.2026. I count registered accounts (not guests), without 6 internal accounts and without deleted ones. There are 30 guests. Two of them have a ride, and one recorded it in the app.
- A ride in the app is an ERG workout, a free ride, a route, a Ramp Test or a ride at a set gradient. An import is a ride from Strava or a TCX file.
- Costs: AWS Cost Explorer, cost without discounts, April–October 2026, October up to 31.10.
- Google Search Console: export 26.04–29.10.2026, web search. Queries are incomplete because Google hides rare ones. The split by category and language covers the 1,000 most clicked URLs.
- I do not give conversion rates because I do not have visit numbers. The numbers are small, so one person is 4 percentage points.