ChefDash requires no external dependencies, no CocoaPods, and no Swift Package Manager packages — the entire project is self-contained vanilla SwiftUI. All you need is a Mac with Xcode 15 or later installed. Follow the steps below and you will be tapping burger ingredients in the simulator within minutes.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/ImLukzy/ChefDash/llms.txt
Use this file to discover all available pages before exploring further.
Minimum Requirements
| Requirement | Version |
|---|---|
| Xcode | 15.0 or later |
| iOS deployment target | 17.0 or later |
| Swift | 5.9 or later |
| External dependencies | None |
No Swift Package Manager packages, CocoaPods, or Carthage dependencies are used. There is no
Package.swift or Podfile to resolve — the project builds immediately after opening.Steps
Clone the repository
Open Terminal and clone the ChefDash repository from GitHub:This creates a
ChefDash/ directory containing the full Xcode project.Navigate into the project directory
The Xcode project lives one level deeper than the repository root:You should now be inside the directory that contains
ChefDash.xcodeproj.Open the Xcode project
Launch the project directly from Terminal:Xcode opens immediately — no dependency resolution or indexing delay since the project has no external packages.
Select a simulator and run
In the Xcode toolbar, click the device picker and choose iPhone 15 or any later model running iOS 17+. Then press ⌘R (or click the ▶ Run button) to build and launch the app.
Explore the Home screen
On launch, the app presents HomeView — the title screen. You will see the “CHEF DASH” branding and a large orange “¡INICIAR PARTIDA!” button at the bottom of the screen. The custom tab bar with Home 🏠, Map 🗺, and Shop 🛒 icons floats above the device’s safe area.The initial coin balance starts at 150 coins, and the default player name is “Chef Novato” with the 👨🍳 avatar.
Start your first round
Tap “¡INICIAR PARTIDA!” on HomeView. The app navigates to MainMapView (the level select map) by setting
gameState.activeTab = "map.fill". From there:- Tap Level 1 — Burger Station (the only unlocked level on first launch).
- A pre-game modal appears showing the level details and the consumables you can equip from your shop inventory.
- Tap the start button inside the modal —
gameState.activeTabswitches to"kitchen_round", the tab bar hides, and RecipesView opens. - The countdown begins. Tap each emoji ingredient in the correct order shown by the target recipe stack before time runs out.
App Entry Point
The entire application is bootstrapped inChefDashApp.swift. This is where GameState is created and injected into the view hierarchy:
GameState is instantiated as a @StateObject — SwiftUI owns the lifetime of this object and ensures it is created exactly once for the life of the app. It is then passed down as an @EnvironmentObject so any view in the hierarchy can access it without prop-drilling.
ChefDashApp sets .preferredColorScheme(.light), but ContentView immediately overrides this with .preferredColorScheme(.dark) on its root ZStack. This is intentional: the arcade dark background (Color(red: 0.08, green: 0.08, blue: 0.10)) and the floating tab bar are designed for a dark environment, and the override ensures the scheme is consistently dark regardless of the user’s system-wide appearance setting.What Happens at Launch
WhenGameState.init() runs, it calls setupLevels(), which synchronously builds the full array of 20 Level structs:
- Levels 1–3 are hand-authored with specific ingredient sets and recipe lists.
- Levels 4–20 are generated procedurally by a loop that scales
targetOrders,availableIngredients,possibleRecipes, andbaseTimeaccording to the level index.
gameState.levels, and levels[0] (Level 1 — Burger Station) has isUnlocked: true from the outset. All other levels start locked.