Build a brand new website for Positive Grid by a ecommerce solution called Bigcommerce that mainly focus on front-end.
- Single feature should have their own developing branch.
- Some features had been developed but not going live soon until the idea has been approved by marketing team member.
- Website needs to be updated and deployed as fast as possible.
- First step is always checkouting a new branch from master.
- Run `git rebase prod-branch` before merging feature branch into stage branch or prod. branch.
- Don't directly merge stage branch into prod. branch.
- You can treat stage branch as a pre-prod. branch, but one thing you should be noticed that not all features which has been merged into stage are becoming part of our official release.
In order to increase purchase, we had to find a way that our customers can access our web store easily inside app.
A code which is written in sub-pub pattern to match a maximum height value of individual product item in the same row.
A marketing team member can access BC (Bigcommerce)'s backend, edit essential text, and click save, allowing the promotion bar to update immediately without requiring additional deployment. This capability was not originally a feature in BC.
Marketing team needs a tool that can quickly read, set and update company's product price during every promotion era.
One project involves layout design and interactive development for a gaming-type website, covering sections like event pages, deposits and withdrawals, login/logout, game entry, sports news, and more.
Be assigned as a pioneer to manage the integration task for our latest system among other projects, handling both the front-end implementation and its integration with the back-end.
By the way, I also do the design job since it was an internal tool.
- The state is always up-to-date with backend even when create/update/delete operation has been triggered.
- Allow user to auto sign in if browser has been permitted to store his/her password.
- Power visual for understanding which promotion is on live and what is next promotion.
- You can easily calculate a product price for a user who could has any combination of company's early product before.
- Take advantage of the power of Webpack for packaging web service in dev and prod. environment instead of directly using CRA.
- React-Redux best practice (e.g. layout, route and page as component for more flexibility.)
- Separate Redux's mapStateToProps and mapDispatchToProps from every component in order to make it easy to understand.
- Implement React's design pattern such as compound, render-props and context api to build reuseable and clear component.
- Use module pattern for Redux.
- Auto sign in with Credential Management API.
- Encapsulate axios
- Use nginx as static file server in production environment.
- JSON-server for serving a mock data.
- Google OAuth 2.0
- Best practice of Node/Express with ES6 syntax(e.g. self-contained components as file structure, bind API at router level).
- Every route has implemented Redis as cache server to reduce DB's query operation.
- Thanks to Redis, no extra DB query command is executed when post/update/delete router has been called and still can return a full list of promotion.
- Use NGINX as a reverse proxy.
- Use Docker-compose to run dev on local
- Multi-container structure
- Use $(git rev-parse HEAD) to tag container in order to track version.
- K8S
- Travis
- AWS ECS
- GCP GKE
- Check existing API and define new API spec.
- Define a API response's data structure.
- Deal with Authorization.
-> database
-> front-end
- Build API router based on sequence diagram (Write schema and resolve to create graphql-server)
- Build a mock data and return response.
- Integrate 3rd API if needed.
- Setup DB
- Connect to dev/prod DB
- Build model classes
- Write seed data into DB
- Access data @API level and replace mock data
- Run unit test to api
- Build Webpack
- Build Redux Store to host state
- Build Reducer and Set initial state
- Build Action and connect to backend API(or Mock data)
- Display data in component
- Build unit component Button, Progress
- Define Props Parameter
- Decide where to call redux dispatch function
- Based on design pattern to write component
- Build a functional component
- Start to build state inside component
- Run unit test
- Build dockerfile in dev and prod
- Build docker-compose in dev and prod
- E.g. test login, test post article
- Set up CI tools
- Run Integration Test
- Python 3
- Requests
- BS4
- csv