Skip to main content

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.

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.

Core Gameplay Loop

Each round in ChefDash follows a tight, repeating cycle designed to keep players in a state of focus and flow:
  1. Receive an order — the game generates a random recipe from the current level’s possibleRecipes pool and displays the target emoji stack on screen.
  2. 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.
  3. 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.
  4. 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.
The combo multiplier resets to 1 on any error and climbs by 1 with each consecutive perfect burger, up to a maximum of 5. Maintaining a long streak is the primary skill expression in ChefDash.

Three Main Screen Areas

ChefDash is organised into three conceptual zones, each backed by a dedicated SwiftUI view tree:
ZoneTab valuePrimary viewPurpose
Homehouse.fillHomeViewTitle screen; game branding, player greeting, and the “¡INICIAR PARTIDA!” start button
Mapmap.fillMainMapViewWorld map showing all 20 levels; locked levels are greyed out until the prerequisite is cleared
Kitchenkitchen_roundRecipesViewActive gameplay; live timer, ingredient buttons, the current burger stack, and visual feedback messages
Two additional utility tabs — 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 / @EnvironmentObjectGameState is owned at the root by ChefDashApp as a @StateObject and injected into the entire view hierarchy as an @EnvironmentObject, giving every view zero-boilerplate access to shared state.
  • ObservableObject + @PublishedGameState exposes every piece of mutable data (coins, active tab, burger stack, level list, shop inventory) as @Published properties 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; GameState has no @AppStorage or UserDefaults bindings, 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 by GameState.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 timerbaseTime decreases 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:
ItemEmojiPriceEffect
Horno Industrial🌋50 coinsGrants +15 seconds of extra time for the current round
Cuchillo Afilado🔪30 coinsStarts the round with a ×2 combo multiplier instead of ×1
Salsa Secreta🥫40 coinsAdds +10 bonus coins per perfectly served burger
Players select which consumables to activate before entering 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.

Build docs developers (and LLMs) love