square_sandbox_simulator 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/LICENSE.txt +21 -0
- data/README.md +176 -0
- data/bin/simulate +388 -0
- data/lib/square_sandbox_simulator/configuration.rb +193 -0
- data/lib/square_sandbox_simulator/data/cafe_bakery/categories.json +54 -0
- data/lib/square_sandbox_simulator/data/cafe_bakery/combos.json +33 -0
- data/lib/square_sandbox_simulator/data/cafe_bakery/coupon_codes.json +133 -0
- data/lib/square_sandbox_simulator/data/cafe_bakery/discounts.json +113 -0
- data/lib/square_sandbox_simulator/data/cafe_bakery/items.json +55 -0
- data/lib/square_sandbox_simulator/data/cafe_bakery/modifiers.json +73 -0
- data/lib/square_sandbox_simulator/data/cafe_bakery/tax_rates.json +26 -0
- data/lib/square_sandbox_simulator/data/cafe_bakery/tenders.json +41 -0
- data/lib/square_sandbox_simulator/data/restaurant/categories.json +54 -0
- data/lib/square_sandbox_simulator/data/restaurant/combos.json +265 -0
- data/lib/square_sandbox_simulator/data/restaurant/coupon_codes.json +266 -0
- data/lib/square_sandbox_simulator/data/restaurant/discounts.json +198 -0
- data/lib/square_sandbox_simulator/data/restaurant/gift_cards.json +82 -0
- data/lib/square_sandbox_simulator/data/restaurant/items.json +388 -0
- data/lib/square_sandbox_simulator/data/restaurant/modifiers.json +62 -0
- data/lib/square_sandbox_simulator/data/restaurant/tax_rates.json +38 -0
- data/lib/square_sandbox_simulator/data/restaurant/tenders.json +41 -0
- data/lib/square_sandbox_simulator/data/salon_spa/categories.json +24 -0
- data/lib/square_sandbox_simulator/data/salon_spa/combos.json +88 -0
- data/lib/square_sandbox_simulator/data/salon_spa/coupon_codes.json +96 -0
- data/lib/square_sandbox_simulator/data/salon_spa/discounts.json +93 -0
- data/lib/square_sandbox_simulator/data/salon_spa/gift_cards.json +47 -0
- data/lib/square_sandbox_simulator/data/salon_spa/items.json +100 -0
- data/lib/square_sandbox_simulator/data/salon_spa/modifiers.json +49 -0
- data/lib/square_sandbox_simulator/data/salon_spa/tax_rates.json +17 -0
- data/lib/square_sandbox_simulator/data/salon_spa/tenders.json +41 -0
- data/lib/square_sandbox_simulator/database.rb +224 -0
- data/lib/square_sandbox_simulator/db/factories/api_requests.rb +95 -0
- data/lib/square_sandbox_simulator/db/factories/business_types.rb +178 -0
- data/lib/square_sandbox_simulator/db/factories/categories.rb +379 -0
- data/lib/square_sandbox_simulator/db/factories/daily_summaries.rb +56 -0
- data/lib/square_sandbox_simulator/db/factories/items.rb +1526 -0
- data/lib/square_sandbox_simulator/db/factories/simulated_orders.rb +112 -0
- data/lib/square_sandbox_simulator/db/factories/simulated_payments.rb +61 -0
- data/lib/square_sandbox_simulator/db/migrate/20260312000000_enable_pgcrypto.rb +7 -0
- data/lib/square_sandbox_simulator/db/migrate/20260312000001_create_business_types.rb +18 -0
- data/lib/square_sandbox_simulator/db/migrate/20260312000002_create_categories.rb +18 -0
- data/lib/square_sandbox_simulator/db/migrate/20260312000003_create_items.rb +23 -0
- data/lib/square_sandbox_simulator/db/migrate/20260312000004_create_simulated_orders.rb +36 -0
- data/lib/square_sandbox_simulator/db/migrate/20260312000005_create_simulated_payments.rb +26 -0
- data/lib/square_sandbox_simulator/db/migrate/20260312000006_create_api_requests.rb +27 -0
- data/lib/square_sandbox_simulator/db/migrate/20260312000007_create_daily_summaries.rb +24 -0
- data/lib/square_sandbox_simulator/generators/data_loader.rb +202 -0
- data/lib/square_sandbox_simulator/generators/entity_generator.rb +248 -0
- data/lib/square_sandbox_simulator/generators/order_generator.rb +632 -0
- data/lib/square_sandbox_simulator/models/api_request.rb +43 -0
- data/lib/square_sandbox_simulator/models/business_type.rb +25 -0
- data/lib/square_sandbox_simulator/models/category.rb +18 -0
- data/lib/square_sandbox_simulator/models/daily_summary.rb +68 -0
- data/lib/square_sandbox_simulator/models/item.rb +33 -0
- data/lib/square_sandbox_simulator/models/record.rb +16 -0
- data/lib/square_sandbox_simulator/models/simulated_order.rb +42 -0
- data/lib/square_sandbox_simulator/models/simulated_payment.rb +28 -0
- data/lib/square_sandbox_simulator/seeder.rb +242 -0
- data/lib/square_sandbox_simulator/services/base_service.rb +253 -0
- data/lib/square_sandbox_simulator/services/square/catalog_service.rb +203 -0
- data/lib/square_sandbox_simulator/services/square/customer_service.rb +130 -0
- data/lib/square_sandbox_simulator/services/square/order_service.rb +121 -0
- data/lib/square_sandbox_simulator/services/square/payment_service.rb +136 -0
- data/lib/square_sandbox_simulator/services/square/services_manager.rb +68 -0
- data/lib/square_sandbox_simulator/services/square/team_service.rb +108 -0
- data/lib/square_sandbox_simulator/version.rb +5 -0
- data/lib/square_sandbox_simulator.rb +47 -0
- metadata +348 -0
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
{
|
|
2
|
+
"discounts": [
|
|
3
|
+
{
|
|
4
|
+
"id": "happy_hour",
|
|
5
|
+
"name": "Happy Hour",
|
|
6
|
+
"percentage": 15,
|
|
7
|
+
"description": "15% off during happy hour (3-6 PM)",
|
|
8
|
+
"type": "time_based",
|
|
9
|
+
"time_rules": {
|
|
10
|
+
"start_hour": 15,
|
|
11
|
+
"end_hour": 18
|
|
12
|
+
},
|
|
13
|
+
"auto_apply": true
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"id": "lunch_special",
|
|
17
|
+
"name": "Lunch Special",
|
|
18
|
+
"percentage": 10,
|
|
19
|
+
"description": "10% off during lunch (11 AM - 2 PM)",
|
|
20
|
+
"type": "time_based",
|
|
21
|
+
"time_rules": {
|
|
22
|
+
"start_hour": 11,
|
|
23
|
+
"end_hour": 14
|
|
24
|
+
},
|
|
25
|
+
"auto_apply": true
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"id": "early_bird",
|
|
29
|
+
"name": "Early Bird",
|
|
30
|
+
"percentage": 12,
|
|
31
|
+
"description": "12% off for orders before 6 PM",
|
|
32
|
+
"type": "time_based",
|
|
33
|
+
"time_rules": {
|
|
34
|
+
"start_hour": 0,
|
|
35
|
+
"end_hour": 18
|
|
36
|
+
},
|
|
37
|
+
"auto_apply": false
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"id": "senior_discount",
|
|
41
|
+
"name": "Senior Discount",
|
|
42
|
+
"percentage": 10,
|
|
43
|
+
"description": "10% off for seniors 65+",
|
|
44
|
+
"type": "customer",
|
|
45
|
+
"auto_apply": false
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"id": "military_discount",
|
|
49
|
+
"name": "Military Discount",
|
|
50
|
+
"percentage": 15,
|
|
51
|
+
"description": "15% off for active duty and veterans",
|
|
52
|
+
"type": "customer",
|
|
53
|
+
"auto_apply": false
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
"id": "employee_discount",
|
|
57
|
+
"name": "Employee Discount",
|
|
58
|
+
"percentage": 25,
|
|
59
|
+
"description": "25% off for employees",
|
|
60
|
+
"type": "customer",
|
|
61
|
+
"auto_apply": false
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
"id": "birthday_special",
|
|
65
|
+
"name": "Birthday Special",
|
|
66
|
+
"percentage": 20,
|
|
67
|
+
"description": "20% off for birthday celebrations",
|
|
68
|
+
"type": "customer",
|
|
69
|
+
"auto_apply": false
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
"id": "five_off",
|
|
73
|
+
"name": "$5 Off",
|
|
74
|
+
"amount": 500,
|
|
75
|
+
"description": "$5 off orders over $30",
|
|
76
|
+
"type": "threshold",
|
|
77
|
+
"min_order_amount": 3000,
|
|
78
|
+
"auto_apply": false
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
"id": "ten_off",
|
|
82
|
+
"name": "$10 Off",
|
|
83
|
+
"amount": 1000,
|
|
84
|
+
"description": "$10 off orders over $50",
|
|
85
|
+
"type": "threshold",
|
|
86
|
+
"min_order_amount": 5000,
|
|
87
|
+
"auto_apply": false
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
"id": "twenty_off",
|
|
91
|
+
"name": "$20 Off",
|
|
92
|
+
"amount": 2000,
|
|
93
|
+
"description": "$20 off orders over $100",
|
|
94
|
+
"type": "threshold",
|
|
95
|
+
"min_order_amount": 10000,
|
|
96
|
+
"auto_apply": false
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
"id": "loyalty_bronze",
|
|
100
|
+
"name": "Loyalty - Bronze",
|
|
101
|
+
"percentage": 5,
|
|
102
|
+
"description": "5% off for 5+ visits",
|
|
103
|
+
"type": "loyalty",
|
|
104
|
+
"min_visits": 5,
|
|
105
|
+
"auto_apply": true
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
"id": "loyalty_silver",
|
|
109
|
+
"name": "Loyalty - Silver",
|
|
110
|
+
"percentage": 10,
|
|
111
|
+
"description": "10% off for 10+ visits",
|
|
112
|
+
"type": "loyalty",
|
|
113
|
+
"min_visits": 10,
|
|
114
|
+
"auto_apply": true
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
"id": "loyalty_gold",
|
|
118
|
+
"name": "Loyalty - Gold",
|
|
119
|
+
"percentage": 15,
|
|
120
|
+
"description": "15% off for 25+ visits",
|
|
121
|
+
"type": "loyalty",
|
|
122
|
+
"min_visits": 25,
|
|
123
|
+
"auto_apply": true
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
"id": "loyalty_platinum",
|
|
127
|
+
"name": "Loyalty - Platinum",
|
|
128
|
+
"percentage": 20,
|
|
129
|
+
"description": "20% off for 50+ visits",
|
|
130
|
+
"type": "loyalty",
|
|
131
|
+
"min_visits": 50,
|
|
132
|
+
"auto_apply": true
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
"id": "appetizer_half_off",
|
|
136
|
+
"name": "Appetizer 50% Off",
|
|
137
|
+
"percentage": 50,
|
|
138
|
+
"description": "50% off any appetizer with entree purchase",
|
|
139
|
+
"type": "line_item",
|
|
140
|
+
"applicable_categories": ["Appetizers"],
|
|
141
|
+
"requires_category": ["Entrees"],
|
|
142
|
+
"auto_apply": false
|
|
143
|
+
},
|
|
144
|
+
{
|
|
145
|
+
"id": "drink_discount",
|
|
146
|
+
"name": "Drink Discount",
|
|
147
|
+
"percentage": 25,
|
|
148
|
+
"description": "25% off drinks with any food purchase",
|
|
149
|
+
"type": "line_item",
|
|
150
|
+
"applicable_categories": ["Drinks", "Alcoholic Beverages"],
|
|
151
|
+
"requires_category": ["Entrees", "Appetizers"],
|
|
152
|
+
"auto_apply": false
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
"id": "dessert_dollar_off",
|
|
156
|
+
"name": "Dessert $2 Off",
|
|
157
|
+
"amount": 200,
|
|
158
|
+
"description": "$2 off any dessert",
|
|
159
|
+
"type": "line_item",
|
|
160
|
+
"applicable_categories": ["Desserts"],
|
|
161
|
+
"auto_apply": false
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
"id": "happy_hour_drinks",
|
|
165
|
+
"name": "Happy Hour Drinks",
|
|
166
|
+
"percentage": 30,
|
|
167
|
+
"description": "30% off alcoholic beverages during happy hour",
|
|
168
|
+
"type": "line_item_time_based",
|
|
169
|
+
"applicable_categories": ["Alcoholic Beverages"],
|
|
170
|
+
"time_rules": {
|
|
171
|
+
"start_hour": 15,
|
|
172
|
+
"end_hour": 18
|
|
173
|
+
},
|
|
174
|
+
"auto_apply": true
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
"id": "free_side",
|
|
178
|
+
"name": "Free Side",
|
|
179
|
+
"percentage": 100,
|
|
180
|
+
"description": "Free side with entree purchase",
|
|
181
|
+
"type": "line_item",
|
|
182
|
+
"applicable_categories": ["Sides"],
|
|
183
|
+
"requires_category": ["Entrees"],
|
|
184
|
+
"max_items": 1,
|
|
185
|
+
"auto_apply": false
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
"id": "first_order",
|
|
189
|
+
"name": "First Order Discount",
|
|
190
|
+
"percentage": 15,
|
|
191
|
+
"description": "15% off your first order",
|
|
192
|
+
"type": "loyalty",
|
|
193
|
+
"min_visits": 0,
|
|
194
|
+
"max_visits": 1,
|
|
195
|
+
"auto_apply": true
|
|
196
|
+
}
|
|
197
|
+
]
|
|
198
|
+
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
{
|
|
2
|
+
"gift_cards": [
|
|
3
|
+
{
|
|
4
|
+
"card_number": "6012345678901234",
|
|
5
|
+
"initial_balance": 2500,
|
|
6
|
+
"current_balance": 2500,
|
|
7
|
+
"status": "ACTIVE",
|
|
8
|
+
"description": "$25 Gift Card - Full balance"
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"card_number": "6023456789012345",
|
|
12
|
+
"initial_balance": 5000,
|
|
13
|
+
"current_balance": 5000,
|
|
14
|
+
"status": "ACTIVE",
|
|
15
|
+
"description": "$50 Gift Card - Full balance"
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"card_number": "6034567890123456",
|
|
19
|
+
"initial_balance": 10000,
|
|
20
|
+
"current_balance": 10000,
|
|
21
|
+
"status": "ACTIVE",
|
|
22
|
+
"description": "$100 Gift Card - Full balance"
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"card_number": "6045678901234567",
|
|
26
|
+
"initial_balance": 5000,
|
|
27
|
+
"current_balance": 3250,
|
|
28
|
+
"status": "ACTIVE",
|
|
29
|
+
"description": "$50 Gift Card - Partially used ($32.50 remaining)"
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"card_number": "6056789012345678",
|
|
33
|
+
"initial_balance": 2500,
|
|
34
|
+
"current_balance": 875,
|
|
35
|
+
"status": "ACTIVE",
|
|
36
|
+
"description": "$25 Gift Card - Low balance ($8.75 remaining)"
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"card_number": "6067890123456789",
|
|
40
|
+
"initial_balance": 7500,
|
|
41
|
+
"current_balance": 7500,
|
|
42
|
+
"status": "ACTIVE",
|
|
43
|
+
"description": "$75 Gift Card - Full balance"
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"card_number": "6078901234567890",
|
|
47
|
+
"initial_balance": 2000,
|
|
48
|
+
"current_balance": 2000,
|
|
49
|
+
"status": "ACTIVE",
|
|
50
|
+
"description": "$20 Gift Card - Full balance"
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"card_number": "6089012345678901",
|
|
54
|
+
"initial_balance": 5000,
|
|
55
|
+
"current_balance": 0,
|
|
56
|
+
"status": "DEPLETED",
|
|
57
|
+
"description": "$50 Gift Card - Fully redeemed"
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"card_number": "6090123456789012",
|
|
61
|
+
"initial_balance": 10000,
|
|
62
|
+
"current_balance": 1500,
|
|
63
|
+
"status": "ACTIVE",
|
|
64
|
+
"description": "$100 Gift Card - Almost depleted ($15 remaining)"
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"card_number": "6101234567890123",
|
|
68
|
+
"initial_balance": 5000,
|
|
69
|
+
"current_balance": 5000,
|
|
70
|
+
"status": "INACTIVE",
|
|
71
|
+
"description": "$50 Gift Card - Not yet activated"
|
|
72
|
+
}
|
|
73
|
+
],
|
|
74
|
+
"purchase_denominations": [
|
|
75
|
+
{ "amount": 2000, "label": "$20 Gift Card" },
|
|
76
|
+
{ "amount": 2500, "label": "$25 Gift Card" },
|
|
77
|
+
{ "amount": 5000, "label": "$50 Gift Card" },
|
|
78
|
+
{ "amount": 7500, "label": "$75 Gift Card" },
|
|
79
|
+
{ "amount": 10000, "label": "$100 Gift Card" }
|
|
80
|
+
],
|
|
81
|
+
"note": "Sample gift cards for simulation. ACTIVE cards can be used for payments, DEPLETED have zero balance, INACTIVE need activation."
|
|
82
|
+
}
|
|
@@ -0,0 +1,388 @@
|
|
|
1
|
+
{
|
|
2
|
+
"items": [
|
|
3
|
+
{
|
|
4
|
+
"name": "Buffalo Wings",
|
|
5
|
+
"price": 1299,
|
|
6
|
+
"category": "Appetizers",
|
|
7
|
+
"description": "Crispy wings tossed in buffalo sauce"
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
"name": "Loaded Nachos",
|
|
11
|
+
"price": 1099,
|
|
12
|
+
"category": "Appetizers",
|
|
13
|
+
"description": "Tortilla chips with cheese, jalapeños, and salsa"
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"name": "Mozzarella Sticks",
|
|
17
|
+
"price": 899,
|
|
18
|
+
"category": "Appetizers",
|
|
19
|
+
"description": "Golden fried with marinara sauce"
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"name": "Spinach Artichoke Dip",
|
|
23
|
+
"price": 1199,
|
|
24
|
+
"category": "Appetizers",
|
|
25
|
+
"description": "Creamy dip with tortilla chips"
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"name": "Calamari",
|
|
29
|
+
"price": 1399,
|
|
30
|
+
"category": "Appetizers",
|
|
31
|
+
"description": "Lightly fried with aioli"
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"name": "Bruschetta",
|
|
35
|
+
"price": 999,
|
|
36
|
+
"category": "Appetizers",
|
|
37
|
+
"description": "Toasted bread with tomato, basil, and balsamic"
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"name": "Shrimp Cocktail",
|
|
41
|
+
"price": 1599,
|
|
42
|
+
"category": "Appetizers",
|
|
43
|
+
"description": "Chilled jumbo shrimp with cocktail sauce"
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"name": "Tomato Bisque",
|
|
47
|
+
"price": 699,
|
|
48
|
+
"category": "Soups & Salads",
|
|
49
|
+
"description": "Creamy tomato soup with croutons"
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
"name": "French Onion Soup",
|
|
53
|
+
"price": 849,
|
|
54
|
+
"category": "Soups & Salads",
|
|
55
|
+
"description": "Classic broth with gruyère crouton"
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"name": "Garden Salad",
|
|
59
|
+
"price": 899,
|
|
60
|
+
"category": "Soups & Salads",
|
|
61
|
+
"description": "Mixed greens, tomato, cucumber, choice of dressing"
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
"name": "Wedge Salad",
|
|
65
|
+
"price": 1099,
|
|
66
|
+
"category": "Soups & Salads",
|
|
67
|
+
"description": "Iceberg wedge with blue cheese and bacon"
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"name": "Clam Chowder",
|
|
71
|
+
"price": 899,
|
|
72
|
+
"category": "Soups & Salads",
|
|
73
|
+
"description": "New England style cream-based clam chowder"
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
"name": "Classic Burger",
|
|
77
|
+
"price": 1499,
|
|
78
|
+
"category": "Entrees",
|
|
79
|
+
"description": "8oz beef patty with lettuce, tomato, onion"
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
"name": "Bacon Cheeseburger",
|
|
83
|
+
"price": 1699,
|
|
84
|
+
"category": "Entrees",
|
|
85
|
+
"description": "Burger with bacon and cheddar"
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
"name": "Grilled Salmon",
|
|
89
|
+
"price": 2199,
|
|
90
|
+
"category": "Entrees",
|
|
91
|
+
"description": "Atlantic salmon with lemon herb butter"
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
"name": "NY Strip Steak",
|
|
95
|
+
"price": 2899,
|
|
96
|
+
"category": "Entrees",
|
|
97
|
+
"description": "12oz steak cooked to order"
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
"name": "Chicken Parmesan",
|
|
101
|
+
"price": 1899,
|
|
102
|
+
"category": "Entrees",
|
|
103
|
+
"description": "Breaded chicken with marinara and mozzarella"
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
"name": "Fettuccine Alfredo",
|
|
107
|
+
"price": 1599,
|
|
108
|
+
"category": "Entrees",
|
|
109
|
+
"description": "Creamy parmesan sauce over pasta"
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
"name": "Fish and Chips",
|
|
113
|
+
"price": 1699,
|
|
114
|
+
"category": "Entrees",
|
|
115
|
+
"description": "Beer-battered cod with fries"
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
"name": "BBQ Ribs",
|
|
119
|
+
"price": 2399,
|
|
120
|
+
"category": "Entrees",
|
|
121
|
+
"description": "Full rack with house BBQ sauce"
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
"name": "Caesar Salad",
|
|
125
|
+
"price": 1199,
|
|
126
|
+
"category": "Entrees",
|
|
127
|
+
"description": "Romaine, parmesan, croutons"
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
"name": "Grilled Chicken Salad",
|
|
131
|
+
"price": 1399,
|
|
132
|
+
"category": "Entrees",
|
|
133
|
+
"description": "Mixed greens with grilled chicken"
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
"name": "Mushroom Risotto",
|
|
137
|
+
"price": 1799,
|
|
138
|
+
"category": "Entrees",
|
|
139
|
+
"description": "Arborio rice with wild mushrooms and parmesan"
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
"name": "Shrimp Scampi",
|
|
143
|
+
"price": 2099,
|
|
144
|
+
"category": "Entrees",
|
|
145
|
+
"description": "Sautéed shrimp in garlic butter over linguine"
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
"name": "French Fries",
|
|
149
|
+
"price": 499,
|
|
150
|
+
"category": "Sides",
|
|
151
|
+
"description": "Crispy golden fries"
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
"name": "Sweet Potato Fries",
|
|
155
|
+
"price": 599,
|
|
156
|
+
"category": "Sides",
|
|
157
|
+
"description": "With honey drizzle"
|
|
158
|
+
},
|
|
159
|
+
{
|
|
160
|
+
"name": "Onion Rings",
|
|
161
|
+
"price": 549,
|
|
162
|
+
"category": "Sides",
|
|
163
|
+
"description": "Beer-battered and fried"
|
|
164
|
+
},
|
|
165
|
+
{
|
|
166
|
+
"name": "Coleslaw",
|
|
167
|
+
"price": 399,
|
|
168
|
+
"category": "Sides",
|
|
169
|
+
"description": "Creamy house-made coleslaw"
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
"name": "Mashed Potatoes",
|
|
173
|
+
"price": 499,
|
|
174
|
+
"category": "Sides",
|
|
175
|
+
"description": "Creamy with gravy"
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
"name": "Steamed Vegetables",
|
|
179
|
+
"price": 449,
|
|
180
|
+
"category": "Sides",
|
|
181
|
+
"description": "Seasonal vegetables"
|
|
182
|
+
},
|
|
183
|
+
{
|
|
184
|
+
"name": "Mac and Cheese Bites",
|
|
185
|
+
"price": 599,
|
|
186
|
+
"category": "Sides",
|
|
187
|
+
"description": "Crispy fried mac and cheese balls"
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
"name": "Garlic Bread",
|
|
191
|
+
"price": 449,
|
|
192
|
+
"category": "Sides",
|
|
193
|
+
"description": "Toasted with garlic butter and herbs"
|
|
194
|
+
},
|
|
195
|
+
{
|
|
196
|
+
"name": "Chicken Tenders",
|
|
197
|
+
"price": 799,
|
|
198
|
+
"category": "Kids Menu",
|
|
199
|
+
"description": "Hand-breaded chicken strips with fries"
|
|
200
|
+
},
|
|
201
|
+
{
|
|
202
|
+
"name": "Kids Mac and Cheese",
|
|
203
|
+
"price": 649,
|
|
204
|
+
"category": "Kids Menu",
|
|
205
|
+
"description": "Classic creamy macaroni"
|
|
206
|
+
},
|
|
207
|
+
{
|
|
208
|
+
"name": "Mini Burger",
|
|
209
|
+
"price": 699,
|
|
210
|
+
"category": "Kids Menu",
|
|
211
|
+
"description": "Small patty with fries"
|
|
212
|
+
},
|
|
213
|
+
{
|
|
214
|
+
"name": "Grilled Cheese",
|
|
215
|
+
"price": 599,
|
|
216
|
+
"category": "Kids Menu",
|
|
217
|
+
"description": "Melted cheddar on toasted bread with fries"
|
|
218
|
+
},
|
|
219
|
+
{
|
|
220
|
+
"name": "Kids Quesadilla",
|
|
221
|
+
"price": 649,
|
|
222
|
+
"category": "Kids Menu",
|
|
223
|
+
"description": "Cheese quesadilla with sour cream"
|
|
224
|
+
},
|
|
225
|
+
{
|
|
226
|
+
"name": "Eggs Benedict",
|
|
227
|
+
"price": 1499,
|
|
228
|
+
"category": "Brunch",
|
|
229
|
+
"description": "Poached eggs, ham, hollandaise on English muffin"
|
|
230
|
+
},
|
|
231
|
+
{
|
|
232
|
+
"name": "Avocado Toast",
|
|
233
|
+
"price": 1299,
|
|
234
|
+
"category": "Brunch",
|
|
235
|
+
"description": "Smashed avocado on sourdough with poached egg"
|
|
236
|
+
},
|
|
237
|
+
{
|
|
238
|
+
"name": "Pancake Stack",
|
|
239
|
+
"price": 1099,
|
|
240
|
+
"category": "Brunch",
|
|
241
|
+
"description": "Fluffy buttermilk pancakes with maple syrup"
|
|
242
|
+
},
|
|
243
|
+
{
|
|
244
|
+
"name": "French Toast",
|
|
245
|
+
"price": 1199,
|
|
246
|
+
"category": "Brunch",
|
|
247
|
+
"description": "Brioche dipped in vanilla custard with berries"
|
|
248
|
+
},
|
|
249
|
+
{
|
|
250
|
+
"name": "Breakfast Burrito",
|
|
251
|
+
"price": 1199,
|
|
252
|
+
"category": "Brunch",
|
|
253
|
+
"description": "Scrambled eggs, chorizo, cheese, salsa verde"
|
|
254
|
+
},
|
|
255
|
+
{
|
|
256
|
+
"name": "Chocolate Brownie",
|
|
257
|
+
"price": 699,
|
|
258
|
+
"category": "Desserts",
|
|
259
|
+
"description": "Warm brownie with ice cream"
|
|
260
|
+
},
|
|
261
|
+
{
|
|
262
|
+
"name": "New York Cheesecake",
|
|
263
|
+
"price": 799,
|
|
264
|
+
"category": "Desserts",
|
|
265
|
+
"description": "Classic creamy cheesecake"
|
|
266
|
+
},
|
|
267
|
+
{
|
|
268
|
+
"name": "Apple Pie",
|
|
269
|
+
"price": 749,
|
|
270
|
+
"category": "Desserts",
|
|
271
|
+
"description": "A la mode with vanilla ice cream"
|
|
272
|
+
},
|
|
273
|
+
{
|
|
274
|
+
"name": "Tiramisu",
|
|
275
|
+
"price": 899,
|
|
276
|
+
"category": "Desserts",
|
|
277
|
+
"description": "Italian coffee-flavored dessert"
|
|
278
|
+
},
|
|
279
|
+
{
|
|
280
|
+
"name": "Crème Brûlée",
|
|
281
|
+
"price": 949,
|
|
282
|
+
"category": "Desserts",
|
|
283
|
+
"description": "Vanilla custard with caramelized sugar crust"
|
|
284
|
+
},
|
|
285
|
+
{
|
|
286
|
+
"name": "Soft Drink",
|
|
287
|
+
"price": 299,
|
|
288
|
+
"category": "Drinks",
|
|
289
|
+
"description": "Coke, Sprite, Dr Pepper"
|
|
290
|
+
},
|
|
291
|
+
{
|
|
292
|
+
"name": "Iced Tea",
|
|
293
|
+
"price": 299,
|
|
294
|
+
"category": "Drinks",
|
|
295
|
+
"description": "Fresh brewed, sweetened or unsweetened"
|
|
296
|
+
},
|
|
297
|
+
{
|
|
298
|
+
"name": "Lemonade",
|
|
299
|
+
"price": 349,
|
|
300
|
+
"category": "Drinks",
|
|
301
|
+
"description": "Fresh squeezed lemonade"
|
|
302
|
+
},
|
|
303
|
+
{
|
|
304
|
+
"name": "Coffee",
|
|
305
|
+
"price": 349,
|
|
306
|
+
"category": "Drinks",
|
|
307
|
+
"description": "Regular or decaf"
|
|
308
|
+
},
|
|
309
|
+
{
|
|
310
|
+
"name": "Hot Tea",
|
|
311
|
+
"price": 299,
|
|
312
|
+
"category": "Drinks",
|
|
313
|
+
"description": "Assorted flavors"
|
|
314
|
+
},
|
|
315
|
+
{
|
|
316
|
+
"name": "Sparkling Water",
|
|
317
|
+
"price": 349,
|
|
318
|
+
"category": "Drinks",
|
|
319
|
+
"description": "San Pellegrino or Perrier"
|
|
320
|
+
},
|
|
321
|
+
{
|
|
322
|
+
"name": "Fresh Juice",
|
|
323
|
+
"price": 499,
|
|
324
|
+
"category": "Drinks",
|
|
325
|
+
"description": "Orange, apple, or cranberry"
|
|
326
|
+
},
|
|
327
|
+
{
|
|
328
|
+
"name": "Draft Beer",
|
|
329
|
+
"price": 599,
|
|
330
|
+
"category": "Alcoholic Beverages",
|
|
331
|
+
"description": "Rotating selection of craft beers"
|
|
332
|
+
},
|
|
333
|
+
{
|
|
334
|
+
"name": "Domestic Beer",
|
|
335
|
+
"price": 499,
|
|
336
|
+
"category": "Alcoholic Beverages",
|
|
337
|
+
"description": "Bud Light, Coors, Miller"
|
|
338
|
+
},
|
|
339
|
+
{
|
|
340
|
+
"name": "Import Beer",
|
|
341
|
+
"price": 649,
|
|
342
|
+
"category": "Alcoholic Beverages",
|
|
343
|
+
"description": "Corona, Heineken, Guinness"
|
|
344
|
+
},
|
|
345
|
+
{
|
|
346
|
+
"name": "House Wine",
|
|
347
|
+
"price": 799,
|
|
348
|
+
"category": "Alcoholic Beverages",
|
|
349
|
+
"description": "Red or white by the glass"
|
|
350
|
+
},
|
|
351
|
+
{
|
|
352
|
+
"name": "Premium Wine",
|
|
353
|
+
"price": 1199,
|
|
354
|
+
"category": "Alcoholic Beverages",
|
|
355
|
+
"description": "Cabernet, Chardonnay, Pinot Noir"
|
|
356
|
+
},
|
|
357
|
+
{
|
|
358
|
+
"name": "Margarita",
|
|
359
|
+
"price": 999,
|
|
360
|
+
"category": "Alcoholic Beverages",
|
|
361
|
+
"description": "House or frozen"
|
|
362
|
+
},
|
|
363
|
+
{
|
|
364
|
+
"name": "Long Island Iced Tea",
|
|
365
|
+
"price": 1099,
|
|
366
|
+
"category": "Alcoholic Beverages",
|
|
367
|
+
"description": "Classic cocktail"
|
|
368
|
+
},
|
|
369
|
+
{
|
|
370
|
+
"name": "Old Fashioned",
|
|
371
|
+
"price": 1299,
|
|
372
|
+
"category": "Alcoholic Beverages",
|
|
373
|
+
"description": "Bourbon, bitters, orange peel"
|
|
374
|
+
},
|
|
375
|
+
{
|
|
376
|
+
"name": "Chef's Special",
|
|
377
|
+
"price": 2499,
|
|
378
|
+
"category": "Specials",
|
|
379
|
+
"description": "Ask your server for today's special"
|
|
380
|
+
},
|
|
381
|
+
{
|
|
382
|
+
"name": "Soup of the Day",
|
|
383
|
+
"price": 599,
|
|
384
|
+
"category": "Specials",
|
|
385
|
+
"description": "Fresh made daily"
|
|
386
|
+
}
|
|
387
|
+
]
|
|
388
|
+
}
|