ChefDash is an iOS arcade game where players race against a countdown timer to assemble burger recipes by tapping emoji ingredients in the exact correct order. Every second counts — miss an ingredient, tap one out of sequence, or let the clock hit zero and the round is over. Complete enough orders to earn stars, unlock the next kitchen, and climb from a humble Burger Station all the way through twenty progressively unforgiving levels of culinary chaos.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.
Core Gameplay Loop
Each round in ChefDash follows a tight, repeating cycle designed to keep players in a state of focus and flow:- Receive an order — the game generates a random recipe from the current level’s
possibleRecipespool and displays the target emoji stack on screen. - Tap ingredients in sequence — the player taps ingredient buttons in the correct top-to-bottom order. A mis-tap resets the combo multiplier and clears the current stack.
- Earn coins — a successfully completed burger awards a base of 25 coins, multiplied by the current combo multiplier (up to ×5). Equipping the Salsa Secreta consumable adds a 10-coin bonus per perfect serve.
- Unlock the next level — once the player completes the required number of orders (
targetOrders) before time runs out, the round ends, stars are awarded, and the subsequent level is unlocked on the map.
Three Main Screen Areas
ChefDash is organised into three conceptual zones, each backed by a dedicated SwiftUI view tree:| Zone | Tab value | Primary view | Purpose |
|---|---|---|---|
| Home | house.fill | HomeView | Title screen; game branding, player greeting, and the “¡INICIAR PARTIDA!” start button |
| Map | map.fill | MainMapView | World map showing all 20 levels; locked levels are greyed out until the prerequisite is cleared |
| Kitchen | kitchen_round | RecipesView | Active gameplay; live timer, ingredient buttons, the current burger stack, and visual feedback messages |
cart.fill (ShopView) and profile — round out the tab bar, while level_complete navigates to VictoryView after a successful round.
Tech Stack
ChefDash is a pure SwiftUI project with no external dependencies or Swift Package Manager packages. The architecture leans entirely on Apple-native primitives:- SwiftUI — every screen is a SwiftUI
View; animations use.spring()modifiers and.transition()for tab switching. @StateObject/@EnvironmentObject—GameStateis owned at the root byChefDashAppas a@StateObjectand injected into the entire view hierarchy as an@EnvironmentObject, giving every view zero-boilerplate access to shared state.ObservableObject+@Published—GameStateexposes every piece of mutable data (coins, active tab, burger stack, level list, shop inventory) as@Publishedproperties so SwiftUI re-renders exactly the views that depend on changed values. All state is held in memory for the lifetime of the app process;GameStatehas no@AppStorageorUserDefaultsbindings, so data is not persisted across app restarts.
20-Level Progression
The first three levels — Burger Station, Green Diner, and Bacon & Grill — are hand-crafted with curated ingredient sets, recipe lists, and time limits tuned to introduce new ingredients gradually. Levels 4 through 20 are generated procedurally at launch byGameState.setupLevels(), which scales difficulty by:
- Growing the ingredient pool — more emoji ingredients become available as the level number rises, expanding from 3 to 8 distinct items.
- Increasing
targetOrders— later levels demand more completed burgers in a single round (formula:4 + (level / 2)). - Shrinking the timer —
baseTimedecreases from 55 seconds down to a minimum of 30 seconds (formula:max(30, 55 - (i * i / 15))).
In-Game Shop
The shop (ShopView, tab cart.fill) sells three consumable power-ups, each purchased with in-game coins and consumed at the start of the next round:
| Item | Emoji | Price | Effect |
|---|---|---|---|
| Horno Industrial | 🌋 | 50 coins | Grants +15 seconds of extra time for the current round |
| Cuchillo Afilado | 🔪 | 30 coins | Starts the round with a ×2 combo multiplier instead of ×1 |
| Salsa Secreta | 🥫 | 40 coins | Adds +10 bonus coins per perfectly served burger |
RecipesView; selected upgrades are tracked in gameState.selectedUpgradesForRound and consumed when startNewRound() is called.
Explore Further
Quickstart
Clone the repo, open it in Xcode, and play Level 1 in under five minutes.
Architecture
Understand how GameState, ContentView, and the tab router wire together.
Game State
Deep dive into the ObservableObject engine powering every mechanic.
Levels
Learn how the 20-level difficulty curve is designed and generated.