EasyApp

Project Structure

Overview of the EasyAppSwiftUI boilerplate file and folder organization

Project Overview

Since Apple has not officially provided a best practice for SwiftUI project structure so far, EasyApp has referenced numerous open-source projects and WWDC sample code, combined with our own experience, to provide a complete project structure that facilitates future iterability and maintainability of the entire project.

Root Directory Structure

Main application modules containing all business logic pages

Core functionality library containing app's core services

Reusable UI component library

AnimatedGradientBackground.swift
AvatarImage.swift
CommonContentUnavailableView.swift
EANavigationLink.swift
EASecureField.swift
EATextField.swift
RequestErrorView.swift
SignInWithAppleButtonView.swift
SocialLinkView.swift
SubscriptionInfoView.swift
TypingTextView.swift
WebView.swift

SwiftUI view modifiers

AuthViewModifier.swift
ColorSchemeShadowModifier.swift
FullScreenToastViewModifier.swift
OnboardingViewModifier.swift
RequirePremiumViewModifier.swift
ResignKeyboardOnDragGesture.swift
ShimmerViewModifier.swift
ShowPaywallSheetWhenCalledModifier.swift
ShowWhatsNewsModifier.swift
TappableModifier.swift
ViewBackgroundModifier.swift

Swift type extensions

ExtensionColor.swift
ExtensionDate.swift
ExtensionString.swift
ExtensionView.swift

Utility classes and helper functions

HapticsEngine.swift
OpenApp.swift
Validate.swift

Common modules and shared state

AppState.swift
CommonSupabaseViewModel.swift
PaywallNotificationData.swift

Application constant definitions

Constants.swift

Color theme definitions

AppColors.swift

Custom style definitions

Application resource files

Localization resources

Localizable.xcstrings
ContentView.swift
EasyAppSwiftUIApp.swift
AppLaunchScreen.storyboard

Directory Descriptions

Core Directories

  • App/: Main functional modules of the application, divided into different subdirectories by functionality

    • AIExample/: AI functionality examples and related pages
    • InAppPurchases/: In-app purchase functionality implementation
    • LoginAndSignUp/: User authentication flow
    • MainView/: Application main interface
    • Onboarding/: User onboarding flow
    • Settings/: Application settings pages
  • Lib/: Core functionality library providing basic services for the application

    • Auth/: User authentication management
    • InAppPurchases/: In-app purchase management (supports RevenueCat and StoreKit2)
    • Supabase/: Supabase backend service integration

UI Components and Styles

  • Components/: Reusable UI component library
  • ViewModifier/: SwiftUI view modifiers providing common view behaviors
  • Styles/: Custom style definitions
  • Colors/: Application color themes

Tools and Extensions

  • Extension/: Extension functionality for Swift native types
  • Utils/: Utility classes and helper functions
  • Common/: Common modules and application state management
  • Constants/: Application constants and configuration

Resource Files

  • Assets.xcassets/: Application icons, images, and other resources
  • Resource/: Localized string resources

Last updated on