Giter Club home page Giter Club logo

faststore's Introduction

Faststore

FastStore v2

Fullstack ecommerce toolkit

FastStore is a fullstack toolkit based on React that helps developers build Performant, Stable, SEO and Analytics ready ecommerces in a matter of days.

  • Performance: Keep yourself calm. We use strict budgets to ensure our libs are always light and fast.
  • Stability: Generate your pages ahead by using a Jamstack ready toolkit.
  • SEO/Analytics: Connect to your favorite analytics provider.
  • Freedom: Use our API/SDK/UI components to connect, manage and display your ecommerce using Next.JS, a powerful React framework.
  • Speed: Customize our starter to fit your needs. Do not waste time creating tests, thinking about architecture or infrastructure, it's all taken care of.

Getting started

Check out the docs to quickstart from our official starter and start creating.

Official Starter

  • NextJS: FastStore Starter for a generic store.

Learn

Check out our Overview, How-to Guides, API References and Glossary to deep dive in the world of building FastStores.

Contributing

This is still a work in progress, however, if you are also an adventurous person, you can read the code and have some fun!

Getting help

If you find any issues on the project you would like to report, please create an issue on the repository. If you have a question, idea, or want to show us something cool you have built, feel free to create a discussion.

Packages

Package Description Status
@faststore/core Bundles FastStore source code, including the starter for FatsStore projects: starter store. It contains three sub-packages, Components, SDK, and API, which handle the starter.) npm version size minzip
@faststore/ui Exports basic Store components. Check out our documentation npm version size minzip
@faststore/sdk Exports basic logic hooks for creating your custom ecommerce npm version size minzip tree shaking tree shaking
@faststore/api Connect your site to your ecommerce provider npm version

License

Licensed under the MIT license

faststore's People

Contributors

arthurtriis1 avatar beatrizmaselli avatar carlacosenza avatar carolinamenezes avatar cezar-guimaraes avatar dependabot[bot] avatar dhasuda avatar eduardoformiga avatar emersonlaurentino avatar georgebrindeiro avatar gmantiqueira avatar guifromrio avatar gvc avatar hellofanny avatar icazevedo avatar igorbrasileiro avatar jgfidelis avatar juaresba avatar kaisermann avatar lariciamota avatar lbebber avatar lucasfp13 avatar lucis avatar mariana-caetano avatar mateuspontes avatar pedroantunescosta avatar tlgimenes avatar victorhmp avatar victoriamolgado avatar viniagostini avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

faststore's Issues

i18n

How to use i18n in gatsby without harming performance

RC

This issue is being resolved in #50

Metric of component based performance.

How to bring feedback to the developers their components ruined performance and how will we disable the installation of this component into the stores

Image Progressive loading

We should make the product image progressive load with the same height/width as in product summary so that in navigation we display the image right away

Passthrough cache

While receiving a request, we need to revalidade the json based on the query before returning the data, so when the query changes we don't break the front end and don't need to regenerate the whole jsons database

gatsby-plugin-vtex-rc

For the MVP, RC should be a gatsby-plugin that can be developed maintained independently. However, gatsby-theme-vtex should always include it

Validate build storage design

Today we are creating one bucket per project to be built. Example storecomponents.store has a bucket where is saves the static assets gen per build in a structure git branch alike, e.g: master/public, branch-1/public, branch-2/public, etc...

Is this method ok? Are we gonna use S3, a S3 wrapper or other repo / filesystem method? This should be validated with @vtex/io-infra and @Reliability teams.

Develop and validate build pipeline.

We should validate if Jenkins attend our constraints.

  • 3000+ tenants asking for build with builds executed very fast.

In case jenkins doesn't attend we could have a plan b with kafka consumers or other pipeline frameworks like drone IO, circle CI, tekton pipelines, jenkins X, etc...

Data Fetching

Things we would like to discuss

  • Should data fetching be co-locate with components ? (0)
  • Should we split data fetching from state management ? (1)
  • Is it ok to explicitly split sync and async data ? (2)
  • Is using graphql ok for data fetching ? (3)
  • Should we expose a store sdk (useSku, useOrderForm) instead of our graphql layer ? (4)
  • Which libraries would you like to use ? (Apollo, swr, graphql-request, graphql-anywhere, urql ) (5)

Any other comment ?

Lazy Below the fold page

We should check if it's possible to return only the above the fold page without harming performance (layout shift)

Loading State

Ok, so this is a big one.

Sooner or later, our app will have to deal with loading state. Currently, there are two main ways of dealing with loading state in your app. The first design pattern is to have a dedicated component that Previews the final state of another component. This design pattern is common in post-suspense era components, where you need to provide a fallback component to React's <Suspense/> component. An example is:

<Suspense fallback={<Preview/>}>
   <ActualComponent/ >
<Suspense/>

The problem with this approach is that the Preview component needs to be in sync with and needs to understand all loading states of the ActualComponent.

The second approach is to craft the loading state into the ActualComponent itself so that when it receives an isLoading prop ActualComponent renders it's loading state. This method is endorsed by react-loading-skeleton library.

After reading the react-loading-skeleton library, I tried to implement their pattern for previewing the product summary's price. The result was a noticeable reduction in TBT score.
This reduction happens mainly for two reasons:

  1. When adding loading state into the component, the loading state is rendered by the leafs in the react tree, what makes the browser to run all of the component's code on hydration. If we use the Preview component the react tree is shallower
  2. react-loading-skeleton computes and adjusts it's size to it's parent element, what adds more CPU intensive work to the first hydration

The conclusion we can get from these results is that we should try to make the loading state happens as early as possible for avoiding the browser to parse unnecessary JS. However, don't try making a complex loading state. It's ok to break the loading state into smaller, cohesive loading states.

Progressive builds

Is it possible to build only some pages and add the result to a current build ?

Support incremental builds.

Is it possible to build only some pages and add the result to a current build ?

We should only build the files that have changed. Could Jenkins or other CI pipeline framework attend us?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.