diff --git a/android/app/build.gradle b/android/app/build.gradle index a60a7f4a..cde263f0 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -6,8 +6,8 @@ android { applicationId "com.moimob.drinkable" minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion - versionCode 11601 - versionName "1.16.1" + versionCode 11700 + versionName "1.17.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" aaptOptions { // Files and dirs to omit from the packaged assets dir, modified to accommodate modern web apps. diff --git a/fastlane/metadata/android/en-US/changelogs/11700.txt b/fastlane/metadata/android/en-US/changelogs/11700.txt new file mode 100644 index 00000000..8df8a0cc --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/11700.txt @@ -0,0 +1,4 @@ +• Added cocktail ingredient substitutes. For example Triple sec could be substituted with Cointreau +• Added Mocktails. It's currently hidden by default but there is a setting to activate it +• Updated Cocktail list item design +• Fixed missing translations \ No newline at end of file diff --git a/fastlane/metadata/android/en-US/full_description.txt b/fastlane/metadata/android/en-US/full_description.txt index 7e9b9c89..866cf6a4 100644 --- a/fastlane/metadata/android/en-US/full_description.txt +++ b/fastlane/metadata/android/en-US/full_description.txt @@ -1,11 +1,19 @@ Drinkable is an app which help you find cocktails that you could make today with ingredients from home. You can also explore new great cocktails to make. The app will always let you know what ingredents is missing. +Features: + - Includes 100+ cocktails. +- Also includes mocktails and cocktail ingredients. - Ability to add your own cocktails and ingredients within the app. -- Mark cocktails as favorites +- Lets you know what cocktails you can make with the ingredients you have at home. +- 1 missing ingredient list. So you can easily pick up that last item and make a new cocktail. +- Save favorite cocktails. +- Rate cocktails with stars from zero to five. - Supports both Imperial and Metric measurement system. -- Simple User Interface -- Offline support +- Offline support, this app will work even if you dont have internet connection. +- Simple User Interface. +- 8+ languages. English, Spanish, French, German and more. +- Open source, code is avaliable on Github. Please reach out to anton@moimob.com if you have any questions or wish for a specific cocktail or feature to be added. diff --git a/fastlane/metadata/android/en-US/title.txt b/fastlane/metadata/android/en-US/title.txt index 6e0d0460..baa06c7f 100644 --- a/fastlane/metadata/android/en-US/title.txt +++ b/fastlane/metadata/android/en-US/title.txt @@ -1 +1 @@ -Drinkable - Cocktail App \ No newline at end of file +Drinkable \ No newline at end of file diff --git a/src/components/dialogs/welcome-dialog.html b/src/components/dialogs/welcome-dialog.html index 4b1d44e1..3125c18e 100644 --- a/src/components/dialogs/welcome-dialog.html +++ b/src/components/dialogs/welcome-dialog.html @@ -1,24 +1,28 @@ \ No newline at end of file + diff --git a/src/components/dialogs/welcome-dialog.ts b/src/components/dialogs/welcome-dialog.ts index 3c78414c..77bf99c6 100644 --- a/src/components/dialogs/welcome-dialog.ts +++ b/src/components/dialogs/welcome-dialog.ts @@ -2,23 +2,39 @@ import { inject } from 'aurelia-framework'; import { DialogController } from 'aurelia-dialog'; import { LocalStorageService } from 'services/local-storage-service'; import { MessuarementSystem } from 'domain/enums/messuarement-system'; +import { CocktailService } from 'services/cocktail-service'; -@inject(DialogController, LocalStorageService) +@inject(DialogController, LocalStorageService, CocktailService) export class WelcomeDialog { + public showMocktails: boolean; + public controller: DialogController; public messuarementSystems = [MessuarementSystem.Imperial, MessuarementSystem.Metric]; public selectedMessuarementSystem: MessuarementSystem = MessuarementSystem.Imperial; - constructor(dialogContoller: DialogController, private _localStorageService: LocalStorageService) { + constructor( + dialogContoller: DialogController, + private _localStorageService: LocalStorageService, + private _cocktailService: CocktailService + ) { this.controller = dialogContoller; } - public async selectMessuarementSystem(messuarementSystem: MessuarementSystem) { + public selectMessuarementSystem(messuarementSystem: MessuarementSystem) { this.selectedMessuarementSystem = messuarementSystem; } async ok() { await this._localStorageService.updateMessuarmentSystem(this.selectedMessuarementSystem); + await this.updateShowMocktails(); + this.controller.ok(); } + + private async updateShowMocktails() { + let settings = this._localStorageService.getSettings(); + settings.showMocktails = this.showMocktails; + await this._localStorageService.updateSettings(settings); + this._cocktailService.updateShowMocktails(settings.showMocktails); + } } diff --git a/src/data/cocktail-data.ts b/src/data/cocktail-data.ts index 0ee3e592..c0849ea7 100644 --- a/src/data/cocktail-data.ts +++ b/src/data/cocktail-data.ts @@ -1643,5 +1643,75 @@ const cocktails: Cocktail[] = [ { amount: '1.25', ingredientId: '2', unit: Unit.DL }, { amount: '1.25', ingredientId: '10', unit: Unit.DL } ] + }, + { + id: '116', + imageSrc: 'images/afterglow.jpg', + isImagePortrait: false, + name: 'Afterglow', + category: DrinkCategory.Mocktail, + instructions: 'Mix \nServe over ice', + ingredientGroups: [ + { amount: '20', ingredientId: '30', unit: Unit.ML }, + { amount: '80', ingredientId: '64', unit: Unit.ML }, + { amount: '80', ingredientId: '26', unit: Unit.ML } + ] + }, + { + id: '117', + imageSrc: 'images/alice_cocktail.jpg', + isImagePortrait: false, + name: 'Alice Cocktail', + category: DrinkCategory.Mocktail, + instructions: 'Shake well, strain into a large cocktail glass.', + ingredientGroups: [ + { amount: '10', ingredientId: '30', unit: Unit.ML }, + { amount: '10', ingredientId: '64', unit: Unit.ML }, + { amount: '20', ingredientId: '26', unit: Unit.ML }, + { amount: '40', ingredientId: '35', unit: Unit.ML } + ] + }, + { + id: '118', + imageSrc: 'images/apple_karate.jpg', + isImagePortrait: false, + name: 'Apple Karate', + category: DrinkCategory.Mocktail, + instructions: + 'Place all ingredients in the blender jar - cover and whiz on medium speed until well blended. Pour in one tall, 2 medium or 3 small glasses and drink up.', + ingredientGroups: [ + { amount: '5', ingredientId: '97', unit: Unit.DL }, + { amount: '1', ingredientId: '98', unit: '' } + ] + }, + { + id: '119', + imageSrc: 'images/orangeade.jpg', + isImagePortrait: false, + name: 'Orangeade', + category: DrinkCategory.Mocktail, + instructions: + 'Place some ice cubes in a large tumbler or highball glass, add lemon juice, orange juice, sugar syrup, and stir well. \nTop up with cold soda water, serve with a drinking straw.', + ingredientGroups: [ + { amount: '50', ingredientId: '10', unit: Unit.ML }, + { amount: '150', ingredientId: '64', unit: Unit.ML }, + { amount: '30', ingredientId: '3', unit: Unit.ML }, + { amount: '', ingredientId: '4', unit: '' } + ] + }, + { + id: '120', + imageSrc: 'images/banana_milk_shake.jpg', + isImagePortrait: false, + name: 'Banana Milk Shake', + category: DrinkCategory.Mocktail, + instructions: + 'Blend very well, preferably in a household mixer. \nServe in a wine glass, garnish with whipped cream and a piece of banana.', + ingredientGroups: [ + { amount: '100', ingredientId: '77', unit: Unit.ML }, + { amount: '40', ingredientId: '64', unit: Unit.ML }, + { amount: '10', ingredientId: '3', unit: Unit.ML }, + { amount: '0.5', ingredientId: '99', unit: '' } + ] } ]; diff --git a/src/data/ingredient-data.ts b/src/data/ingredient-data.ts index 8ac62458..0a20edbe 100644 --- a/src/data/ingredient-data.ts +++ b/src/data/ingredient-data.ts @@ -101,5 +101,8 @@ const currentIngredients: StaticIngredient[] = [ { id: '93', translation: 'pisco', spiritType: SpiritType.None }, { id: '94', translation: 'aquafaba', spiritType: SpiritType.None }, { id: '95', translation: 'mango', spiritType: SpiritType.None }, - { id: '96', translation: 'passoa', spiritType: SpiritType.None } + { id: '96', translation: 'passoa', spiritType: SpiritType.None }, + { id: '97', translation: 'apple-juice', spiritType: SpiritType.None }, + { id: '98', translation: 'carrot', spiritType: SpiritType.None }, + { id: '99', translation: 'banana', spiritType: SpiritType.None } ]; diff --git a/src/domain/entities/setting-entity.ts b/src/domain/entities/setting-entity.ts index 3ed5eb73..63cc5d6d 100644 --- a/src/domain/entities/setting-entity.ts +++ b/src/domain/entities/setting-entity.ts @@ -1,8 +1,10 @@ export class SettingEntity { appRateTimestamp: number; - language: string; + language?: string; + showMocktails: boolean; constructor() { this.appRateTimestamp = 0; + this.showMocktails = false; } } diff --git a/src/domain/enums/drink-category.ts b/src/domain/enums/drink-category.ts index 2d0203b9..1217f75e 100644 --- a/src/domain/enums/drink-category.ts +++ b/src/domain/enums/drink-category.ts @@ -4,7 +4,8 @@ export enum DrinkCategory { Cocktail = 0, Shot = 1, Other = 2, - Ingredient = 3 + Ingredient = 3, + Mocktail = 4 } export function getDrinkCategories(): EnumTranslationModel[] { @@ -12,6 +13,7 @@ export function getDrinkCategories(): EnumTranslationModel[] { { value: DrinkCategory.Cocktail, translation: 'drink-category.cocktail' }, { value: DrinkCategory.Shot, translation: 'drink-category.shot' }, { value: DrinkCategory.Other, translation: 'drink-category.other' }, - { value: DrinkCategory.Ingredient, translation: 'drink-category.ingredient' } + { value: DrinkCategory.Ingredient, translation: 'drink-category.ingredient' }, + { value: DrinkCategory.Mocktail, translation: 'drink-category.mocktail' } ]; } diff --git a/src/locales/ca/ingredients.json b/src/locales/ca/ingredients.json index ca0f9f7c..350361bf 100644 --- a/src/locales/ca/ingredients.json +++ b/src/locales/ca/ingredients.json @@ -94,5 +94,8 @@ "pisco": "Pisco", "aquafaba": "Aquafaba", "mango": "Mango", - "passoa": "Passoa" -} + "passoa": "Passoa", + "apple-juice": "suc de poma", + "carrot": "Pastanaga", + "banana": "Plàtan" +} \ No newline at end of file diff --git a/src/locales/ca/translation.json b/src/locales/ca/translation.json index 99b1a71b..c53e786b 100644 --- a/src/locales/ca/translation.json +++ b/src/locales/ca/translation.json @@ -81,7 +81,8 @@ "cocktail": "Còctel", "shot": "Tir", "other": "Altres", - "ingredient": "Ingredient" + "ingredient": "Ingredient", + "mocktail": "Mocktail" }, "spirit-type": { "gin": "Ginebra", @@ -91,5 +92,6 @@ "whiskey-scotch": "Whisky / Escocès", "cognac-brandy": "Conyac / Brandi" }, - "or": "O" + "or": "O", + "show-mocktails": "Mostra Mocktails" } \ No newline at end of file diff --git a/src/locales/de/translation.json b/src/locales/de/translation.json index 776b5556..a507d2af 100644 --- a/src/locales/de/translation.json +++ b/src/locales/de/translation.json @@ -81,7 +81,8 @@ "cocktail": "Cocktail", "shot": "Schuss", "other": "Sonstiges", - "ingredient": "Zutat" + "ingredient": "Zutat", + "mocktail": "Mocktail" }, "spirit-type": { "gin": "Ginebra", @@ -91,5 +92,6 @@ "whiskey-scotch": "Whisky / Schottisch", "cognac-brandy": "Conyac / Schnaps" }, - "or": "Oder" + "or": "Oder", + "show-mocktails": "Mocktails anzeigen" } \ No newline at end of file diff --git a/src/locales/en/ingredients.json b/src/locales/en/ingredients.json index 05f25863..a473b912 100644 --- a/src/locales/en/ingredients.json +++ b/src/locales/en/ingredients.json @@ -94,5 +94,8 @@ "pisco": "Pisco", "aquafaba": "Aquafaba", "mango": "Mango", - "passoa": "Passoa" + "passoa": "Passoa", + "apple-juice": "Apple Juice", + "carrot": "Carrot", + "banana": "Banana" } \ No newline at end of file diff --git a/src/locales/en/translation.json b/src/locales/en/translation.json index 69a2a6af..ded5be91 100644 --- a/src/locales/en/translation.json +++ b/src/locales/en/translation.json @@ -81,7 +81,8 @@ "cocktail": "Cocktail", "shot": "Shot", "other": "Other", - "ingredient": "Ingredient" + "ingredient": "Ingredient", + "mocktail": "Mocktail" }, "spirit-type": { "gin": "Gin", @@ -91,5 +92,6 @@ "whiskey-scotch": "Whiskey / Scotch", "cognac-brandy": "Cognac / Brandy" }, - "or": "Or" + "or": "Or", + "show-mocktails": "Show Mocktails" } \ No newline at end of file diff --git a/src/locales/es/ingredients.json b/src/locales/es/ingredients.json index d808ac6f..9b282071 100644 --- a/src/locales/es/ingredients.json +++ b/src/locales/es/ingredients.json @@ -94,5 +94,8 @@ "pisco": "Pisco", "aquafaba": "Aguafaba", "mango": "Mango", - "passoa": "Passoa" + "passoa": "Passoa", + "apple-juice": "Jugo de manzana", + "carrot": "Zanahoria", + "banana": "Banana" } \ No newline at end of file diff --git a/src/locales/es/translation.json b/src/locales/es/translation.json index 45b02ab0..fe3b8352 100644 --- a/src/locales/es/translation.json +++ b/src/locales/es/translation.json @@ -81,7 +81,8 @@ "cocktail": "Cóctel", "shot": "Disparo", "other": "Otro", - "ingredient": "Ingrediente" + "ingredient": "Ingrediente", + "mocktail": "Mocktail" }, "spirit-type": { "gin": "Ginebra", @@ -91,5 +92,6 @@ "whiskey-scotch": "Whiskey / Escocés", "cognac-brandy": "Coñac / Brandy" }, - "or": "O" + "or": "O", + "show-mocktails": "Mostrar mocktails" } \ No newline at end of file diff --git a/src/locales/fr/ingredients.json b/src/locales/fr/ingredients.json index e7c28350..94a51f9c 100644 --- a/src/locales/fr/ingredients.json +++ b/src/locales/fr/ingredients.json @@ -94,5 +94,8 @@ "pisco": "Pisco", "aquafaba": "Aguafaba", "mango": "Mangue", - "passoa": "Fruit de la passion" -} + "passoa": "Fruit de la passion", + "apple-juice": "Jus de pomme", + "carrot": "Carotte", + "banana": "Banane" +} \ No newline at end of file diff --git a/src/locales/fr/translation.json b/src/locales/fr/translation.json index f387e34f..09f74dd7 100644 --- a/src/locales/fr/translation.json +++ b/src/locales/fr/translation.json @@ -81,7 +81,8 @@ "cocktail": "Cocktail", "shot": "Tir", "other": "Autre", - "ingredient": "Ingrédient" + "ingredient": "Ingrédient", + "mocktail": "Mocktail" }, "spirit-type": { "gin": "Gin", @@ -91,5 +92,6 @@ "whiskey-scotch": "Whisky / Écossais", "cognac-brandy": "Cognac / Brandy" }, - "or": "Ou" + "or": "Ou", + "show-mocktails": "Afficher mocktails" } \ No newline at end of file diff --git a/src/locales/it/translation.json b/src/locales/it/translation.json index 5b8fdf43..b272892b 100644 --- a/src/locales/it/translation.json +++ b/src/locales/it/translation.json @@ -81,7 +81,8 @@ "cocktail": "Cocktail", "shot": "Sparo", "other": "Altro", - "ingredient": "Ingrediente" + "ingredient": "Ingrediente", + "mocktail": "Mocktail" }, "spirit-type": { "gin": "Gin", @@ -91,5 +92,6 @@ "whiskey-scotch": "Whisky / Scotch", "cognac-brandy": "Cognac / Brandy" }, - "or": "O" + "or": "O", + "show-mocktails": "Mostra Mocktail" } \ No newline at end of file diff --git a/src/locales/nl/ingredients.json b/src/locales/nl/ingredients.json index 816d0b76..f20b124c 100644 --- a/src/locales/nl/ingredients.json +++ b/src/locales/nl/ingredients.json @@ -94,5 +94,8 @@ "pisco": "Pisco", "aquafaba": "Aquafaba", "mango": "Mango", - "passoa": "Passoã" -} + "passoa": "Passoã", + "apple-juice": "Appelsap", + "carrot": "Wortel", + "banana": "Banaan" +} \ No newline at end of file diff --git a/src/locales/nl/translation.json b/src/locales/nl/translation.json index c831b003..349a6270 100644 --- a/src/locales/nl/translation.json +++ b/src/locales/nl/translation.json @@ -81,7 +81,8 @@ "cocktail": "Cocktail", "shot": "Schot", "other": "Ander", - "ingredient": "Ingrediënt" + "ingredient": "Ingrediënt", + "mocktail": "Mocktail" }, "spirit-type": { "gin": "Gin", @@ -91,5 +92,6 @@ "whiskey-scotch": "Whisky / Schots", "cognac-brandy": "Cognac / Brandewijn" }, - "or": "Of" + "or": "Of", + "show-mocktails": "Laat mocktails zien" } \ No newline at end of file diff --git a/src/locales/sv/ingredients.json b/src/locales/sv/ingredients.json index 41054e10..dce26717 100644 --- a/src/locales/sv/ingredients.json +++ b/src/locales/sv/ingredients.json @@ -94,5 +94,8 @@ "pisco": "Pisco", "aquafaba": "Aquafaba", "mango": "Mango", - "passoa": "Passoa" + "passoa": "Passoa", + "apple-juice": "Äppeljuice", + "carrot": "Morot", + "banana": "Banan" } \ No newline at end of file diff --git a/src/locales/sv/translation.json b/src/locales/sv/translation.json index e2689c65..08dd9bef 100644 --- a/src/locales/sv/translation.json +++ b/src/locales/sv/translation.json @@ -81,7 +81,8 @@ "cocktail": "Cocktail", "shot": "Shot", "other": "Annat", - "ingredient": "Ingrediens" + "ingredient": "Ingrediens", + "mocktail": "Mocktail" }, "spirit-type": { "gin": "Gin", @@ -91,5 +92,6 @@ "whiskey-scotch": "Whisky / Scotch", "cognac-brandy": "Konjac / Brännvin" }, - "or": "eller" + "or": "eller", + "show-mocktails": "Visa Mocktails" } \ No newline at end of file diff --git a/src/modules/settings/general-settings/general-settings.html b/src/modules/settings/general-settings/general-settings.html index fb616505..fbaf819b 100644 --- a/src/modules/settings/general-settings/general-settings.html +++ b/src/modules/settings/general-settings/general-settings.html @@ -16,7 +16,9 @@ - +
+ +
- -
- + Checkmark - +

-
- + Checkmark - + - + Close - +

-
- - - \ No newline at end of file + diff --git a/src/modules/settings/general-settings/general-settings.ts b/src/modules/settings/general-settings/general-settings.ts index 0c22f34a..1f3174f6 100644 --- a/src/modules/settings/general-settings/general-settings.ts +++ b/src/modules/settings/general-settings/general-settings.ts @@ -6,12 +6,14 @@ import { SettingEntity } from 'domain/entities/setting-entity'; import { I18N } from 'aurelia-i18n'; import { IngredientService } from 'services/ingredient-service'; import { getLanguages } from 'data/languages'; +import { CocktailService } from 'services/cocktail-service'; -@inject(ThemeService, LocalStorageService, I18N, IngredientService) +@inject(ThemeService, LocalStorageService, I18N, IngredientService, CocktailService) export class GeneralSettings { @observable public selectedTheme: string; @observable public selectedLanguage: string; @observable public selectedMessuarementSystem: MessuarementSystem; + @observable public showMocktails: boolean; public themes = [ { value: null, name: 'Dark' }, @@ -33,7 +35,8 @@ export class GeneralSettings { private _themeService: ThemeService, private _localStorageService: LocalStorageService, private _i18n: I18N, - private _ingredientService: IngredientService + private _ingredientService: IngredientService, + private _cocktailService: CocktailService ) {} public attached() { @@ -41,6 +44,7 @@ export class GeneralSettings { this.selectedMessuarementSystem = this._localStorageService.getMessuarementSystem(); this._settings = this._localStorageService.getSettings(); this.selectedLanguage = this._settings.language; + this.showMocktails = this._settings.showMocktails; this.setTranslationStatus(this.selectedLanguage); } @@ -58,9 +62,18 @@ export class GeneralSettings { await this._localStorageService.updateMessuarmentSystem(newValue); } + async showMocktailsChanged(newValue: boolean, oldValue: boolean) { + if (oldValue === undefined) { + return; + } + this._settings.showMocktails = newValue; + await this._localStorageService.updateSettings(this._settings); + this._cocktailService.updateShowMocktails(newValue); + } + async selectedLanguageChanged(newValue: string) { this._settings.language = newValue; - this._localStorageService.updateSettings(this._settings); + await this._localStorageService.updateSettings(this._settings); const locale = newValue !== undefined ? newValue : 'en'; diff --git a/src/services/cocktail-service.ts b/src/services/cocktail-service.ts index 5869d313..a43f5d9e 100644 --- a/src/services/cocktail-service.ts +++ b/src/services/cocktail-service.ts @@ -4,12 +4,14 @@ import { Cocktail, CocktailWithMissingIngredient } from 'domain/entities/cocktai import { getStaticCocktails, toCocktailWithMissingIngredients } from 'data/cocktail-data'; import { IngredientService } from './ingredient-service'; import { CocktailInformation } from 'domain/entities/cocktail-information'; +import { DrinkCategory } from 'domain/enums/drink-category'; @inject(LocalStorageService, IngredientService) export class CocktailService { private _cocktails: Cocktail[] = getStaticCocktails(); private _createdCocktails: Cocktail[] = []; private _cocktailInformation: CocktailInformation[] = []; + private _tempMocktails: Cocktail[] = []; private _highestId = 0; constructor(private _localStorageService: LocalStorageService, private _ingredientService: IngredientService) { this._createdCocktails = this._localStorageService.getCocktails(); @@ -31,6 +33,15 @@ export class CocktailService { cocktail.isFavorite = element.isFavorite ?? false; } }); + + if (this._localStorageService.getSettings().showMocktails !== true) { + this.populateTempMocktails(); + } + } + + private populateTempMocktails() { + this._tempMocktails = this._cocktails.filter(x => x.category === DrinkCategory.Mocktail); + this._cocktails = this._cocktails.filter(x => !this._tempMocktails.map(y => y.id).includes(x.id)); } public getCocktails() { @@ -99,10 +110,6 @@ export class CocktailService { ); } - getMissingIngredientsCount(cocktails: CocktailWithMissingIngredient[], cocktail: CocktailWithMissingIngredient) { - return cocktails.filter(x => x.missingIngredient.id === cocktail.missingIngredient.id).length; - } - public async createCocktail(cocktail: Cocktail) { cocktail.id = this.setCocktailId(); this._createdCocktails.push(cocktail); @@ -148,11 +155,27 @@ export class CocktailService { await this._localStorageService.updateCocktailInformation(this._cocktailInformation); } + public updateShowMocktails(value: boolean) { + if (value) { + this._cocktails.push(...this._tempMocktails); + this._tempMocktails = []; + } else { + this.populateTempMocktails(); + } + } + private setCocktailId(): string { this._highestId++; return 'x-' + this._highestId; } + private getMissingIngredientsCount( + cocktails: CocktailWithMissingIngredient[], + cocktail: CocktailWithMissingIngredient + ) { + return cocktails.filter(x => x.missingIngredient.id === cocktail.missingIngredient.id).length; + } + private ingredientIdExists(currentIngredients: string[], cocktailIngredientId: string) { if (currentIngredients.includes(cocktailIngredientId)) { return true; diff --git a/static/images/afterglow.jpg b/static/images/afterglow.jpg new file mode 100644 index 00000000..a75a17ad Binary files /dev/null and b/static/images/afterglow.jpg differ diff --git a/static/images/alice_cocktail.jpg b/static/images/alice_cocktail.jpg new file mode 100644 index 00000000..3ff1c063 Binary files /dev/null and b/static/images/alice_cocktail.jpg differ diff --git a/static/images/apple_karate.jpg b/static/images/apple_karate.jpg new file mode 100644 index 00000000..aa48b890 Binary files /dev/null and b/static/images/apple_karate.jpg differ diff --git a/static/images/banana_milk_shake.jpg b/static/images/banana_milk_shake.jpg new file mode 100644 index 00000000..1866f470 Binary files /dev/null and b/static/images/banana_milk_shake.jpg differ diff --git a/static/images/orangeade.jpg b/static/images/orangeade.jpg new file mode 100644 index 00000000..c1326db1 Binary files /dev/null and b/static/images/orangeade.jpg differ