u/AlcoLogApp

I made AlcoLog, a privacy-first iOS drink tracker. Feature packed, no account, no subscription gate, no community wall. SwiftUI, solo build over 6 months.

I made AlcoLog, a privacy-first iOS drink tracker. Feature packed, no account, no subscription gate, no community wall. SwiftUI, solo build over 6 months.

https://preview.redd.it/j509x6ih0x0h1.png?width=1178&format=png&auto=webp&s=1c8af3fb5d3f5d1f797663449c6d0ed4b2f0699a

Hey guys,

The story: Most drink trackers want you to sign up, join their community, pay a subscription before they'll do anything useful, and treat your data as the product. I wanted something that just worked, locally, with no friction and no gatekeeping. As a heavy drinker I have come to realize that drinking is a serious habit-tracking problem and the tooling should treat it that way. It launched this past Monday.

The stack:

  • SwiftUI end-to-end, iOS 17+ target. No UIKit fallback except where the system forces it.
  • SwiftData for persistence. Migrated off Core Data mid-build, which was painful but worth it.
  • CloudKit private database for optional iCloud sync between a user's own devices. Zero server I run.
  • HealthKit one-way write only. App writes drinks to Health, reads nothing back.
  • WidgetKit for 22 home-screen widgets and 6 Lock Screen variants. Shared App Group container, TimelineProvider with smart refresh windows so battery doesn't tank.
  • ActivityKit for Live Activity and Dynamic Island during an active session.
  • WatchKit + SwiftUI for a standalone Watch app with 15 complications across all families.
  • Vision + CoreML for on-device drink recognition (custom-trained classifier on bottles and cans).
  • AVFoundation barcode scanner that I wired up to five separate product databases. Each one has a different response shape, different rate limits, different reliability. Lookup falls through them in order until one returns a match. This took longer than the rest of the camera stack combined.
  • AppIntents for 10 Siri Shortcuts.
  • StoreKit 2 for the Premium IAP layer. On-device receipt validation, no server.

The interesting bits:

The AlcoScore animation was a proper rabbit hole. The score is a six-pillar composite over a rolling 28-day window, with a breathing dial in the centre and a chase highlight that travels around the card border. First pass used standard SwiftUI withAnimation(.repeatForever) for both. Looked fine in isolation, felt subtly wrong in practice. The two animations would drift out of phase over time, and any unrelated state change on the screen would cause both to stutter mid-cycle as SwiftUI re-rendered the view tree. The fix was switching to TimelineView(.animation), which is still pure SwiftUI but driven by the system's display link. Both the breathing opacity and the chase angle are now computed directly from the same timestamp, so they're mathematically locked to the same phase by construction. Buttery on 60Hz, silky on 120Hz ProMotion, no jank when the rest of the screen re-renders.

The Tower easter egg is a fully playable balance game hidden inside the app. Two days solid to build, just for the people who find it. Worth it? Maybe not, lol.

The onboarding scramble:

Two days before launch I looked at my onboarding flow and realised it was hopeless. A few skip-able screens that asked nothing meaningful and dumped you into the app with no context. For an app with five different goal types and a six-pillar habit score, that's a recipe for new users bouncing in 30 seconds. I tore the whole thing out and rebuilt it from scratch with 48 hours to go. Proper goal selection, real explainers, anonymous opt-in option. Forgot to shower for a day 😷. Got it shipped.

What it does:

🍺 273-drink branded library across 9 regions, plus 60 alcohol-free options for swaps. ABV, calories, units, cost calculated automatically. Log a Guinness or a White Claw with one tap.

🎯 Five goal types: cut back, weekly limit, dry days per week, full quit with sober streak, or just track. Goals change without resetting your data.

📊 AlcoScore: six-pillar habit score (frequency, intensity, trend, control, behavior, recovery) over a rolling 28-day window. The "intensity" pillar catches binge nights even when your weekly total looks fine.

🤝 Sober support built in. Live streak counter, calendar view, 60 alcohol-free swaps.

⌚ Full Apple Watch app, 15 complications.

📱 22 home-screen widgets, 6 Lock Screen widgets, Dynamic Island, Live Activity, 10 Siri Shortcuts, 7 alternate icons.

👁️ Vision-based drink recognition plus a 5-source barcode scanner for exact can and bottle matches.

🔒 No account. No signup. No subscription gate. No analytics. Nothing leaves the device by default. CSV and PDF export when you want your data out.

The build:

Solo over six months, roughly 300 hours of actual coding (the rest was planning, App Store assets, and writing the SEO content site). I'm a marketer by trade, not a trained developer. Apple App Review rejected me four times in five days before approving on day seven with moments to spare before launch, which is its own story.

Free, with optional Pro/Premium tiers. Core tracker is free forever, no nags.

App Store: https://apps.apple.com/app/id6762422391

Site: https://alcolog.app

YouTube 30 second promo video: https://www.youtube.com/shorts/e5mdVLo4LQI

Happy to dig into any of the technical decisions, the TimelineView(.animation) work, the barcode multi-source fallback, the SwiftData migration, the 48-hour onboarding rebuild, or the App Review saga.

Thank you for reading 😄

reddit.com
u/AlcoLogApp — 1 day ago

As a heavy drinker I made AlcoLog, a free iOS drink tracker for people who want to cut back without necessarily immediately quitting.

https://preview.redd.it/z8wycvvpnw0h1.png?width=1178&format=png&auto=webp&s=1fa8ed6bf17dd6195f96188b6b940cfa5e53ac3d

Hey guys,

The story: Most drink trackers assume you want to quit. Most calorie apps treat alcohol as an afterthought. As a heavy drinker for decades, I wanted something that handled drinking like a serious habit-tracking problem, so I built one. It launched Monday.

What it does:

🍺 273-drink branded library across 9 regions, plus 60 alcohol-free options for swaps. ABV, calories, units, cost all calculated automatically. Log a Guinness or a White Claw with one tap, custom pours saved for next time.

🎯 Five goal types because not everyone wants the same thing. Cut back, weekly limit, dry days per week, full quit with sober streak, or just track without a goal. Goals can change without resetting your data.

📊 AlcoScore: A six-pillar habit score (frequency, intensity, trend, control, behavior, recovery) calculated over a rolling 28-day window. Updates live as you log. The "intensity" pillar catches the binge nights even when your weekly total looks fine, which is the thing most trackers miss.

🤝 Sober support built in, not bolted on. If your goal is full quit, the app tracks your sober streak with a live counter & calendar view, and offers 60 alcohol-free drinks to log.

Full Apple Watch app with 15 complications. Log without touching your phone, useful when you're out.

📱 22 home-screen widgets, 6 Lock Screen widgets, Dynamic Island, Live Activity, 10 Siri Shortcuts, 7 alternate icons.

👁️ Apple Vision drink recognition: Point your camera at a beer or a cocktail and it logs the drink. Runs on-device, no server calls. I also built a bar code scanner for exact matching cans and bottled drinks, which does use a server API for lookup.

🔒 No account. No signup. No analytics. Nothing leaves the device. HealthKit sync is one-way only (writes drinks, reads nothing). CSV and PDF export when you want your data out.

The build:

SwiftUI, solo, roughly 300 hours over six months (included a lot of learning and planning). I'm a marketer by trade, not a trained developer. App Review rejected me four times in five days before approving on day seven, which is its own story 🤣

Free, with optional Pro/Premium tiers. The core tracker is free forever, no nags, no paywalls in the way of standard use.

App Store: https://apps.apple.com/app/id6762422391

Site: https://alcolog.app

Looking forward to answering any questions on the build, the App Review saga, or the feature decisions. Thank you for reading 😄

https://reddit.com/link/1tbzn57/video/uo9t56evnw0h1/player

reddit.com
u/AlcoLogApp — 1 day ago

I built a free iOS drink + Naltrexone tracker specifically for TSM. Looking for feedback from people who actually use the method.

Hey fellow TSMers. I've been on TSM for a while. Wanted to share something I built specifically because nothing on the iOS App Store handled our protocol properly.

It's called AlcoLog. Launched on the App Store on Monday. Free. No account, no signup, nothing leaves your phone unless you specifically opt-in to anonymous data.

What's in it for us specifically:

  • Naltrexone and Nalmefene both supported (plus Acamprosate, Disulfiram, Gabapentin, Topiramate, and a supplements category for the DrinkAid/Myrkl/Revibe people)
  • Each medication card has its own colour, dose log with a 24-hour time picker, last-24h dose summary, and a redose timer you set in hours and minutes
  • Per-medication location reminders for those of us who dose-on-cue at specific places (arrival, departure, or both)
  • Real-time drink session tracking with units, calories, and cost as you drink
  • The five goal types means whatever your TSM path looks like is supported. Extinction goal with abstinence. Reduced drinking. Just-track for the ambivalent weeks. The AlcoScore habit score doesn't penalise you for switching goals or for slips.
  • 60 alcohol-free drink options in the library so the AF days actually feel logged, not just "nothing happened today"
  • Non-judgemental Sober Streaks for the days you want to go Sober
  • CSV and PDF export if you share data with your prescriber

A bit of personal context. I'm a marketer who codes. Solo build, six months, 300+ hours. I built it because I'd hit the same wall a lot of us hit. TSM honestly changed my drinking life and the tooling around it was nowhere close to what the method deserves.

What I'd genuinely love feedback on from people who actually use the method:

  1. The redose timer defaults. Naltrexone is set to 4hrs pre-drink by default. Does that match how you actually use it, or do you titrate differently?
  2. The medication is deliberately excluded from the AlcoScore habit score, so logging doses doesn't artificially help or hurt your number. Does that match what you'd want, or would you rather see medication consistency reflected in the score?
  3. Anything obvious you wish existed in a TSM tracker that nothing currently does.

Site: https://alcolog.app

App Store: https://apps.apple.com/app/id6762422391

Brutal feedback welcome. I'd rather hear "this misses the point" from people who actually do TSM than glowing reviews from people who don't. Thank you.

u/AlcoLogApp — 1 day ago
▲ 0 r/iosdev

New iOS developer here. My first app got four rejections in five days from different reviewers. Here are some things I wish I'd known before submitting.

https://preview.redd.it/x8g4coyh8q0h1.png?width=1178&format=png&auto=webp&s=dcae9214a5de03333da9d927db8652899cd7e943

Hey guys,

I shipped my first solo iOS app on Monday. I submitted expecting maybe one minor flag. Got four rejections across seven days from four different reviewers before approval 😞

What surprised me most was that each rejection flagged completely different things. I don;t believe that any of the reasons would have shown up in any "common rejection reasons" guidance you'd find by searching beforehand.

Here's what each reviewer mentioned:

**Rejection 1 (Day 2):** Guideline 3.1.2(c). (Missing functional Terms of Use link in App Store metadata)

The Privacy Policy field in App Store Connect is well-known; the Terms of Use requirement is less so. If you're using Apple's standard EULA, include a Terms of Use link in the App Description. The terms page itself should disclose every paid product with subscription length, price, and renewal mechanics, consolidated in one place a reviewer can read in two minutes.

**Rejection 2 (Day 4):** (Three items in one message)

  1. Guideline 2.5.4: vestigial `UIBackgroundModes` "location" entry in Info.plist. I had it declared for a feature I'd built and then removed during beta. Forgot to strip the declaration. Reviewer flagged that the entitlement didn't match an actual feature.
  2. Guideline 3.1.2(c): introductory pricing displayed more prominently than the billed amount on the paywall. Marketing instinct said make the discount feel like the win. Apple's HIG for subscriptions is clear: the regular billed amount must be the typographic hero, not the intro price. I'd been using "25% OFF" badges and large discount text. Inverting the hierarchy was the fix.
  3. Guideline 5.1.1(v): even though my "account" is just an opt-in anonymous identifier, Apple required a labelled, visible, immediate "Delete My Data" button. Toggle-off as implicit deletion reads as compliant but doesn't satisfy current enforcement.

**Rejection 3 (Day 5):** (Guideline 2.3.4 Accurate Metadata)

My App Preview videos used 3D phone mockups demonstrating the app's screens (posted at the end of this post). The reviewer cited content that does not "sufficiently show the app in use" and specifically called out device frames. The frustrating part: the public guidance page doesn't seemingly explicitly forbid device frames. The closest documented rule is "Stay within the app" with examples about over-the-shoulder shots, which didn't apply. Internal training material the reviewers operate from clearly differs from the public docs here. With launch four days away, I just pulled the App Preview videos entirely to unblock the re-submission. Raw screen captures are unambiguously safe; marketing chrome belongs on your own website.

**Rejection 4 (Day 6):** Guideline 2.1(b) Information Needed.

Not technically a rejection, a pause to ask a question. The reviewer couldn't locate 2 of the 11 IAPs attached to the version. The IAPs were on the same Settings screen, accessible by tapping a card directly below the one the reviewer had successfully navigated to. I replied within an hour with click-by-click navigation breadcrumbs for all 11 IAPs. Lesson: include explicit IAP navigation in your App Review Notes upfront, even when it feels excessive. Reviewers operate on 5-15 minute time budgets per app and won't always discover every IAP attached to a version.

Approved on day 7 by reviewer 4 🥳

A few observations from inside the cycle:

  1. Reviews are per-issue, not per-app: Every reviewer had access to every surface the previous reviewer had cleared, but later reviewers can independently surface anything new. There's no "previously cleared" status on individual screens. The structure favours institutional throughput over developer experience.
  2. Each rejection tends to be smaller in scope than the last (loose pattern, not a guarantee): The reviewable surface shrinks as previously-flagged items get fixed. Reassuring while you're in the cycle, but don't bank on it.
  3. Beta App Review approval does not predict full App Review approval: Different teams, different criteria. A build that passes Beta with the same features that get flagged in production review isn't a contradiction. They're different review processes.
  4. Sensitive-category enforcement vectors stack: Subscriptions, plus a health-adjacent category, plus multiple IAPs, plus first-version v1.0, plus an In-App Event tied to launch date, triggers every scrutiny vector simultaneously. A free single-screen utility with no IAPs gets a 2-minute pass. The difficulty of your review experience correlates with the seriousness and breadth of your launch, not the quality of your app.

What's most interesting in hindsight is what *didn't* get flagged. The habit-scoring methodology, the medication-tracking surface, the HealthKit writes, the privacy model. The parts I'd worried about most never came up across four independent reviewers. The procedural and mechanical surface (pricing display, background mode declarations, metadata links, App Preview composition, IAP discoverability) was where the friction lived.

Full version with the personal timeline and tactical fixes for each issue here: https://alcolog.app/resources/blog/app-review-four-rejections-launch-diary/

Question: Has anyone else hit the App Preview "device frames" rejection (2.3.4)? That was the most surprising of the four since the public docs don't explicitly forbid them. Curious whether reviewers have been flagging this consistently or if I just got an unlucky one.

Thanks for reading, i hope it helps someone else 😄

https://reddit.com/link/1tb6wkk/video/q8j6eddjhq0h1/player

reddit.com
u/AlcoLogApp — 2 days ago

Update: Two weeks ago I posted my TestFlight beta here. AlcoLog launched on the App Store yesterday. Here's what changed and what I learnt based on your feedback.

https://reddit.com/link/1tb25f2/video/x2br73kbkp0h1/player

Quick followup to my TestFlight post from a couple of weeks ago. AlcoLog is now live on the App Store. Free to use, no account, nothing leaves the device.

The feedback on that post genuinely shaped the launch version, so before anything else:

  • Dependent-Trouble-64 flagged that the location tagging was picking up random business names instead of actual bar names. I commented in that thread that i quickly built a two-pass MKPointOfInterestCategory fix. It shipped in beta v20 and is in the App Store build. Pass 1 prefers hospitality-category POIs within 100m, Pass 2 falls back to strict 60m matching, else nil. Real bars get named now, not the photocopying shop next door.
  • Ok-Watercress9603 asked whether the app was for nights-out tracking or long-term habit work. The answer I gave then ("both, multi-role design") I now actually have evidence for. The five goal types and the goal-switching logic mean users can use it for whichever they need at the time. Curiosity phase → "just track." Heavy weekends → "weekly limit." Sober month → "quit entirely with streak." The AlcoScore system is independent of which goal you pick.
  • Few_Big_6851 ran the idea through Embarkist and got 52/100 with a note that the problem urgency is the gap. Fair point. The launch positioning leans harder into the cost-per-session number (most non-tech beta users say this is what surprised them) and the "no shaming" philosophy that came out of that comment thread, partly because of feedback in this sub.
  • CorpoCat: Asked about an Android version. Yes, Android is still on the roadmap. I'm being careful not to commit to a timeline until iOS is stable and I know what the user base looks like over the next few months. I am also a little worried about updating two code branches along the way.

What else changed since TestFlight:

  • I survived four App Review rejections in five days from different reviewers before approval on day seven. Each rejection flagged something different. Full breakdown for anyone who's interested in the App Store gauntlet: https://alcolog.app/resources/blog/app-review-four-rejections-launch-diary/
  • Apple Watch layout went through multiple revisions to ensure that what the user sees immediately on the small screen is actually useful.
  • Six-pillar habit score over a 28-day rolling window is now stable and visible across widgets, Watch, and the main app. The AlcoScore screen this lives on now also shows the goal and their progress that the user picked during on-boarding.
  • Barcode scanner queries 4-5 nutrition databases in parallel for ABV and calorie lookup, which was surprisingly tricky when sources disagree.
  • 22 home-screen widgets, 6 Lock Screen widgets, Dynamic Island, Live Activity. I genuinely went overboard with this, but the Apple-platform depth is the part I'm proudest of.
  • I literally created the on-boarding system 24hrs before the app was going live. I had to ask for two expedited app reviews for v1.0.1 & v1.0.2 to ship the latter as the actual launch version. This was way too stressful and something I should have decided on days, if not weeks before.
  • After the app launched i emailed 27 relevant websites. Many of which are alcohol reduction or medication communities. I was expecting a bunch of responses to have to deal with, and have a total of three in 48 hours. Marketing is hard and unrewarding 😞

What I'd love feedback on now that it's live:

  • The onboarding flow with five goal types. Is the choice architecture clear in the first 30 seconds, or is it too much to take in at install?
  • Pricing: $4.99/month for pro and $9.99 per month for premium subscription. No strong intuition on whether that's right. Suggestions welcome, and you can see the features for the subscriptions at the bottom of the AlcoLog website home page.
  • The cost-per-session tracker: Should I be leading with it more prominently in onboarding? It's the feature that "regular users. e.g mom & dad, non-tech friends" were most surprised by.

Info:

Site: https://alcolog.app

App Store: https://apps.apple.com/app/id6762422391

Solo build, 300+ hours, no team, no funding, no client work. Brutal feedback always welcome.

Thanks for your time 😄

reddit.com
u/AlcoLogApp — 2 days ago

https://preview.redd.it/j6xx48ntavxg1.png?width=1200&format=png&auto=webp&s=9f4512b0760d105e96dee497b0a2761358b79a89

What it is

iOS alcohol tracker built around an honest 0-100 health score (AlcoScore) that judges drinking across six pillars: frequency, intensity, trend, control, behaviour, and recovery. Rolling 28-day window. No streak shaming, no account, no cloud. Built solo over the last six months because I needed something better than what existed.

Website with full info: alcolog.app
Launch: May 11, 2026

TestFlight Link: https://testflight.apple.com/join/CJwu7kPp

What I'd love feedback on

  • Ease of drink logging. Is this actually as frictionless as I intended? Does it help you actually want to pick up the device and log a drink?
  • AlcoScore tuning. Does the 0-100 score feel honest for your situation, or patronising? Tuning is opinionated and I want to know where it misses.
  • Apple Watch companion. 15 native complications across every family, independent AlcoScore screen, Control Center controls. If you wear a Watch, this is the surface I most want eyes on.
  • Live Activities + Dynamic Island. Live-ticking timers via Text(timerInterval:). Try a long session and watch for state drift.
  • Drink location tagging. MapKit reverse-geocoding. Does it pick sensible venue names where you live?
  • Anything that feels broken or off. Honest critique is welcomed. I have spent 300+ hours getting everything right, but I am sure there are some things I have missed.

Quick build notes

  • Native SwiftUI throughout, SwiftData for persistence, no third-party SDKs, no analytics
  • 22 iOS Home Screen widgets + 6 Lock Screen widgets
  • 3 Control Center controls + 3 Smart Stack rectangular widgets
  • 273 drinks across 9 regions including Korean sojus, Philippine Red Horse litros, and 60 alcohol-free options for dry nights
  • Custom 4-category haptic system shared iPhone-to-Watch
  • Optional Pro and Premium tiers; core tracking, medication logging, and drink location tagging are all free

What's not done yet

  • 7 alternate drink icons (designer shipping next week)
  • Bugs daily. This round is for finding them.

300+ hours in, two weeks to launch. Thanks in advance for any time you give it.

reddit.com
u/AlcoLogApp — 17 days ago