Nic Juice 2 Japan (NJ2JP):
E-commerce store providing nicotine vape juice to Japanese customers faster than anyone.
- Deployed using Serverless | AWS Lambda | AWS S3.
- Backend API = GraphQL.
- Database utilizes a Mongo Cluster with 3 nodes. 2 Full + 1 Arbiter.
- Client-side API requests are generated from Apollo Client wrapped components.
- Other Client-side API requests are generated using redux-sagas and the npm library api-sauce that adds an abstraction layer to axios.
- The rest of the app sits on React.js & React Router(V3)* (with Code splitting), Redux & Redux Persist (with WebStorage).
- ☝🏼 That site is under Heavy Development and may at times, not be working. Will update here once availability is 100%.
yarnto install dependencies
npm startfor development server
npm run buildfor production server
touch .gitignoreI use a global
.gitignore_globalfile so you should add your own so as not to push
node_modules/once you've completed
brew install libpngfor webpack image loader (image-webpack-loader see here)
- I Highly recommend running
npm update --save||
yarn upgradeto update package.json &/or yarn.lock before running
npm run build.
- You may need to do a
brew updatefor some of the webpack image loaders to properly work.
- If you're following our strategy and deploying the static site to Amazon S3, then you can also run
deploy-to-s3. Be sure to modify the bucket name.
webpack version 2.0.
- Node engine explicitly defined in
- If you are not compliant with these versions, it's HIGHLY recommended you update.
* [fixer.io](http://fixer.io) | Exchange Rates. * [taxratesapi.avalara.com](http://taxratesapi.avalara.com/) | Tax Rates. * [ipinfo.io](http://ipinfo.io) | IP address & Geolocation. * [Auth0](http://auth0.com) | User Management | Auth0 solutions. * [Square](http://squareup.com) | Payment Services via Connect API. * [Market Hero](http://markethero.com) | Marketing API. * [Serverless](http://serverless.com) | Framework covering AWS Lambda. * [AWS SES](https://aws.amazon.com/ses/) | Email Notifications. * [AWS SNS](https://aws.amazon.com/sns/) | Receiving Backend Push Notifications. * [AWS S3](https://aws.amazon.com/s3/) | Static asset hosting. * [AWS Route 53](https://aws.amazon.com/route53/) | DNS routing. * [AWS CloudFront](https://aws.amazon.com/cloudfront/) | Latency reduction via CDN. * [AWS Lambda](https://aws.amazon.com/lambda/) | All Backend Services. * [AWS Api-Gateway](https://aws.amazon.com/api-gateway/) | HTTP endpoints for Lambda services.
Libraries & Packages
* Uses _recompose_ for customized Higher Order Component implementation. * Uses _apisauce_ for API calls. * Uses _react-router-redux_ for dispatching route changes & tracking nav history via redux. * Uses _apollo-grpahql_ for providing API calls directly to componenents. * Uses _redux-persist_ for long term browser caching. * Uses _redux-sagas_ for dispatching and handling async actions. * Uses _redux_sauce_ for creating reducers. * Uses _redux-logger_ for informative dev. workflow @ devtools console. * Uses _redux-devtools-extension_ for dev. workflow @ devtools console. * Uses _babel-node_ for latest ECMA version transpiling of dev-backend and Hot reloading. * Uses _BEM_ syntax styling for classNames. * Uses _Airbnb Style Guide_.
* This bp's Redux reducer methods rely on the developer to customize the logic to maintain immutability of state. This was done _intentionally_ to strengthen developers abilities in manipulating state. If this feels cumbersome, I highly recommend using _seamless-immutable_ (refs below) to outsource this process in a very clean, and simple way.
* [apisauce](https://github.com/skellock/apisauce) * [redux-logger](https://github.com/evgenyrodionov/redux-logger) * [redux-devtools-extension](https://github.com/zalmoxisus/redux-devtools-extension) * [redux-saga](https://github.com/yelouafi/redux-saga) * [ramda](https://github.com/ramda)
* [redux-sauce](https://github.com/skellock/reduxsauce) * [seamless-immutable](https://github.com/rtfeldman/seamless-immutable)
Setting up S3 automation:
* See setup instructions [HERE](https://github.com/TobiahRex/nj2jp/blob/master/readmeFiles/s3Automation.md).
Data Model Documentation:
* [Product Model](https://github.com/lakshmantgld/nj2jp/blob/master/readmeFiles/productSchema.md) * [User Model](https://github.com/lakshmantgld/nj2jp/blob/master/readmeFiles/userSchema.md)
Important Launch Notes:
- Modifiy LAMBDA_GRAPHQL env variable throughout
src/application to point to the
productiondatabase & lambda endpoint.
- Modify the serverless MONGO_URI env variable inside the AWS console dashboard.