Skip to content
Daniyar Kurmanbayev Contact

HashtagGenerator

iOS App ยท Creator Tools

SwiftUI app that generates hashtags from text or images using a credit-based IAP model.

iOS developer (end-to-end delivery from Figma to buildable project) Delivered (project handed off as Xcode zip; not published)
  • iOS App
  • Creator Tools
  • SwiftUI
  • StoreKit 2
  • SwiftData
  • Clean Architecture
HashtagGenerator Banner.png

Summary

HashtagGenerator is an iPhone app that generates hashtags via an existing backend API. The app focuses on fast input (keyword or image), clean results selection/copy, history, and a local credit wallet with in-app purchases. I delivered a buildable Xcode project and handled follow-up changes and bug fixes. Key highlights:

  • API-driven hashtag generation (no on-device ML) for text and images
  • Credit wallet persisted in Keychain; StoreKit 2 purchases add credit packs
  • SwiftUI app with clear layering, event-driven updates, and SwiftData history

Quick facts

  • Role: iOS developer (end-to-end delivery from Figma to buildable project)
  • Timeframe: Short client engagement + post-delivery fixes
  • Platform: iOS 17+, iPhone-only (SwiftUI)
  • Status: Delivered (project handed off as Xcode zip; not published)
  • Team: 1

Problem

  • Backend owned hashtag generation, so the client app needed to be reliable, lightweight, and UI-first.
  • Credits had to be stored locally (no backend ledger) and survive typical reinstalls.
  • IAP needed realistic pricing in production, but testable flows in the simulator.

Solution

I implemented two generation flows hitting a single endpoint: text tags and image tags (base64). Results are shown in a selectable grid with copy actions, and each generation is saved to history. Credits gate generation and are refilled via IAP, with a starter credit grant on first launch.

Architecture

  • Layered SwiftUI codebase: Features (UI) / Domain (use cases) / Data (repos, StoreKit, HTTP) / Shared (design system)
  • AppContainer composition root wiring SwiftData, Keychain storage, HTTP client, and event bus
  • Router for navigation, sheets, and full-screen flows
  • Use cases: GenerateHashtags, FetchCredits, BuyCredits, History read/write
  • Networking with RequestBuilder + middleware chain (extra headers + structured network logger)
  • SwiftData History model with transactional saves via TransactionRunner + SaveNotifier
  • StoreKit 2 purchase flow + transaction updates listener to reconcile async purchases

Tech stack

  • iOS: Swift, SwiftUI, StoreKit 2, SwiftData, Keychain
  • Architecture: Layered Features/Domain/Data, use cases + repositories, Router navigation, event bus
  • Backend/Infra: REST API (image/text generation), base64 image upload
  • Tooling: Xcode, StoreKit Configuration (simulator), network middleware + structured logging

Hard problems solved

  • Implemented local-credit economics that persists via Keychain across restarts and typical reinstall scenarios (with clear limitations)
  • Built a testable IAP pipeline: live StoreKit product pricing on device, StoreKit config scaffolding for simulator testing
  • Kept the API contract strict: sanitized keyword inputs, compressed + base64 image payloads, and typed request bodies per req_type
  • Prevented UI drift from Figma by standardizing sheets/menus using native iOS components and a small design system
  • Ensured credit accounting stays consistent across explicit purchases and StoreKit transaction updates
  • Reproduced and fixed a camera/photo-picker regression (both actions opening the gallery) by replacing the photo input component

Impact / Results

  • Delivered the requested app as a buildable Xcode project aligned with provided Figma screens
  • Added post-delivery changes (starter credits, UX improvements) and provided targeted patch fixes quickly
  • Left a maintainable foundation for future auth or backend-led credit tracking if needed