Skip to content

Native iOS app for AI Weekly - Your weekly deep dive into AI

Notifications You must be signed in to change notification settings

aiweeklyapp/ios

Repository files navigation

AI Weekly for iOS

Native iOS client for AI Weekly — your weekly deep dive into AI.

Swift iOS SwiftUI XcodeGen


Overview

A magazine-style reading experience delivering curated AI news, research papers, and industry analysis. Built with SwiftUI and a clean MVVM architecture.

Features

Feature Details
Home Feed Featured banner + latest articles with pull-to-refresh
Explore Category browsing across 10 AI domains with trending topics
Library Bookmarks and reading history management
Search Full-text article search with recent history
Article Reader Clean reading view with related articles
Onboarding Interest selection, notification opt-in, subscription flow
Subscriptions Free / Basic / Pro tier selection UI
Multi-language UI: English, Japanese, Simplified Chinese. Content locale independent of UI
Theming Light / Dark / System appearance modes

Tech Stack

Layer Technology
UI Framework SwiftUI
Architecture MVVM with @StateObject / @EnvironmentObject
Networking URLSession + async/await via APIClient actor
Logging os.Logger with categorized subsystems
Localization String(localized:) + .lproj bundles (en, ja, zh-Hans)
Project Gen XcodeGen (project.yml)
Min Target iOS 17.0
Swift 6.0 (strict concurrency)

Project Structure

AIWeekly/
├── App/                    # App entry point, scene lifecycle
├── Models/                 # Article, ArticleDTO, User, enums
├── ViewModels/             # HomeViewModel, ArticleViewModel, etc.
├── Views/
│   ├── Home/               # HomeView, FeaturedBannerView
│   ├── Explore/            # ExploreView, category browsing
│   ├── Library/            # BookmarksView, HistoryView
│   ├── Profile/            # ProfileView, settings
│   ├── Article/            # ArticleReaderView
│   ├── Search/             # SearchView
│   ├── Subscription/       # SubscriptionView, plan selection
│   ├── Onboarding/         # OnboardingView, interest picker
│   └── Components/         # Shared UI components
├── Services/
│   ├── APIClient/          # Network layer (actor-based)
│   ├── Localization/       # LocalizationService, AppLocale, ContentLocale
│   ├── Logging/            # AppLogger (os.Logger categories)
│   └── Storage/            # StorageService (UserDefaults)
├── Design/                 # AppFont, Spacing, Color tokens
└── Resources/
    ├── Assets.xcassets      # App icons, colors, images
    ├── en.lproj/            # English strings
    ├── ja.lproj/            # Japanese strings
    └── zh-Hans.lproj/       # Simplified Chinese strings

Prerequisites

  • Xcode 16.2+
  • XcodeGen (brew install xcodegen)
  • iOS 17.0+ device or simulator
  • Backend API running (see api)

Getting Started

  1. Generate the Xcode project:

    xcodegen generate
    
  2. Open AIWeekly.xcodeproj in Xcode

  3. Select your target device/simulator and run

API Connection

Environment Base URL
Simulator http://localhost:3000/api/v1
Device http://<your-lan-ip>:3000/api/v1

The base URL is configured conditionally via #if targetEnvironment(simulator) in APIClient.swift.

Localization

Language UI Strings Content Locale
English en.lproj en
Japanese ja.lproj ja
Simplified Chinese zh-Hans.lproj zh-Hans

Content locale is independent — users can read English articles with a Japanese UI, for example.

Related Repositories

Repository Description
api Backend API (required for data)
android Android client
web Web reader

License

Private — All rights reserved.

About

Native iOS app for AI Weekly - Your weekly deep dive into AI

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages