From 685ee5f4cb0a3314ab76080a8f537dfcea0a67df Mon Sep 17 00:00:00 2001 From: Adrian Witaszak Date: Sun, 30 Jun 2024 21:28:51 +0100 Subject: [PATCH] chore: using ecs --- .github/workflows/main.yml | 50 +- .../kotlin/feature/shop/home/HomeContract.kt | 478 ++++++------------ .../web/.kobweb/server/logs/kobweb-server.log | 30 +- apps/shop/web/.kobweb/server/state.yaml | 3 - .../web/components/sections/FreeSection.kt | 2 +- .../widgets/HorizontalScrollSection.kt | 3 + .../web/pages/home/CategoriesSection.kt | 6 +- .../jsMain/kotlin/web/pages/home/Featured.kt | 4 +- .../kotlin/web/pages/home/FromTheBlog.kt | 128 ++--- .../kotlin/web/pages/home/HomeContent.kt | 2 +- .../kotlin/web/pages/home/JustArrived.kt | 4 +- .../kotlin/web/pages/home/LatestLooks.kt | 6 +- .../kotlin/web/pages/home/OurFavorites.kt | 4 +- .../kotlin/web/pages/home/ShopByCollection.kt | 6 +- .../pages/product/catalogue/CatalogContent.kt | 2 +- data/build.gradle.kts | 4 +- 16 files changed, 251 insertions(+), 481 deletions(-) delete mode 100644 apps/shop/web/.kobweb/server/state.yaml diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index dddc939a..7b833bc4 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -8,6 +8,9 @@ on: jobs: build: runs-on: ubuntu-latest + env: + ECR_CLUSTER: ${{ secrets.ECR_CLUSTER }} + ECR_SERVICE: ${{ secrets.ECR_SERVICE }} steps: - name: Checkout code @@ -15,14 +18,14 @@ jobs: with: persist-credentials: false - # - name: Set up JDK 17 - # uses: actions/setup-java@v2 - # with: - # java-version: '17' - # distribution: 'adopt' - # - # - name: Build with Gradle - # run: ./gradlew build + - name: Set up JDK 17 + uses: actions/setup-java@v2 + with: + java-version: '17' + distribution: 'adopt' + + - name: Build with Gradle + run: ./gradlew build - name: Configure AWS credentials id: aws-credentials @@ -42,23 +45,26 @@ jobs: ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }} ECR_REPOSITORY: ${{ secrets.ECR_REPOSITORY }} IMAGE_TAG: ${{ github.sha }} - RUNNER_ROLE: ${{ secrets.RUNNER_ROLE }} run: | docker build -t $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG . docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG echo "::set-output name=image::$ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG" - - name: Deploy to App Runner Image - id: deploy-apprunner - uses: awslabs/amazon-app-runner-deploy@main - with: - service: app-runner-git-deploy-service - image: ${{ steps.build-image.outputs.image }} - access-role-arn: ${{ secrets.ROLE_ARN }} - region: ${{ secrets.AWS_REGION }} - cpu: 1 - memory: 2 - wait-for-service-stability-seconds: 1200 + # - name: Deploy to App Runner Image + # id: deploy-apprunner + # uses: awslabs/amazon-app-runner-deploy@main + # with: + # service: app-runner-git-deploy-service + # image: ${{ steps.build-image.outputs.image }} + # access-role-arn: ${{ secrets.ROLE_ARN }} + # region: ${{ secrets.AWS_REGION }} + # cpu: 1 + # memory: 2 + # wait-for-service-stability-seconds: 1200 + # + # - name: App Runner URL + # run: echo "App runner URL ${{ steps.deploy-apprunner.outputs.service-url }}" - - name: App Runner URL - run: echo "App runner URL ${{ steps.deploy-apprunner.outputs.service-url }}" + - name: Update image in AWS + run: | + aws ecs update-service --cluster $ECR_CLUSTER --service $ECR_SERVICE --force-new-deployment diff --git a/apps/shop/feature/home/src/commonMain/kotlin/feature/shop/home/HomeContract.kt b/apps/shop/feature/home/src/commonMain/kotlin/feature/shop/home/HomeContract.kt index 937b7ac4..1298d81e 100644 --- a/apps/shop/feature/home/src/commonMain/kotlin/feature/shop/home/HomeContract.kt +++ b/apps/shop/feature/home/src/commonMain/kotlin/feature/shop/home/HomeContract.kt @@ -18,7 +18,6 @@ object HomeContract { middle = GetLandingConfigQuery.Middle(media = null, title = null), right = GetLandingConfigQuery.Right(media = null, title = null) ) - ), val products: List = emptyList(), @@ -63,347 +62,128 @@ object HomeContract { title = getString(Strings.GetDresses) ) ), - val collections: List = listOf( - ShopByCollectionItem( - title = getString(Strings.Dresses), - url = "https://icon-shopify-theme.myshopify.com/cdn/shop/products/Z_88c2619d-266e-45af-a71e-5152e7bdde08.jpg?v=1493324969&width=800" - ), - ShopByCollectionItem( - title = getString(Strings.Tops), - url = "https://icon-shopify-theme.myshopify.com/cdn/shop/products/2Q_-1.jpg?v=1493311371&width=800" - ), - ShopByCollectionItem( - title = getString(Strings.PlaysuitsAndRompers), - url = "https://icon-shopify-theme.myshopify.com/cdn/shop/products/9k_9bb3dbf6-73ca-48ff-983e-9c1113b4e231.jpg?v=1493327316&width=800" - ), - ShopByCollectionItem( - title = getString(Strings.NewArrivals), - url = "https://icon-shopify-theme.myshopify.com/cdn/shop/products/2Q_-1_09e467d5-e880-4f17-8af6-9e4aa6674456.jpg?v=1493315056&width=800" - ), - ShopByCollectionItem( - title = getString(Strings.OurFavourites), - url = "https://icon-shopify-theme.myshopify.com/cdn/shop/products/9k_-2_4e00cfc1-fd41-4574-ab7f-56d73620e05e.jpg?v=1493312830&width=800" - ), + val featuredCollections: Section = Section( + title = "Featured collections", + (1..5).map { + ShopByCollectionItem( + title = getString(Strings.Dresses), + url = "https://be-natty.co.uk/cdn/shop/files/DolceThemePreview_1.webp?v=1717228009&width=700" + ) + }, ), - val justArrived: List = listOf( - ItemWithPrice( - id = "1", - title = "Sweet Harvest Playsuit", - urls = listOf( - "https://icon-shopify-theme.myshopify.com/cdn/shop/products/2Q_-1_09e467d5-e880-4f17-8af6-9e4aa6674456.jpg?v=1493315056&width=700", - "https://icon-shopify-theme.myshopify.com/cdn/shop/products/2Q_7fc77ee9-6a77-4d42-b30c-b548ecd2c34b.jpg?v=1493315057&width=700" - ), - price = "£59.00", - sizes = "S, M, L", - ), - ItemWithPrice( - id = "2", - title = "Songbird Playsuit", - urls = listOf( - "https://icon-shopify-theme.myshopify.com/cdn/shop/products/9k_-2_0e3ad28e-b1a4-4940-bfd5-169df323e2bd.jpg?v=1493326475&width=700", - "https://icon-shopify-theme.myshopify.com/cdn/shop/products/2Q_-1_b5ecc059-d675-4b8c-ada6-2d935faf0fb6.jpg?v=1493326475&width=700" - ), - price = "£59.00", - sizes = "S, M, L", - ), - ItemWithPrice( - id = "1", - title = "Sweet Harvest Playsuit", - urls = listOf( - "https://icon-shopify-theme.myshopify.com/cdn/shop/products/2Q_-3_e64bbab2-8f73-47fc-93b8-1df2b79127b6.jpg?v=1493325632&width=700", - "https://icon-shopify-theme.myshopify.com/cdn/shop/products/2Q_7fc77ee9-6a77-4d42-b30c-b548ecd2c34b.jpg?v=1493315057&width=700" - ), - price = "£59.00", - sizes = "S, M, L", - ), - ItemWithPrice( - id = "3", - title = "Holding on Tunic", - urls = listOf( - "https://icon-shopify-theme.myshopify.com/cdn/shop/products/9k_-1_5208346c-ce37-4404-b7dc-dd869cf7bc32.jpg?v=1493325201&width=700", - "https://icon-shopify-theme.myshopify.com/cdn/shop/products/2Q_dfb262cc-ce27-4532-bd88-5e24b06b6522.jpg?v=1493325632&width=700", - ), - price = "£79.00", - sizes = "S, M, L", - ), - ItemWithPrice( - id = "1", - title = "Sweet Harvest Playsuit", - urls = listOf( - "https://icon-shopify-theme.myshopify.com/cdn/shop/products/2Q_dfb262cc-ce27-4532-bd88-5e24b06b6522.jpg?v=1493325632&width=700", - "https://icon-shopify-theme.myshopify.com/cdn/shop/products/2Q_7fc77ee9-6a77-4d42-b30c-b548ecd2c34b.jpg?v=1493315057&width=700", - ), - price = "£59.00", - sizes = "S, M, L", - ), - ItemWithPrice( - id = "1", - title = "Sweet Harvest Playsuit", - urls = listOf( - "https://icon-shopify-theme.myshopify.com/cdn/shop/products/2Q_-1_09e467d5-e880-4f17-8af6-9e4aa6674456.jpg?v=1493315056&width=700", - "https://icon-shopify-theme.myshopify.com/cdn/shop/products/2Q_7fc77ee9-6a77-4d42-b30c-b548ecd2c34b.jpg?v=1493315057&width=700" - ), - price = "£59.00", - sizes = "S, M, L", - ), - ItemWithPrice( - id = "2", - title = "Songbird Playsuit", - urls = listOf( - "https://icon-shopify-theme.myshopify.com/cdn/shop/products/9k_-2_0e3ad28e-b1a4-4940-bfd5-169df323e2bd.jpg?v=1493326475&width=700", - "https://icon-shopify-theme.myshopify.com/cdn/shop/products/2Q_-1_b5ecc059-d675-4b8c-ada6-2d935faf0fb6.jpg?v=1493326475&width=700" - ), - price = "£59.00", - sizes = "S, M, L", - ), - ItemWithPrice( - id = "1", - title = "Sweet Harvest Playsuit", - urls = listOf( - "https://icon-shopify-theme.myshopify.com/cdn/shop/products/2Q_-3_e64bbab2-8f73-47fc-93b8-1df2b79127b6.jpg?v=1493325632&width=700", - "https://icon-shopify-theme.myshopify.com/cdn/shop/products/2Q_7fc77ee9-6a77-4d42-b30c-b548ecd2c34b.jpg?v=1493315057&width=700" - ), - price = "£59.00", - sizes = "S, M, L", - ), - ItemWithPrice( - id = "3", - title = "Holding on Tunic", - urls = listOf( - "https://icon-shopify-theme.myshopify.com/cdn/shop/products/9k_-1_5208346c-ce37-4404-b7dc-dd869cf7bc32.jpg?v=1493325201&width=700", - "https://icon-shopify-theme.myshopify.com/cdn/shop/products/2Q_dfb262cc-ce27-4532-bd88-5e24b06b6522.jpg?v=1493325632&width=700", - ), - price = "£79.00", - sizes = "S, M, L", - ), - ItemWithPrice( - id = "1", - title = "Sweet Harvest Playsuit", - urls = listOf( - "https://icon-shopify-theme.myshopify.com/cdn/shop/products/2Q_dfb262cc-ce27-4532-bd88-5e24b06b6522.jpg?v=1493325632&width=700", - "https://icon-shopify-theme.myshopify.com/cdn/shop/products/2Q_7fc77ee9-6a77-4d42-b30c-b548ecd2c34b.jpg?v=1493315057&width=700", - ), - price = "£59.00", - sizes = "S, M, L", - ), + val latestLooks: String = "https://be-natty.co.uk/cdn/shop/files/DolceThemePreview_1.webp?v=1717228009&width=700", + val justArrived: Section = Section( + title = "Just arrived", + (1..5).map { + ItemWithPrice( + id = "1", + title = "Sweet Harvest Playsuit", + urls = listOf( + "https://be-natty.co.uk/cdn/shop/files/DolceThemePreview_1.webp?v=1717228009&width=700", + "https://be-natty.co.uk/cdn/shop/files/DolceThemePreview_1.webp?v=1717228009&width=700" + ), + price = "£59.00", + sizes = "S, M, L", + ) + }, ), - val latestLooksCategories: List = listOf( - LatestLookItem( - title = "Tops", - url = "", - ), - LatestLookItem( - title = "Playsuits", - url = "", - ), - LatestLookItem( - title = "Dresses", - url = "", - ), + val latestLooksCategories: Section = Section( + title = "Latest looks", + items = (1..5).map { + LatestLookItem( + title = "Tops", + url = "", + ) + }, ), - val featured: List = listOf( - ItemWithPrice( - id = "1", - title = "Sweet Harvest Playsuit", - urls = listOf( - "https://icon-shopify-theme.myshopify.com/cdn/shop/products/2Q_-1_09e467d5-e880-4f17-8af6-9e4aa6674456.jpg?v=1493315056&width=700", - "https://icon-shopify-theme.myshopify.com/cdn/shop/products/2Q_7fc77ee9-6a77-4d42-b30c-b548ecd2c34b.jpg?v=1493315057&width=700" - ), - price = "£59.00", - sizes = "S, M, L", - ), - ItemWithPrice( - id = "2", - title = "Songbird Playsuit", - urls = listOf( - "https://icon-shopify-theme.myshopify.com/cdn/shop/products/9k_-2_0e3ad28e-b1a4-4940-bfd5-169df323e2bd.jpg?v=1493326475&width=700", - "https://icon-shopify-theme.myshopify.com/cdn/shop/products/2Q_-1_b5ecc059-d675-4b8c-ada6-2d935faf0fb6.jpg?v=1493326475&width=700" - ), - price = "£59.00", - sizes = "S, M, L", - ), - ItemWithPrice( - id = "1", - title = "Sweet Harvest Playsuit", - urls = listOf( - "https://icon-shopify-theme.myshopify.com/cdn/shop/products/2Q_-3_e64bbab2-8f73-47fc-93b8-1df2b79127b6.jpg?v=1493325632&width=700", - "https://icon-shopify-theme.myshopify.com/cdn/shop/products/2Q_7fc77ee9-6a77-4d42-b30c-b548ecd2c34b.jpg?v=1493315057&width=700" - ), - price = "£59.00", - sizes = "S, M, L", - ), - ItemWithPrice( - id = "3", - title = "Holding on Tunic", - urls = listOf( - "https://icon-shopify-theme.myshopify.com/cdn/shop/products/9k_-1_5208346c-ce37-4404-b7dc-dd869cf7bc32.jpg?v=1493325201&width=700", - "https://icon-shopify-theme.myshopify.com/cdn/shop/products/2Q_dfb262cc-ce27-4532-bd88-5e24b06b6522.jpg?v=1493325632&width=700", - ), - price = "£79.00", - sizes = "S, M, L", - ), - ItemWithPrice( - id = "1", - title = "Sweet Harvest Playsuit", - urls = listOf( - "https://icon-shopify-theme.myshopify.com/cdn/shop/products/2Q_dfb262cc-ce27-4532-bd88-5e24b06b6522.jpg?v=1493325632&width=700", - "https://icon-shopify-theme.myshopify.com/cdn/shop/products/2Q_7fc77ee9-6a77-4d42-b30c-b548ecd2c34b.jpg?v=1493315057&width=700", - ), - price = "£59.00", - sizes = "S, M, L", - ), - ItemWithPrice( - id = "1", - title = "Sweet Harvest Playsuit", - urls = listOf( - "https://icon-shopify-theme.myshopify.com/cdn/shop/products/2Q_-1_09e467d5-e880-4f17-8af6-9e4aa6674456.jpg?v=1493315056&width=700", - "https://icon-shopify-theme.myshopify.com/cdn/shop/products/2Q_7fc77ee9-6a77-4d42-b30c-b548ecd2c34b.jpg?v=1493315057&width=700" - ), - price = "£59.00", - sizes = "S, M, L", - ), - ItemWithPrice( - id = "2", - title = "Songbird Playsuit", - urls = listOf( - "https://icon-shopify-theme.myshopify.com/cdn/shop/products/9k_-2_0e3ad28e-b1a4-4940-bfd5-169df323e2bd.jpg?v=1493326475&width=700", - "https://icon-shopify-theme.myshopify.com/cdn/shop/products/2Q_-1_b5ecc059-d675-4b8c-ada6-2d935faf0fb6.jpg?v=1493326475&width=700" - ), - price = "£59.00", - sizes = "S, M, L", - ), - ItemWithPrice( - id = "1", - title = "Sweet Harvest Playsuit", - urls = listOf( - "https://icon-shopify-theme.myshopify.com/cdn/shop/products/2Q_-3_e64bbab2-8f73-47fc-93b8-1df2b79127b6.jpg?v=1493325632&width=700", - "https://icon-shopify-theme.myshopify.com/cdn/shop/products/2Q_7fc77ee9-6a77-4d42-b30c-b548ecd2c34b.jpg?v=1493315057&width=700" - ), - price = "£59.00", - sizes = "S, M, L", - ), - ItemWithPrice( - id = "3", - title = "Holding on Tunic", - urls = listOf( - "https://icon-shopify-theme.myshopify.com/cdn/shop/products/9k_-1_5208346c-ce37-4404-b7dc-dd869cf7bc32.jpg?v=1493325201&width=700", - "https://icon-shopify-theme.myshopify.com/cdn/shop/products/2Q_dfb262cc-ce27-4532-bd88-5e24b06b6522.jpg?v=1493325632&width=700", - ), - price = "£79.00", - sizes = "S, M, L", - ), - ItemWithPrice( - id = "1", - title = "Sweet Harvest Playsuit", - urls = listOf( - "https://icon-shopify-theme.myshopify.com/cdn/shop/products/2Q_dfb262cc-ce27-4532-bd88-5e24b06b6522.jpg?v=1493325632&width=700", - "https://icon-shopify-theme.myshopify.com/cdn/shop/products/2Q_7fc77ee9-6a77-4d42-b30c-b548ecd2c34b.jpg?v=1493315057&width=700", - ), - price = "£59.00", - sizes = "S, M, L", - ), + val featured: Section = Section( + title = "Featured", + items = (1..5).map { + ItemWithPrice( + id = "1", + title = "Sweet Harvest Playsuit", + urls = listOf( + "https://be-natty.co.uk/cdn/shop/files/DolceThemePreview_1.webp?v=1717228009&width=700", + "https://be-natty.co.uk/cdn/shop/files/DolceThemePreview_1.webp?v=1717228009&width=700" + ), + price = "£59.00", + sizes = "S, M, L", + ) + } ), - val ourFavorites: List = listOf( - ItemWithPrice( - id = "1", - title = "Sweet Harvest Playsuit", - urls = listOf( - "https://icon-shopify-theme.myshopify.com/cdn/shop/products/2Q_-1_09e467d5-e880-4f17-8af6-9e4aa6674456.jpg?v=1493315056&width=700", - "https://icon-shopify-theme.myshopify.com/cdn/shop/products/2Q_7fc77ee9-6a77-4d42-b30c-b548ecd2c34b.jpg?v=1493315057&width=700" - ), - price = "£59.00", - sizes = "S, M, L", - ), - ItemWithPrice( - id = "2", - title = "Songbird Playsuit", - urls = listOf( - "https://icon-shopify-theme.myshopify.com/cdn/shop/products/9k_-2_0e3ad28e-b1a4-4940-bfd5-169df323e2bd.jpg?v=1493326475&width=700", - "https://icon-shopify-theme.myshopify.com/cdn/shop/products/2Q_-1_b5ecc059-d675-4b8c-ada6-2d935faf0fb6.jpg?v=1493326475&width=700" - ), - price = "£59.00", - sizes = "S, M, L", - ), - ItemWithPrice( - id = "1", - title = "Sweet Harvest Playsuit", - urls = listOf( - "https://icon-shopify-theme.myshopify.com/cdn/shop/products/2Q_-3_e64bbab2-8f73-47fc-93b8-1df2b79127b6.jpg?v=1493325632&width=700", - "https://icon-shopify-theme.myshopify.com/cdn/shop/products/2Q_7fc77ee9-6a77-4d42-b30c-b548ecd2c34b.jpg?v=1493315057&width=700" - ), - price = "£59.00", - sizes = "S, M, L", - ), - ItemWithPrice( - id = "3", - title = "Holding on Tunic", - urls = listOf( - "https://icon-shopify-theme.myshopify.com/cdn/shop/products/9k_-1_5208346c-ce37-4404-b7dc-dd869cf7bc32.jpg?v=1493325201&width=700", - "https://icon-shopify-theme.myshopify.com/cdn/shop/products/2Q_dfb262cc-ce27-4532-bd88-5e24b06b6522.jpg?v=1493325632&width=700", - ), - price = "£79.00", - sizes = "S, M, L", - ), - ItemWithPrice( - id = "1", - title = "Sweet Harvest Playsuit", - urls = listOf( - "https://icon-shopify-theme.myshopify.com/cdn/shop/products/2Q_dfb262cc-ce27-4532-bd88-5e24b06b6522.jpg?v=1493325632&width=700", - "https://icon-shopify-theme.myshopify.com/cdn/shop/products/2Q_7fc77ee9-6a77-4d42-b30c-b548ecd2c34b.jpg?v=1493315057&width=700", - ), - price = "£59.00", - sizes = "S, M, L", - ), - ItemWithPrice( - id = "1", - title = "Sweet Harvest Playsuit", - urls = listOf( - "https://icon-shopify-theme.myshopify.com/cdn/shop/products/2Q_-1_09e467d5-e880-4f17-8af6-9e4aa6674456.jpg?v=1493315056&width=700", - "https://icon-shopify-theme.myshopify.com/cdn/shop/products/2Q_7fc77ee9-6a77-4d42-b30c-b548ecd2c34b.jpg?v=1493315057&width=700" - ), - price = "£59.00", - sizes = "S, M, L", - ), - ItemWithPrice( - id = "2", - title = "Songbird Playsuit", - urls = listOf( - "https://icon-shopify-theme.myshopify.com/cdn/shop/products/9k_-2_0e3ad28e-b1a4-4940-bfd5-169df323e2bd.jpg?v=1493326475&width=700", - "https://icon-shopify-theme.myshopify.com/cdn/shop/products/2Q_-1_b5ecc059-d675-4b8c-ada6-2d935faf0fb6.jpg?v=1493326475&width=700" - ), - price = "£59.00", - sizes = "S, M, L", - ), - ItemWithPrice( - id = "1", - title = "Sweet Harvest Playsuit", - urls = listOf( - "https://icon-shopify-theme.myshopify.com/cdn/shop/products/2Q_-3_e64bbab2-8f73-47fc-93b8-1df2b79127b6.jpg?v=1493325632&width=700", - "https://icon-shopify-theme.myshopify.com/cdn/shop/products/2Q_7fc77ee9-6a77-4d42-b30c-b548ecd2c34b.jpg?v=1493315057&width=700" - ), - price = "£59.00", - sizes = "S, M, L", - ), - ItemWithPrice( - id = "3", - title = "Holding on Tunic", - urls = listOf( - "https://icon-shopify-theme.myshopify.com/cdn/shop/products/9k_-1_5208346c-ce37-4404-b7dc-dd869cf7bc32.jpg?v=1493325201&width=700", - "https://icon-shopify-theme.myshopify.com/cdn/shop/products/2Q_dfb262cc-ce27-4532-bd88-5e24b06b6522.jpg?v=1493325632&width=700", - ), - price = "£79.00", - sizes = "S, M, L", - ), - ItemWithPrice( - id = "1", - title = "Sweet Harvest Playsuit", - urls = listOf( - "https://icon-shopify-theme.myshopify.com/cdn/shop/products/2Q_dfb262cc-ce27-4532-bd88-5e24b06b6522.jpg?v=1493325632&width=700", - "https://icon-shopify-theme.myshopify.com/cdn/shop/products/2Q_7fc77ee9-6a77-4d42-b30c-b548ecd2c34b.jpg?v=1493315057&width=700", - ), - price = "£59.00", - sizes = "S, M, L", + val ourFavorites: Section = Section( + title = "Our favorites", + items = (1..5).map { + ItemWithPrice( + id = "1", + title = "Sweet Harvest Playsuit", + urls = listOf( + "https://be-natty.co.uk/cdn/shop/files/DolceThemePreview_1.webp?v=1717228009&width=700", + "https://be-natty.co.uk/cdn/shop/files/DolceThemePreview_1.webp?v=1717228009&width=700" + ), + price = "£59.00", + sizes = "S, M, L", + ) + } + ), + val fromTheBlog: Section = Section( + title = "From the blog", + items = listOf( + BlogItem( + title = "Color pop", + description = "The best way to add a pop of color to your wardrobe", + url = "https://be-natty.co.uk/cdn/shop/files/DolceThemePreview_1.webp?v=1717228009&width=700", + date = "June 1, 2021", + links = listOf( + BlogItem.Link( + title = "Clothing", + url = "" + ), + BlogItem.Link( + title = "Fashion", + url = "" + ) + ) + ), + BlogItem( + title = "Summer look book", + description = "The best way to add a pop of color to your wardrobe", + url = "https://be-natty.co.uk/cdn/shop/files/DolceThemePreview_1.webp?v=1717228009&width=700", + date = "June 1, 2021", + links = listOf( + BlogItem.Link( + title = "Clothing", + url = "" + ), + BlogItem.Link( + title = "Fashion", + url = "" + ) + ) + ) ), + ), + val freeSection: List = listOf( + FreeItem( + title = "Free shipping", + description = "On all orders over $100", + icon = "MdiLocalShipping" + ), + FreeItem( + title = "Free returns", + description = "On all unopened unused items", + icon = "MdiRefresh" + ), + FreeItem( + title = "Secure shipping", + description = "Shop with confidence", + icon = "MdiVerifiedUser" + ), + FreeItem( + title = "Percent satisfaction", + description = "Rated excellent by customers", + icon = "MdiSentimentSatisfied" + ) ) ) @@ -453,6 +233,30 @@ object HomeContract { val price: String, val sizes: String, ) + + data class Section( + val title: String, + val items: List, + ) + + data class BlogItem( + val title: String, + val description: String, + val url: String, + val date: String, + val links: List, + ) { + data class Link( + val title: String, + val url: String, + ) + } + + data class FreeItem( + val title: String, + val description: String, + val icon: String, + ) } data class HomeRoutes( diff --git a/apps/shop/web/.kobweb/server/logs/kobweb-server.log b/apps/shop/web/.kobweb/server/logs/kobweb-server.log index fdd5fec1..a21bcf16 100644 --- a/apps/shop/web/.kobweb/server/logs/kobweb-server.log +++ b/apps/shop/web/.kobweb/server/logs/kobweb-server.log @@ -1,11 +1,19 @@ -2024-06-30 17:19:21.653 [main] DEBUG ktor.application - Java Home: /Users/adrianwitaszak/.sdkman/candidates/java -2024-06-30 17:19:21.654 [main] DEBUG ktor.application - Class Loader: jdk.internal.loader.ClassLoaders$AppClassLoader@1cf4f579: [file:/Users/adrianwitaszak/CharLEEX/BeNatty/kotlin/BeNatty-Client/apps/shop/web/.kobweb/server/server.jar!/ch] -2024-06-30 17:19:21.664 [main] INFO ktor.application - No API jar file specified in conf.yaml. Server API routes will not be available. -2024-06-30 17:19:21.693 [main] INFO ktor.application - Application started in 0.073 seconds. -2024-06-30 17:19:21.771 [main] INFO ktor.application - Responding at http://0.0.0.0:8080 -2024-06-30 17:19:28.813 [eventLoopGroupProxy-4-1] DEBUG ktor.application - Served fallback index.html file in response to "/" -2024-06-30 17:19:30.053 [eventLoopGroupProxy-4-1] DEBUG ktor.application - Client connected and is requesting kobweb status events. -2024-06-30 17:19:32.198 [eventLoopGroupProxy-4-1] DEBUG ktor.application - Stopped sending kobweb status events, probably because client disconnected or server is shutting down. (ChannelWriteException: Cannot write to a channel) -2024-06-30 17:19:33.491 [eventLoopGroupProxy-4-4] DEBUG ktor.application - Served fallback index.html file in response to "/" -2024-06-30 17:19:34.632 [eventLoopGroupProxy-4-4] DEBUG ktor.application - Client connected and is requesting kobweb status events. -2024-06-30 17:19:41.630 [eventLoopGroupProxy-4-4] DEBUG ktor.application - Stopped sending kobweb status events, probably because client disconnected or server is shutting down. (ChannelWriteException: Cannot write to a channel) +2024-06-30 20:17:14.964 [main] DEBUG ktor.application - Java Home: /Users/adrianwitaszak/.sdkman/candidates/java +2024-06-30 20:17:14.965 [main] DEBUG ktor.application - Class Loader: jdk.internal.loader.ClassLoaders$AppClassLoader@1cf4f579: [file:/Users/adrianwitaszak/CharLEEX/BeNatty/kotlin/BeNatty-Client/apps/shop/web/.kobweb/server/server.jar!/ch] +2024-06-30 20:17:14.977 [main] INFO ktor.application - No API jar file specified in conf.yaml. Server API routes will not be available. +2024-06-30 20:17:15.011 [main] INFO ktor.application - Application started in 0.083 seconds. +2024-06-30 20:17:15.095 [main] INFO ktor.application - Responding at http://0.0.0.0:8081 +2024-06-30 20:18:40.739 [eventLoopGroupProxy-4-1] DEBUG ktor.application - Served fallback index.html file in response to "/" +2024-06-30 20:18:41.884 [eventLoopGroupProxy-4-1] DEBUG ktor.application - Client connected and is requesting kobweb status events. +2024-06-30 20:26:11.398 [eventLoopGroupProxy-4-5] DEBUG ktor.application - Served fallback index.html file in response to "/" +2024-06-30 20:26:11.811 [eventLoopGroupProxy-4-1] DEBUG ktor.application - Stopped sending kobweb status events, probably because client disconnected or server is shutting down. (ChannelWriteException: Cannot write to a channel) +2024-06-30 20:26:12.458 [eventLoopGroupProxy-4-5] DEBUG ktor.application - Client connected and is requesting kobweb status events. +2024-06-30 20:26:12.721 [eventLoopGroupProxy-4-8] DEBUG ktor.application - Served fallback index.html file in response to "/" +2024-06-30 20:26:13.089 [eventLoopGroupProxy-4-5] DEBUG ktor.application - Stopped sending kobweb status events, probably because client disconnected or server is shutting down. (ChannelWriteException: Cannot write to a channel) +2024-06-30 20:26:13.671 [eventLoopGroupProxy-4-8] DEBUG ktor.application - Client connected and is requesting kobweb status events. +2024-06-30 20:28:28.745 [eventLoopGroupProxy-4-9] DEBUG ktor.application - Served fallback index.html file in response to "/" +2024-06-30 20:28:29.186 [eventLoopGroupProxy-4-8] DEBUG ktor.application - Stopped sending kobweb status events, probably because client disconnected or server is shutting down. (ChannelWriteException: Cannot write to a channel) +2024-06-30 20:28:29.777 [eventLoopGroupProxy-4-9] DEBUG ktor.application - Client connected and is requesting kobweb status events. +2024-06-30 20:36:07.101 [eventLoopGroupProxy-4-9] DEBUG ktor.application - Stopped sending kobweb status events, probably because client disconnected or server is shutting down. (ChannelWriteException: Cannot write to a channel) +2024-06-30 20:36:16.646 [kotlinx.coroutines.DefaultExecutor] INFO ktor.application - Kobweb server shutting down... +2024-06-30 20:36:17.706 [kotlinx.coroutines.DefaultExecutor] INFO ktor.application - Server finished shutting down. diff --git a/apps/shop/web/.kobweb/server/state.yaml b/apps/shop/web/.kobweb/server/state.yaml deleted file mode 100644 index 07aa7987..00000000 --- a/apps/shop/web/.kobweb/server/state.yaml +++ /dev/null @@ -1,3 +0,0 @@ -env: "DEV" -port: 8080 -pid: 37316 \ No newline at end of file diff --git a/apps/shop/web/src/jsMain/kotlin/web/components/sections/FreeSection.kt b/apps/shop/web/src/jsMain/kotlin/web/components/sections/FreeSection.kt index ec762e23..3d46c474 100644 --- a/apps/shop/web/src/jsMain/kotlin/web/components/sections/FreeSection.kt +++ b/apps/shop/web/src/jsMain/kotlin/web/components/sections/FreeSection.kt @@ -1,4 +1,4 @@ -package pages.home +package web.components.sections import androidx.compose.runtime.Composable import com.varabyte.kobweb.compose.foundation.layout.Column diff --git a/apps/shop/web/src/jsMain/kotlin/web/components/widgets/HorizontalScrollSection.kt b/apps/shop/web/src/jsMain/kotlin/web/components/widgets/HorizontalScrollSection.kt index 671fb1c8..96231d52 100644 --- a/apps/shop/web/src/jsMain/kotlin/web/components/widgets/HorizontalScrollSection.kt +++ b/apps/shop/web/src/jsMain/kotlin/web/components/widgets/HorizontalScrollSection.kt @@ -7,6 +7,7 @@ import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import com.varabyte.kobweb.compose.css.Cursor +import com.varabyte.kobweb.compose.css.ObjectFit import com.varabyte.kobweb.compose.css.Overflow import com.varabyte.kobweb.compose.css.UserSelect import com.varabyte.kobweb.compose.foundation.layout.Box @@ -23,6 +24,7 @@ import com.varabyte.kobweb.compose.ui.modifiers.gap import com.varabyte.kobweb.compose.ui.modifiers.height import com.varabyte.kobweb.compose.ui.modifiers.margin import com.varabyte.kobweb.compose.ui.modifiers.maxWidth +import com.varabyte.kobweb.compose.ui.modifiers.objectFit import com.varabyte.kobweb.compose.ui.modifiers.onClick import com.varabyte.kobweb.compose.ui.modifiers.onFocusIn import com.varabyte.kobweb.compose.ui.modifiers.onMouseOver @@ -217,6 +219,7 @@ fun ScrollableItem( modifier = Modifier .fillMaxWidth() .aspectRatio(1 / 2) + .objectFit(ObjectFit.Cover) ) SpanText(text = title) SpanText(text = price) diff --git a/apps/shop/web/src/jsMain/kotlin/web/pages/home/CategoriesSection.kt b/apps/shop/web/src/jsMain/kotlin/web/pages/home/CategoriesSection.kt index dd539035..57d89fe4 100644 --- a/apps/shop/web/src/jsMain/kotlin/web/pages/home/CategoriesSection.kt +++ b/apps/shop/web/src/jsMain/kotlin/web/pages/home/CategoriesSection.kt @@ -1,6 +1,7 @@ package web.pages.home import androidx.compose.runtime.Composable +import com.varabyte.kobweb.compose.css.ObjectFit import com.varabyte.kobweb.compose.foundation.layout.Box import com.varabyte.kobweb.compose.foundation.layout.Row import com.varabyte.kobweb.compose.ui.Alignment @@ -10,6 +11,7 @@ import com.varabyte.kobweb.compose.ui.modifiers.fillMaxSize import com.varabyte.kobweb.compose.ui.modifiers.fillMaxWidth import com.varabyte.kobweb.compose.ui.modifiers.height import com.varabyte.kobweb.compose.ui.modifiers.maxWidth +import com.varabyte.kobweb.compose.ui.modifiers.objectFit import com.varabyte.kobweb.compose.ui.modifiers.padding import com.varabyte.kobweb.compose.ui.modifiers.position import com.varabyte.kobweb.compose.ui.modifiers.top @@ -48,7 +50,9 @@ fun CategoriesSection( ) { Image( src = item.url, - modifier = Modifier.fillMaxSize() + modifier = Modifier + .fillMaxSize() + .objectFit(ObjectFit.Cover) ) Box( contentAlignment = Alignment.Center, diff --git a/apps/shop/web/src/jsMain/kotlin/web/pages/home/Featured.kt b/apps/shop/web/src/jsMain/kotlin/web/pages/home/Featured.kt index 661521f0..ad5fb46d 100644 --- a/apps/shop/web/src/jsMain/kotlin/web/pages/home/Featured.kt +++ b/apps/shop/web/src/jsMain/kotlin/web/pages/home/Featured.kt @@ -11,9 +11,9 @@ import web.components.widgets.ScrollableItem @Composable fun Featured(vm: HomeViewModel, state: HomeContract.State) { HorizontalScrollSection( - title = getString(Strings.Featured).uppercase(), + title = state.featured.title.uppercase(), seeMoreTitle = getString(Strings.SeeMoreFeatured), - items = state.featured.map { item -> + items = state.featured.items.map { item -> ScrollableItem( id = item.id, urls = item.urls, diff --git a/apps/shop/web/src/jsMain/kotlin/web/pages/home/FromTheBlog.kt b/apps/shop/web/src/jsMain/kotlin/web/pages/home/FromTheBlog.kt index 1d31b9f1..750a86e4 100644 --- a/apps/shop/web/src/jsMain/kotlin/web/pages/home/FromTheBlog.kt +++ b/apps/shop/web/src/jsMain/kotlin/web/pages/home/FromTheBlog.kt @@ -2,7 +2,6 @@ package web.pages.home import androidx.compose.runtime.Composable import com.varabyte.kobweb.compose.css.FontWeight -import com.varabyte.kobweb.compose.foundation.layout.Box import com.varabyte.kobweb.compose.foundation.layout.Column import com.varabyte.kobweb.compose.foundation.layout.Row import com.varabyte.kobweb.compose.ui.Alignment @@ -14,13 +13,10 @@ import com.varabyte.kobweb.compose.ui.modifiers.gap import com.varabyte.kobweb.compose.ui.modifiers.margin import com.varabyte.kobweb.compose.ui.modifiers.maxWidth import com.varabyte.kobweb.compose.ui.modifiers.padding -import com.varabyte.kobweb.compose.ui.modifiers.size import com.varabyte.kobweb.compose.ui.modifiers.translateX import com.varabyte.kobweb.silk.components.graphics.Image import com.varabyte.kobweb.silk.components.style.toModifier import com.varabyte.kobweb.silk.components.text.SpanText -import component.localization.Strings -import component.localization.getString import feature.shop.home.HomeContract import feature.shop.home.HomeViewModel import org.jetbrains.compose.web.css.em @@ -34,7 +30,7 @@ import web.components.layouts.oneLayoutMaxWidth import web.components.widgets.AppTextButton @Composable -fun FromTheBlog(viewModel: HomeViewModel, state: HomeContract.State) { +fun FromTheBlog(vm: HomeViewModel, state: HomeContract.State) { Column( horizontalAlignment = Alignment.CenterHorizontally, modifier = Modifier @@ -43,103 +39,55 @@ fun FromTheBlog(viewModel: HomeViewModel, state: HomeContract.State) { .margin(top = 2.em) ) { SpanText( - text = getString(Strings.FromTheBlog).uppercase(), + text = state.fromTheBlog.title.uppercase(), modifier = HeadlineStyle.toModifier(H2Variant) .padding(topBottom = 1.5.em) ) - Row( - verticalAlignment = Alignment.CenterVertically, - modifier = Modifier - .fillMaxWidth() - .maxWidth(oneLayoutMaxWidth) - ) { - Image( - src = "https://icon-shopify-theme.myshopify.com/cdn/shop/articles/blog-two.jpg?v=1562342340&width=800", - alt = "", + state.fromTheBlog.items.forEach { item -> + Row( + verticalAlignment = Alignment.CenterVertically, modifier = Modifier - .fillMaxWidth(60.percent) - ) - Column( - modifier = Modifier - .padding(2.5.em) - .gap(1.em) - .backgroundColor(AppColors.lightBg) - .translateX((-80).px) + .fillMaxWidth() + .maxWidth(oneLayoutMaxWidth) ) { - SpanText( - text = "Color pop", - modifier = HeadlineStyle.toModifier(H2Variant) - .fontWeight(FontWeight.SemiBold) - ) - SpanText( - text = "As much as we live and breath monochrome styles (and we can all agree a majority of our " + - "daily wear is crisp whites and deep blacks), a gals gotta have a...", + Image( + src = item.url, + alt = item.title, + modifier = Modifier.fillMaxWidth(60.percent) ) - SpanText( - text = "Posted on Apr 28, 2024", - modifier = SubtitleStyle.toModifier() - ) - Row( - modifier = Modifier.gap(0.5.em) + Column( + modifier = Modifier + .padding(2.5.em) + .gap(1.em) + .backgroundColor(AppColors.lightBg) + .translateX((-80).px) ) { - AppTextButton( - onClick = {}, - content = { SpanText("Clothing") }, - ) - AppTextButton( - onClick = {}, - content = { SpanText("Fashion") }, + SpanText( + text = item.title, + modifier = HeadlineStyle.toModifier(H2Variant) + .fontWeight(FontWeight.SemiBold) ) - } - } - } - Box(Modifier.size(4.em)) - Row( - verticalAlignment = Alignment.CenterVertically, - modifier = Modifier - .fillMaxWidth() - .maxWidth(oneLayoutMaxWidth) - ) { - Column( - modifier = Modifier - .padding(2.5.em) - .gap(1.em) - .backgroundColor(AppColors.lightBg) - .translateX(40.px) - ) { - SpanText( - text = "Summer look book", - modifier = HeadlineStyle.toModifier(H2Variant) - .fontWeight(FontWeight.SemiBold) - ) - SpanText( - text = "Take a look at our favorite pieces from the latest summer collection in our hand- picked " + - "summer look book. Our inspiration for each piece was light, fun and an essential piece of every...", - ) - SpanText( - text = "Posted on Mar 06, 2024", - modifier = SubtitleStyle.toModifier() - ) - Row( - modifier = Modifier.gap(0.5.em) - ) { - AppTextButton( - onClick = {}, - content = { SpanText("Clothing") }, + SpanText( + text = item.description, ) - AppTextButton( - onClick = {}, - content = { SpanText("Fashion") }, + SpanText( + text = item.date, + modifier = SubtitleStyle.toModifier() ) + Row( + modifier = Modifier.gap(0.5.em) + ) { + item.links.forEach { link -> + AppTextButton( + onClick = { + // link.url + }, + content = { SpanText(link.title) }, + ) + } + } } } - Image( - src = "https://icon-shopify-theme.myshopify.com/cdn/shop/articles/blog-one.jpg?v=1562342357&width=800", - alt = "", - modifier = Modifier - .fillMaxWidth(60.percent) - ) - Box(Modifier.size(4.em)) } } } diff --git a/apps/shop/web/src/jsMain/kotlin/web/pages/home/HomeContent.kt b/apps/shop/web/src/jsMain/kotlin/web/pages/home/HomeContent.kt index 2dc5b9a9..19dd7f67 100644 --- a/apps/shop/web/src/jsMain/kotlin/web/pages/home/HomeContent.kt +++ b/apps/shop/web/src/jsMain/kotlin/web/pages/home/HomeContent.kt @@ -12,10 +12,10 @@ import feature.shop.home.HomeContract import feature.shop.home.HomeRoutes import feature.shop.home.HomeViewModel import feature.shop.navbar.DesktopNavRoutes -import pages.home.FreeSection import web.components.layouts.GlobalVMs import web.components.layouts.MainRoutes import web.components.layouts.ShopMainLayout +import web.components.sections.FreeSection import web.components.widgets.AppDividerHorizontal @Composable diff --git a/apps/shop/web/src/jsMain/kotlin/web/pages/home/JustArrived.kt b/apps/shop/web/src/jsMain/kotlin/web/pages/home/JustArrived.kt index dc20cd6f..83ba1c96 100644 --- a/apps/shop/web/src/jsMain/kotlin/web/pages/home/JustArrived.kt +++ b/apps/shop/web/src/jsMain/kotlin/web/pages/home/JustArrived.kt @@ -11,9 +11,9 @@ import web.components.widgets.ScrollableItem @Composable fun JustArrived(vm: HomeViewModel, state: HomeContract.State) { HorizontalScrollSection( - title = getString(Strings.JustArrived).uppercase(), + title = state.justArrived.title.uppercase(), seeMoreTitle = getString(Strings.SeeMoreNewArrivals), - items = state.justArrived.map { item -> + items = state.justArrived.items.map { item -> ScrollableItem( id = item.id, urls = item.urls, diff --git a/apps/shop/web/src/jsMain/kotlin/web/pages/home/LatestLooks.kt b/apps/shop/web/src/jsMain/kotlin/web/pages/home/LatestLooks.kt index ca1355de..e73787a6 100644 --- a/apps/shop/web/src/jsMain/kotlin/web/pages/home/LatestLooks.kt +++ b/apps/shop/web/src/jsMain/kotlin/web/pages/home/LatestLooks.kt @@ -109,14 +109,14 @@ fun LatestLooks(vm: HomeViewModel, state: HomeContract.State) { .backgroundColor(ColorMode.current.toPalette().background) ) { SpanText( - text = getString(Strings.TheLatestLooks).uppercase(), + text = state.latestLooksCategories.title.uppercase(), modifier = HeadlineStyle.toModifier(H2Variant) ) SpanText(getString(Strings.LatestLooksDescription1)) Row { SpanText("${getString(Strings.Shop)}: ") - state.latestLooksCategories.forEachIndexed { index, item -> - val isLast = index == state.latestLooksCategories.size - 1 + state.latestLooksCategories.items.forEachIndexed { index, item -> + val isLast = index == state.latestLooksCategories.items.size - 1 if (index > 0 && !isLast) { SpanText(", ") diff --git a/apps/shop/web/src/jsMain/kotlin/web/pages/home/OurFavorites.kt b/apps/shop/web/src/jsMain/kotlin/web/pages/home/OurFavorites.kt index 2cdc4375..5c4e609a 100644 --- a/apps/shop/web/src/jsMain/kotlin/web/pages/home/OurFavorites.kt +++ b/apps/shop/web/src/jsMain/kotlin/web/pages/home/OurFavorites.kt @@ -11,9 +11,9 @@ import web.components.widgets.ScrollableItem @Composable fun OurFavorites(vm: HomeViewModel, state: HomeContract.State) { HorizontalScrollSection( - title = getString(Strings.OurFavourites).uppercase(), + title = state.featured.title.uppercase(), seeMoreTitle = getString(Strings.ViewOurFavorites), - items = state.featured.map { item -> + items = state.featured.items.map { item -> ScrollableItem( id = item.id, urls = item.urls, diff --git a/apps/shop/web/src/jsMain/kotlin/web/pages/home/ShopByCollection.kt b/apps/shop/web/src/jsMain/kotlin/web/pages/home/ShopByCollection.kt index e32fc475..f5c85723 100644 --- a/apps/shop/web/src/jsMain/kotlin/web/pages/home/ShopByCollection.kt +++ b/apps/shop/web/src/jsMain/kotlin/web/pages/home/ShopByCollection.kt @@ -16,8 +16,6 @@ import com.varabyte.kobweb.compose.ui.modifiers.tabIndex import com.varabyte.kobweb.silk.components.graphics.Image import com.varabyte.kobweb.silk.components.style.toModifier import com.varabyte.kobweb.silk.components.text.SpanText -import component.localization.Strings -import component.localization.getString import feature.shop.home.HomeContract import feature.shop.home.HomeViewModel import org.jetbrains.compose.web.css.em @@ -38,7 +36,7 @@ fun ShopByCollection(vm: HomeViewModel, state: HomeContract.State) { .padding(leftRight = 24.px) ) { SpanText( - text = getString(Strings.ShopByCollection).uppercase(), + text = state.featuredCollections.title.uppercase(), modifier = HeadlineStyle.toModifier(H2Variant) ) Row( @@ -46,7 +44,7 @@ fun ShopByCollection(vm: HomeViewModel, state: HomeContract.State) { .fillMaxWidth() .maxWidth(oneLayoutMaxWidth) ) { - state.collections.forEach { collection -> + state.featuredCollections.items.forEach { collection -> Item( url = collection.url, title = collection.title, diff --git a/apps/shop/web/src/jsMain/kotlin/web/pages/product/catalogue/CatalogContent.kt b/apps/shop/web/src/jsMain/kotlin/web/pages/product/catalogue/CatalogContent.kt index 39266e35..f20d9fc8 100644 --- a/apps/shop/web/src/jsMain/kotlin/web/pages/product/catalogue/CatalogContent.kt +++ b/apps/shop/web/src/jsMain/kotlin/web/pages/product/catalogue/CatalogContent.kt @@ -37,11 +37,11 @@ import org.jetbrains.compose.web.css.em import org.jetbrains.compose.web.css.ms import org.jetbrains.compose.web.css.percent import org.jetbrains.compose.web.css.px -import pages.home.FreeSection import web.components.layouts.GlobalVMs import web.components.layouts.MainRoutes import web.components.layouts.ShopMainLayout import web.components.layouts.oneLayoutMaxWidth +import web.components.sections.FreeSection import web.components.widgets.AppDividerHorizontal import web.components.widgets.ObserveViewportEntered import web.components.widgets.Shimmer diff --git a/data/build.gradle.kts b/data/build.gradle.kts index 242e200b..869bd823 100644 --- a/data/build.gradle.kts +++ b/data/build.gradle.kts @@ -49,7 +49,9 @@ kotlin { } } -private val serverUrlGraphQl: String = "https://be-natty-server-ef8e2a031806.herokuapp.com/graphql" +private val serverUrlGraphQl: String = +// "https://be-natty-server-ef8e2a031806.herokuapp.com/graphql" + "http://localhost:8080/graphql" // property("API")?.toString() // ?: error("No server.url.graphql property found")