├── .dockerignore ├── .env.example ├── .gitignore ├── Dockerfile ├── README.md ├── app ├── commerce.server.ts ├── components │ ├── cart-listitem.tsx │ ├── cart-popover.tsx │ ├── cdp-product-grid-item.tsx │ ├── checkout-form.tsx │ ├── client-only.tsx │ ├── cta-banner.tsx │ ├── flags.tsx │ ├── footer.tsx │ ├── icons.tsx │ ├── language-dialog.tsx │ ├── navbar.tsx │ ├── product-details.tsx │ ├── scrolling-product-list.tsx │ ├── three-product-grid.tsx │ ├── wishlist-listitem.tsx │ └── wishlist-popover.tsx ├── entry.client.tsx ├── entry.server.tsx ├── images │ └── remix-glow.svg ├── models │ ├── ecommerce-provider.server.ts │ ├── ecommerce-providers │ │ └── shopify.server.ts │ ├── language.ts │ ├── request-response-cache.server.ts │ └── request-response-caches │ │ └── swr-redis-cache.server.ts ├── redis.server.ts ├── root.tsx ├── route-containers │ ├── boundaries │ │ ├── generic-catch-boundary.tsx │ │ └── generic-error-boundary.tsx │ ├── cart │ │ ├── cart.component.tsx │ │ └── cart.server.ts │ ├── cdp │ │ ├── cdp.component.tsx │ │ └── cdp.server.ts │ ├── generic-page │ │ ├── generic-page.component.tsx │ │ └── generic-page.server.ts │ ├── home │ │ ├── home.component.tsx │ │ └── home.server.ts │ ├── layout │ │ ├── layout.component.tsx │ │ └── layout.server.ts │ ├── pdp │ │ ├── pdp.component.tsx │ │ └── pdp.server.ts │ └── wishlist │ │ ├── wishlist.component.tsx │ │ └── wishlist.server.ts ├── routes │ ├── $.ts │ ├── $lang │ │ ├── $.ts │ │ ├── cart.ts │ │ ├── index.ts │ │ ├── product.$slug.ts │ │ ├── search.ts │ │ └── wishlist.ts │ ├── actions │ │ ├── checkout.ts │ │ └── set-language.ts │ ├── api │ │ └── image.ts │ ├── cart.ts │ ├── index.ts │ ├── product.$slug.ts │ ├── search.ts │ └── wishlist.ts ├── session.server.ts ├── styles │ └── global.css ├── translations.server.tsx └── utils │ ├── redirect.server.ts │ ├── use-no-flash.ts │ └── use-scroll-swipe.ts ├── cypress.config.ts ├── cypress ├── e2e │ ├── cart.cy.ts │ ├── language.cy.ts │ ├── search.cy.ts │ └── wishlist.cy.ts ├── fixtures │ └── example.json ├── parallel-weights.json ├── plugins │ └── index.js └── support │ ├── commands.js │ └── e2e.js ├── docker-compose.yml ├── fly.toml ├── multi-reporter-config.json ├── package.json ├── public ├── favicon.ico └── robots.txt ├── remix.config.js ├── remix.env.d.ts ├── tailwind.config.js └── tsconfig.json /.dockerignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacob-ebey/remix-ecommerce/HEAD/.dockerignore -------------------------------------------------------------------------------- /.env.example: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacob-ebey/remix-ecommerce/HEAD/.env.example -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacob-ebey/remix-ecommerce/HEAD/.gitignore -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacob-ebey/remix-ecommerce/HEAD/Dockerfile -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacob-ebey/remix-ecommerce/HEAD/README.md -------------------------------------------------------------------------------- /app/commerce.server.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacob-ebey/remix-ecommerce/HEAD/app/commerce.server.ts -------------------------------------------------------------------------------- /app/components/cart-listitem.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacob-ebey/remix-ecommerce/HEAD/app/components/cart-listitem.tsx -------------------------------------------------------------------------------- /app/components/cart-popover.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacob-ebey/remix-ecommerce/HEAD/app/components/cart-popover.tsx -------------------------------------------------------------------------------- /app/components/cdp-product-grid-item.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacob-ebey/remix-ecommerce/HEAD/app/components/cdp-product-grid-item.tsx -------------------------------------------------------------------------------- /app/components/checkout-form.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacob-ebey/remix-ecommerce/HEAD/app/components/checkout-form.tsx -------------------------------------------------------------------------------- /app/components/client-only.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacob-ebey/remix-ecommerce/HEAD/app/components/client-only.tsx -------------------------------------------------------------------------------- /app/components/cta-banner.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacob-ebey/remix-ecommerce/HEAD/app/components/cta-banner.tsx -------------------------------------------------------------------------------- /app/components/flags.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacob-ebey/remix-ecommerce/HEAD/app/components/flags.tsx -------------------------------------------------------------------------------- /app/components/footer.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacob-ebey/remix-ecommerce/HEAD/app/components/footer.tsx -------------------------------------------------------------------------------- /app/components/icons.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacob-ebey/remix-ecommerce/HEAD/app/components/icons.tsx -------------------------------------------------------------------------------- /app/components/language-dialog.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacob-ebey/remix-ecommerce/HEAD/app/components/language-dialog.tsx -------------------------------------------------------------------------------- /app/components/navbar.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacob-ebey/remix-ecommerce/HEAD/app/components/navbar.tsx -------------------------------------------------------------------------------- /app/components/product-details.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacob-ebey/remix-ecommerce/HEAD/app/components/product-details.tsx -------------------------------------------------------------------------------- /app/components/scrolling-product-list.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacob-ebey/remix-ecommerce/HEAD/app/components/scrolling-product-list.tsx -------------------------------------------------------------------------------- /app/components/three-product-grid.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacob-ebey/remix-ecommerce/HEAD/app/components/three-product-grid.tsx -------------------------------------------------------------------------------- /app/components/wishlist-listitem.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacob-ebey/remix-ecommerce/HEAD/app/components/wishlist-listitem.tsx -------------------------------------------------------------------------------- /app/components/wishlist-popover.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacob-ebey/remix-ecommerce/HEAD/app/components/wishlist-popover.tsx -------------------------------------------------------------------------------- /app/entry.client.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacob-ebey/remix-ecommerce/HEAD/app/entry.client.tsx -------------------------------------------------------------------------------- /app/entry.server.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacob-ebey/remix-ecommerce/HEAD/app/entry.server.tsx -------------------------------------------------------------------------------- /app/images/remix-glow.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacob-ebey/remix-ecommerce/HEAD/app/images/remix-glow.svg -------------------------------------------------------------------------------- /app/models/ecommerce-provider.server.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacob-ebey/remix-ecommerce/HEAD/app/models/ecommerce-provider.server.ts -------------------------------------------------------------------------------- /app/models/ecommerce-providers/shopify.server.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacob-ebey/remix-ecommerce/HEAD/app/models/ecommerce-providers/shopify.server.ts -------------------------------------------------------------------------------- /app/models/language.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacob-ebey/remix-ecommerce/HEAD/app/models/language.ts -------------------------------------------------------------------------------- /app/models/request-response-cache.server.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacob-ebey/remix-ecommerce/HEAD/app/models/request-response-cache.server.ts -------------------------------------------------------------------------------- /app/models/request-response-caches/swr-redis-cache.server.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacob-ebey/remix-ecommerce/HEAD/app/models/request-response-caches/swr-redis-cache.server.ts -------------------------------------------------------------------------------- /app/redis.server.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacob-ebey/remix-ecommerce/HEAD/app/redis.server.ts -------------------------------------------------------------------------------- /app/root.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacob-ebey/remix-ecommerce/HEAD/app/root.tsx -------------------------------------------------------------------------------- /app/route-containers/boundaries/generic-catch-boundary.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacob-ebey/remix-ecommerce/HEAD/app/route-containers/boundaries/generic-catch-boundary.tsx -------------------------------------------------------------------------------- /app/route-containers/boundaries/generic-error-boundary.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacob-ebey/remix-ecommerce/HEAD/app/route-containers/boundaries/generic-error-boundary.tsx -------------------------------------------------------------------------------- /app/route-containers/cart/cart.component.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacob-ebey/remix-ecommerce/HEAD/app/route-containers/cart/cart.component.tsx -------------------------------------------------------------------------------- /app/route-containers/cart/cart.server.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacob-ebey/remix-ecommerce/HEAD/app/route-containers/cart/cart.server.ts -------------------------------------------------------------------------------- /app/route-containers/cdp/cdp.component.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacob-ebey/remix-ecommerce/HEAD/app/route-containers/cdp/cdp.component.tsx -------------------------------------------------------------------------------- /app/route-containers/cdp/cdp.server.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacob-ebey/remix-ecommerce/HEAD/app/route-containers/cdp/cdp.server.ts -------------------------------------------------------------------------------- /app/route-containers/generic-page/generic-page.component.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacob-ebey/remix-ecommerce/HEAD/app/route-containers/generic-page/generic-page.component.tsx -------------------------------------------------------------------------------- /app/route-containers/generic-page/generic-page.server.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacob-ebey/remix-ecommerce/HEAD/app/route-containers/generic-page/generic-page.server.ts -------------------------------------------------------------------------------- /app/route-containers/home/home.component.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacob-ebey/remix-ecommerce/HEAD/app/route-containers/home/home.component.tsx -------------------------------------------------------------------------------- /app/route-containers/home/home.server.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacob-ebey/remix-ecommerce/HEAD/app/route-containers/home/home.server.ts -------------------------------------------------------------------------------- /app/route-containers/layout/layout.component.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacob-ebey/remix-ecommerce/HEAD/app/route-containers/layout/layout.component.tsx -------------------------------------------------------------------------------- /app/route-containers/layout/layout.server.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacob-ebey/remix-ecommerce/HEAD/app/route-containers/layout/layout.server.ts -------------------------------------------------------------------------------- /app/route-containers/pdp/pdp.component.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacob-ebey/remix-ecommerce/HEAD/app/route-containers/pdp/pdp.component.tsx -------------------------------------------------------------------------------- /app/route-containers/pdp/pdp.server.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacob-ebey/remix-ecommerce/HEAD/app/route-containers/pdp/pdp.server.ts -------------------------------------------------------------------------------- /app/route-containers/wishlist/wishlist.component.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacob-ebey/remix-ecommerce/HEAD/app/route-containers/wishlist/wishlist.component.tsx -------------------------------------------------------------------------------- /app/route-containers/wishlist/wishlist.server.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacob-ebey/remix-ecommerce/HEAD/app/route-containers/wishlist/wishlist.server.ts -------------------------------------------------------------------------------- /app/routes/$.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacob-ebey/remix-ecommerce/HEAD/app/routes/$.ts -------------------------------------------------------------------------------- /app/routes/$lang/$.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacob-ebey/remix-ecommerce/HEAD/app/routes/$lang/$.ts -------------------------------------------------------------------------------- /app/routes/$lang/cart.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacob-ebey/remix-ecommerce/HEAD/app/routes/$lang/cart.ts -------------------------------------------------------------------------------- /app/routes/$lang/index.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacob-ebey/remix-ecommerce/HEAD/app/routes/$lang/index.ts -------------------------------------------------------------------------------- /app/routes/$lang/product.$slug.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacob-ebey/remix-ecommerce/HEAD/app/routes/$lang/product.$slug.ts -------------------------------------------------------------------------------- /app/routes/$lang/search.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacob-ebey/remix-ecommerce/HEAD/app/routes/$lang/search.ts -------------------------------------------------------------------------------- /app/routes/$lang/wishlist.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacob-ebey/remix-ecommerce/HEAD/app/routes/$lang/wishlist.ts -------------------------------------------------------------------------------- /app/routes/actions/checkout.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacob-ebey/remix-ecommerce/HEAD/app/routes/actions/checkout.ts -------------------------------------------------------------------------------- /app/routes/actions/set-language.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacob-ebey/remix-ecommerce/HEAD/app/routes/actions/set-language.ts -------------------------------------------------------------------------------- /app/routes/api/image.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacob-ebey/remix-ecommerce/HEAD/app/routes/api/image.ts -------------------------------------------------------------------------------- /app/routes/cart.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacob-ebey/remix-ecommerce/HEAD/app/routes/cart.ts -------------------------------------------------------------------------------- /app/routes/index.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacob-ebey/remix-ecommerce/HEAD/app/routes/index.ts -------------------------------------------------------------------------------- /app/routes/product.$slug.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacob-ebey/remix-ecommerce/HEAD/app/routes/product.$slug.ts -------------------------------------------------------------------------------- /app/routes/search.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacob-ebey/remix-ecommerce/HEAD/app/routes/search.ts -------------------------------------------------------------------------------- /app/routes/wishlist.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacob-ebey/remix-ecommerce/HEAD/app/routes/wishlist.ts -------------------------------------------------------------------------------- /app/session.server.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacob-ebey/remix-ecommerce/HEAD/app/session.server.ts -------------------------------------------------------------------------------- /app/styles/global.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacob-ebey/remix-ecommerce/HEAD/app/styles/global.css -------------------------------------------------------------------------------- /app/translations.server.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacob-ebey/remix-ecommerce/HEAD/app/translations.server.tsx -------------------------------------------------------------------------------- /app/utils/redirect.server.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacob-ebey/remix-ecommerce/HEAD/app/utils/redirect.server.ts -------------------------------------------------------------------------------- /app/utils/use-no-flash.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacob-ebey/remix-ecommerce/HEAD/app/utils/use-no-flash.ts -------------------------------------------------------------------------------- /app/utils/use-scroll-swipe.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacob-ebey/remix-ecommerce/HEAD/app/utils/use-scroll-swipe.ts -------------------------------------------------------------------------------- /cypress.config.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacob-ebey/remix-ecommerce/HEAD/cypress.config.ts -------------------------------------------------------------------------------- /cypress/e2e/cart.cy.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacob-ebey/remix-ecommerce/HEAD/cypress/e2e/cart.cy.ts -------------------------------------------------------------------------------- /cypress/e2e/language.cy.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacob-ebey/remix-ecommerce/HEAD/cypress/e2e/language.cy.ts -------------------------------------------------------------------------------- /cypress/e2e/search.cy.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacob-ebey/remix-ecommerce/HEAD/cypress/e2e/search.cy.ts -------------------------------------------------------------------------------- /cypress/e2e/wishlist.cy.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacob-ebey/remix-ecommerce/HEAD/cypress/e2e/wishlist.cy.ts -------------------------------------------------------------------------------- /cypress/fixtures/example.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacob-ebey/remix-ecommerce/HEAD/cypress/fixtures/example.json -------------------------------------------------------------------------------- /cypress/parallel-weights.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacob-ebey/remix-ecommerce/HEAD/cypress/parallel-weights.json -------------------------------------------------------------------------------- /cypress/plugins/index.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacob-ebey/remix-ecommerce/HEAD/cypress/plugins/index.js -------------------------------------------------------------------------------- /cypress/support/commands.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacob-ebey/remix-ecommerce/HEAD/cypress/support/commands.js -------------------------------------------------------------------------------- /cypress/support/e2e.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacob-ebey/remix-ecommerce/HEAD/cypress/support/e2e.js -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacob-ebey/remix-ecommerce/HEAD/docker-compose.yml -------------------------------------------------------------------------------- /fly.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacob-ebey/remix-ecommerce/HEAD/fly.toml -------------------------------------------------------------------------------- /multi-reporter-config.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacob-ebey/remix-ecommerce/HEAD/multi-reporter-config.json -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacob-ebey/remix-ecommerce/HEAD/package.json -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacob-ebey/remix-ecommerce/HEAD/public/favicon.ico -------------------------------------------------------------------------------- /public/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Disallow: 3 | -------------------------------------------------------------------------------- /remix.config.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacob-ebey/remix-ecommerce/HEAD/remix.config.js -------------------------------------------------------------------------------- /remix.env.d.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacob-ebey/remix-ecommerce/HEAD/remix.env.d.ts -------------------------------------------------------------------------------- /tailwind.config.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacob-ebey/remix-ecommerce/HEAD/tailwind.config.js -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacob-ebey/remix-ecommerce/HEAD/tsconfig.json --------------------------------------------------------------------------------