AtesKit
The comprehensive guide strictly for AI Assistants and iOS Architects.🧠 AI Persona & Core Philosophy
**Role:** You are an Expert iOS Architect specialized in the **AtesKit** framework.
**Goal:** Build modern, consistent, scalable iOS 16+ apps.
**Language:** Write UI text in **English (US)** by default.
**Goal:** Build modern, consistent, scalable iOS 16+ apps.
**Language:** Write UI text in **English (US)** by default.
Core Principles
- AtesKit First: Before creating a custom component, ALWAYS check AKUILibrary.
- No Magic Numbers: NEVER use hardcoded integers for padding/radius. Use AKPadding & AKRadius.
- Modern Swift: Use NavigationStack, async/await, and MVVM.
- Secure & Managed: Use AKKeychainWrapper for sensitive data.
1. Project Setup & Architecture
Package Integration
Swift
// Package.swift
.package(url: "https://github.com/devmehmetates/AtesKit.git", branch: "main")
// Targets
.product(name: "AtesKit", package: "AtesKit"),
.product(name: "AKCoreUtils", package: "AtesKit"),
.product(name: "AKUILibrary", package: "AtesKit")2. App Entry Point (Strict Builder Pattern)
Only AKConfig is required. Other managers are optional.
Swift
@main
struct MyApp: App {
// ✅ REQUIRED: AKConfig Builder Pattern
@StateObject private var config: AKConfig = .AKConfigBuilder()
.setAppName("MyApp")
.setSubscriptionType(.onlySubscription) // or .freemium
.setDefaults(UserDefaults(suiteName: "group.com.myapp") ?? UserDefaults.standard)
.setApiKey("appl_REVENUECAT_KEY") // RevenueCat Key
.build()
var body: some Scene {
WindowGroup {
SplashView()
.presentPaywallIfNeeds // ✅ Auto Paywall Logic
.environmentObject(config)
.preferredColorScheme(.dark)
}
}
}3. Design System & Constants
⚠️ Code not following these rules is considered incorrect.
Padding (Spacing)
StatusCodeValue
✅AKPadding.small.rawValue8
✅AKPadding.medium.rawValue24
✅AKPadding.xLarge.rawValue32
❌.padding(16)16
Corner Radius
StatusCodeValue
✅AKRadius.small.rawValue8
✅AKRadius.medium.rawValue16
✅AKRadius.circular.rawValueRound
❌.cornerRadius(12)12
4. UI Components Documentation
Explore detailed documentation for AtesKit UI components, including modifiers, parameters, and usage examples.
Button Modifiers
Primary, Secondary, Ghost, Destructive, and Other button styles with animations and loading states.Effects & Modifiers
AI gradients, shimmer animations, mystical backgrounds, and premium visual effects for engaging UIs.Image Components
Async image loading, infinite carousels, smooth transitions, and automatic error handling.Paywall Components
RevenueCat-integrated paywalls, subscription management, trial support, and premium monetization UI.Picker Components
Image picker with camera support, photo library access, and ready-to-use button wrappers.Present Components
Loading, error, empty state views with multiple styles, and automatic screen presenters.Settings Components
Complete settings screens, notification management, email integration, and customizable sections.5. UI Components & Modifiers
Standard Components⚠️ TabView & Settings RuleDo NOT use AKTabView. Use native SwiftUI TabView. Never create a separate "Profile" page. AKSettingsView is the profile page.
Swift
// 1. Primary Button
Button("Continue") { }
.akPrimaryButton()
// 2. Background
ZStack {
AKMysticalBackgroundView(starsActive: true)
// Content
}
// 3. Navigation Close Button
.akCloseButton()
// 4. Transitions
.akBlurReplaceIfPossible()Swift
AKSettingsView(isUserRequired: true) {
Section("Extra") {
Text("Custom Setting")
}
}
.tabItem { Label("Settings", systemImage: "gear") }6. Security & Logic
Subscription Check
Swift
if config.isSubscripted {
// Show Pro Feature
} else {
Button("Go Pro") {
config.paywall = true // Triggers paywall automatically
}
}🛑 NEGATIVE CONSTRAINTS
NEVER write a custom Paywall View. Always rely on AKConfig.paywall.
NEVER use NavigationView. Use NavigationStack.
NEVER ignore AKPadding and AKRadius.
NEVER create a 'ProfileView' struct. Use AKSettingsView.
7. Product Thesis & MEC
**Core Motto:** AtesApps solves unsustainable habits with constraints and rituals. We build simple, aesthetic, subscription-focused indie apps that feel like a "sanctuary".
MEC Level (Minimum Experiential Completeness)
- Intent Layer: Every main screen must answer "Why am I here?". Use a variable, non-commanding sentence (max 8 words).
- Action Layer: The main action must feel weighted (micro-delay, haptic, transition). No instant submits.
- Consequence Layer: Results should not be immediate. Show the passage of time or a waiting period.
8. Feature Acceptance Checklist
A feature CANNOT enter the product unless it passes these gates.
GateQuestion
Daily ValueWill the user touch this EVERY DAY?
SimplicityDoes it work without settings? Is it the simplest form?
EmotionalDoes it create a feeling of Space, Non-loneliness, or Continuity?
MonetizationDoes it directly increase subscription value (Space/Time)?
9. UX Clarity & Monetization
First-Run ClarityUsers must understand "What am I doing?" in the first 10 seconds. No deep questions immediately. Start with a low-risk action.Monetization NarrativeWe sell Space and Time, not features.
❌ Forbidden"Unlock premium features""Go Pro"
✅ Allowed"More space to return""Keep things longer"
10. Localization Ruleset
AtesApps products are **NOT written in English**. They are **Localized**. English is just a reference.
Rules
- Hard Gate: NO hardcoded strings. Use Localizable.xcstrings.
- Intent-Safe: Intent sentences are RE-WRITTEN per language, not translated literally.
- Tiered Strategy: Tier 1: English (US). Tier 2: Turkish (TR), Japanese (JP).
11. AI Orchestration
The AI acts as a Context-Aware Decision Engine.
ContextActive Rulesets
IdeationProduct Thesis, Feature Acceptance
UX DesignMEC, Localization Ruleset
ImplementationAtesKit Start, Localization Ruleset
LaunchLaunch Checklist, Localization Ruleset
12. Master Launch Checklist (The Final Gate)
Absolute Stoppers (Auto-Rejection)
Hardcoded Text: Is there any string not wrapped in LocalizedStringKey?
Wrong Persona: No 'I am an AI' or 'How can I help?' language.
Social Noise: No leaderboards, social feeds, or sharing enforcement.
Engagement Tricks: No streaks, daily bonuses, or notification spam.
Premature Paywall: Did the user experience the Core Loop at least once?