├── .DS_Store ├── .babelrc ├── .editorconfig ├── .eslintrc ├── .flowconfig ├── .gitignore ├── .nvmrc ├── .prettierignore ├── .prettierrc ├── .travis.yml ├── .vscode └── launch.json ├── CHANGELOG.md ├── ISSUE_TEMPLATE.md ├── LICENSE ├── README.md ├── assets ├── Paypal-button@2x.png ├── Paypal-button@3x.png └── paypal-button.png ├── docs ├── .DS_Store └── index.html ├── flow-typed ├── interface │ └── global.js └── npm │ ├── @types │ ├── antd_vx.x.x.js │ ├── axios_vx.x.x.js │ ├── body-parser_vx.x.x.js │ ├── chalk_vx.x.x.js │ ├── classnames_vx.x.x.js │ ├── compression_vx.x.x.js │ ├── convict_vx.x.x.js │ ├── date-fns_vx.x.x.js │ ├── express-promise-router_vx.x.x.js │ ├── express-rate-limit_vx.x.x.js │ ├── express_vx.x.x.js │ ├── helmet_vx.x.x.js │ ├── history_vx.x.x.js │ ├── jest_vx.x.x.js │ ├── js-base64_vx.x.x.js │ ├── jwt-decode_vx.x.x.js │ ├── lodash.debounce_vx.x.x.js │ ├── lodash.throttle_vx.x.x.js │ ├── popper.js_vx.x.x.js │ ├── react-dom_vx.x.x.js │ ├── react-helmet_vx.x.x.js │ ├── react-motion_vx.x.x.js │ ├── react-redux_vx.x.x.js │ ├── react-router-dom_vx.x.x.js │ ├── react-router-redux_vx.x.x.js │ ├── react-router_vx.x.x.js │ ├── react_vx.x.x.js │ ├── recompose_vx.x.x.js │ ├── redux-thunk_vx.x.x.js │ ├── redux_vx.x.x.js │ ├── serialize-javascript_vx.x.x.js │ ├── smoothscroll-polyfill_vx.x.x.js │ └── webpack_vx.x.x.js │ ├── animate.css_vx.x.x.js │ ├── antd-iconfont_vx.x.x.js │ ├── antd_v3.x.x.js │ ├── antd_vx.x.x.js │ ├── autoprefixer_vx.x.x.js │ ├── axios_v0.18.x.js │ ├── babel-cli_vx.x.x.js │ ├── babel-core_vx.x.x.js │ ├── babel-eslint_vx.x.x.js │ ├── babel-jest_vx.x.x.js │ ├── babel-loader_vx.x.x.js │ ├── babel-plugin-import_vx.x.x.js │ ├── babel-plugin-transform-async-to-generator_vx.x.x.js │ ├── babel-plugin-transform-regenerator_vx.x.x.js │ ├── babel-plugin-transform-remove-console_vx.x.x.js │ ├── babel-polyfill_v6.x.x.js │ ├── babel-polyfill_vx.x.x.js │ ├── babel-preset-babili_vx.x.x.js │ ├── babel-preset-env_vx.x.x.js │ ├── babel-preset-es2015_vx.x.x.js │ ├── babel-preset-flow_vx.x.x.js │ ├── babel-preset-jest_vx.x.x.js │ ├── babel-preset-react-optimize_vx.x.x.js │ ├── babel-preset-react_vx.x.x.js │ ├── babel-preset-stage-0_vx.x.x.js │ ├── babel-preset-stage-2_vx.x.x.js │ ├── babel-register_v6.x.x.js │ ├── babel-register_vx.x.x.js │ ├── body-parser_v1.x.x.js │ ├── chalk_v2.x.x.js │ ├── chalk_vx.x.x.js │ ├── classnames_v2.x.x.js │ ├── clean-webpack-plugin_vx.x.x.js │ ├── codecov_vx.x.x.js │ ├── compression-webpack-plugin_vx.x.x.js │ ├── compression_vx.x.x.js │ ├── connected-react-router_vx.x.x.js │ ├── convict_vx.x.x.js │ ├── coveralls_vx.x.x.js │ ├── cross-env_vx.x.x.js │ ├── css-loader_vx.x.x.js │ ├── css-module-flow_vx.x.x.js │ ├── enzyme-adapter-react-16_vx.x.x.js │ ├── enzyme-to-json_vx.x.x.js │ ├── enzyme_v3.x.x.js │ ├── eslint-plugin-flowtype_vx.x.x.js │ ├── eslint-plugin-react_vx.x.x.js │ ├── eslint_vx.x.x.js │ ├── expose-loader_vx.x.x.js │ ├── express-promise-router_vx.x.x.js │ ├── express-rate-limit_vx.x.x.js │ ├── express_v4.16.x.js │ ├── extract-text-webpack-plugin_vx.x.x.js │ ├── fetch-mock_vx.x.x.js │ ├── file-loader_vx.x.x.js │ ├── flow-bin_v0.x.x.js │ ├── helmet_v3.x.x.js │ ├── history_v4.x.x.js │ ├── history_vx.x.x.js │ ├── html-webpack-plugin_vx.x.x.js │ ├── identity-obj-proxy_vx.x.x.js │ ├── jest-css-modules_vx.x.x.js │ ├── jest-localstorage-mock_vx.x.x.js │ ├── jest_v23.x.x.js │ ├── js-base64_vx.x.x.js │ ├── jsdom_vx.x.x.js │ ├── json-loader_vx.x.x.js │ ├── jwt-decode_vx.x.x.js │ ├── less-loader_vx.x.x.js │ ├── less-vars-to-js_vx.x.x.js │ ├── less_vx.x.x.js │ ├── loadable-components_vx.x.x.js │ ├── lodash.debounce_vx.x.x.js │ ├── lodash.throttle_vx.x.x.js │ ├── mini-css-extract-plugin_vx.x.x.js │ ├── modernizr-webpack-plugin_vx.x.x.js │ ├── modernizr_vx.x.x.js │ ├── moment_v2.x.x.js │ ├── node-sass_vx.x.x.js │ ├── nodemon_vx.x.x.js │ ├── optimize-css-assets-webpack-plugin_vx.x.x.js │ ├── postcss-cssnext_vx.x.x.js │ ├── postcss-focus_vx.x.x.js │ ├── postcss-import_vx.x.x.js │ ├── postcss-load-config_vx.x.x.js │ ├── postcss-loader_vx.x.x.js │ ├── postcss-reporter_vx.x.x.js │ ├── postcss_vx.x.x.js │ ├── precss_vx.x.x.js │ ├── prettier-eslint_vx.x.x.js │ ├── pretty-error_v2.x.x.js │ ├── progress-bar-webpack-plugin_vx.x.x.js │ ├── prop-types_v15.x.x.js │ ├── react-addons-test-utils_v15.x.x.js │ ├── react-bootstrap_vx.x.x.js │ ├── react-helmet_v5.x.x.js │ ├── react-hot-loader_vx.x.x.js │ ├── react-modal_v1.x.x.js │ ├── react-notification_vx.x.x.js │ ├── react-overdrive_vx.x.x.js │ ├── react-redux_v5.x.x.js │ ├── react-router-dom_v4.x.x.js │ ├── react-router-redux_vx.x.x.js │ ├── react-router_v4.x.x.js │ ├── react-router_vx.x.x.js │ ├── react-snap_vx.x.x.js │ ├── react-tap-event-plugin_vx.x.x.js │ ├── react-test-renderer_v16.x.x.js │ ├── recompose_v0.x.x.js │ ├── redux-devtools-extension_v2.x.x.js │ ├── redux-logger_vx.x.x.js │ ├── redux-mock-store_v1.2.x.js │ ├── redux-mock-store_vx.x.x.js │ ├── redux-thunk_vx.x.x.js │ ├── redux_v4.x.x.js │ ├── regenerator-runtime_vx.x.x.js │ ├── rename_vx.x.x.js │ ├── rimraf_v2.x.x.js │ ├── rimraf_vx.x.x.js │ ├── sass-loader_vx.x.x.js │ ├── serialize-javascript_vx.x.x.js │ ├── serve-favicon_vx.x.x.js │ ├── sinon_vx.x.x.js │ ├── smoothscroll-polyfill_v0.x.x.js │ ├── style-loader_vx.x.x.js │ ├── styled-components_v3.x.x.js │ ├── uglifyjs-webpack-plugin_vx.x.x.js │ ├── url-loader_vx.x.x.js │ ├── webpack-bundle-analyzer_vx.x.x.js │ ├── webpack-cli_vx.x.x.js │ ├── webpack-dev-middleware_vx.x.x.js │ ├── webpack-dev-server_vx.x.x.js │ ├── webpack-hot-middleware_vx.x.x.js │ ├── webpack-node-externals_vx.x.x.js │ ├── webpack-require-from_vx.x.x.js │ ├── webpack_vx.x.x.js │ └── workbox-webpack-plugin_vx.x.x.js ├── jsconfig.json ├── nodemon.json ├── package.json ├── preview └── preview.png ├── scripts └── prepareIndexHtml.js ├── src ├── .DS_Store ├── front │ ├── .DS_Store │ ├── Root.js │ ├── components │ │ ├── animatedView │ │ │ ├── AnimatedView.js │ │ │ └── __tests__ │ │ │ │ ├── AnimatedView.test.js │ │ │ │ └── __snapshots__ │ │ │ │ └── AnimatedView.test.js.snap │ │ ├── backToTop │ │ │ ├── BackToTop.js │ │ │ ├── __tests__ │ │ │ │ ├── BackToTop.test.js │ │ │ │ └── __snapshots__ │ │ │ │ │ └── BackToTop.test.js.snap │ │ │ └── backToTopButton │ │ │ │ ├── BackToTopButton.js │ │ │ │ ├── UpIcon.js │ │ │ │ ├── __tests__ │ │ │ │ ├── BackToTopButton.test.js │ │ │ │ └── __snapshots__ │ │ │ │ │ └── BackToTopButton.test.js.snap │ │ │ │ └── styled │ │ │ │ └── WithRightMargin.js │ │ ├── logoutRoute │ │ │ ├── LogoutRoute.js │ │ │ └── __tests__ │ │ │ │ ├── LogoutRoute.test.js │ │ │ │ └── __snapshots__ │ │ │ │ └── LogoutRoute.test.js.snap │ │ ├── privateRoute │ │ │ ├── PrivateRoute.js │ │ │ └── __tests__ │ │ │ │ ├── PrivateRoute.test.js │ │ │ │ └── __snapshots__ │ │ │ │ └── PrivateRoute.test.js.snap │ │ └── scrollToTop │ │ │ ├── ScrollToTop.js │ │ │ └── __tests__ │ │ │ ├── ScrollToTop.test.js │ │ │ └── __snapshots__ │ │ │ └── ScrollToTop.test.js.snap │ ├── config │ │ ├── index.js │ │ ├── navigation.json │ │ └── theme.js │ ├── index.js │ ├── layout │ │ └── mainLayout │ │ │ ├── MainLayout.js │ │ │ ├── __tests__ │ │ │ ├── MainLayout.test.js │ │ │ └── __snapshots__ │ │ │ │ └── MainLayout.test.js.snap │ │ │ ├── index.js │ │ │ └── styled │ │ │ ├── SideMenuLogo.js │ │ │ └── StyledLayout.js │ ├── mock │ │ ├── fakeAPI.json │ │ └── userInfosMock.json │ ├── pages │ │ ├── about │ │ │ ├── About.js │ │ │ ├── __tests__ │ │ │ │ ├── About.test.js │ │ │ │ └── __snapshots__ │ │ │ │ │ └── About.test.js.snap │ │ │ └── index.js │ │ ├── home │ │ │ ├── Home.js │ │ │ ├── __tests__ │ │ │ │ ├── Home.test.js │ │ │ │ └── __snapshots__ │ │ │ │ │ └── Home.test.js.snap │ │ │ └── index.js │ │ ├── login │ │ │ ├── Login.js │ │ │ ├── __tests__ │ │ │ │ └── Login.test.js │ │ │ ├── index.js │ │ │ └── styled │ │ │ │ ├── LoginForm.js │ │ │ │ └── LoginIcon.js │ │ ├── pageNotFound │ │ │ ├── PageNotFound.js │ │ │ ├── __tests__ │ │ │ │ ├── PageNotFound.test.js │ │ │ │ └── __snapshots__ │ │ │ │ │ └── PageNotFound.test.js.snap │ │ │ └── index.js │ │ └── protected │ │ │ ├── Protected.js │ │ │ ├── __tests__ │ │ │ ├── Protected.test.js │ │ │ └── __snapshots__ │ │ │ │ └── Protected.test.js.snap │ │ │ └── index.js │ ├── redux │ │ ├── middleware │ │ │ └── fetchMiddleware.js │ │ ├── modules │ │ │ ├── reducers.js │ │ │ └── userAuth │ │ │ │ ├── __tests__ │ │ │ │ └── userAuth.test.js │ │ │ │ └── index.js │ │ └── store │ │ │ ├── configureStore.dev.js │ │ │ ├── configureStore.js │ │ │ └── configureStore.prod.js │ ├── routes │ │ ├── MainRoutes.js │ │ └── routes.js │ ├── services │ │ ├── API │ │ │ ├── example.js │ │ │ └── fetchTools.js │ │ ├── auth │ │ │ └── index.js │ │ ├── getLocationOrigin │ │ │ └── index.js │ │ └── sw │ │ │ └── registerServiceWorker.js │ ├── statics │ │ ├── index-raw.html │ │ └── index.html │ ├── style │ │ ├── .DS_Store │ │ ├── antd-theme-overrides.less │ │ └── injectGlobalStyles.js │ └── types │ │ ├── antd │ │ └── formHoc │ │ │ └── index.js │ │ ├── react-router │ │ └── index.js │ │ ├── redux │ │ ├── redux-thunk │ │ │ └── index.js │ │ └── userAuth │ │ │ └── index.js │ │ └── user │ │ └── index.js ├── server │ ├── config │ │ ├── development.json │ │ ├── index.js │ │ └── production.json │ ├── lib │ │ ├── asyncWrap.js │ │ └── expressServer.js │ ├── middleware │ │ └── errors.js │ └── server.js └── test │ ├── __mocks__ │ └── fileMock.js │ └── setupTests.js ├── typings.json ├── typings ├── globals │ ├── axios │ │ ├── index.d.ts │ │ └── typings.json │ ├── classnames │ │ ├── index.d.ts │ │ └── typings.json │ ├── jest │ │ ├── index.d.ts │ │ └── typings.json │ ├── less │ │ ├── index.d.ts │ │ └── typings.json │ ├── modernizr │ │ ├── index.d.ts │ │ └── typings.json │ ├── node │ │ ├── index.d.ts │ │ └── typings.json │ ├── popper.js │ │ ├── index.d.ts │ │ └── typings.json │ ├── react-router-dom │ │ ├── index.d.ts │ │ └── typings.json │ ├── react-router │ │ ├── index.d.ts │ │ └── typings.json │ ├── recompose │ │ ├── index.d.ts │ │ └── typings.json │ ├── redux-thunk │ │ ├── index.d.ts │ │ └── typings.json │ ├── redux │ │ ├── index.d.ts │ │ └── typings.json │ └── webpack-dev-server │ │ ├── index.d.ts │ │ └── typings.json ├── index.d.ts └── modules │ ├── react-motion │ ├── index.d.ts │ └── typings.json │ ├── react-redux │ ├── index.d.ts │ └── typings.json │ └── react │ ├── index.d.ts │ └── typings.json ├── webpack.analyze.config.js ├── webpack.dev.config.js ├── webpack.hot.reload.config.js └── webpack.production.config.js /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MacKentoch/react-redux-antdesign-webpack-starter/648405a3cb73cf1c2a5cd62a5e2a1c1cd8f1c412/.DS_Store -------------------------------------------------------------------------------- /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | ["env", { 4 | "modules": false 5 | }], 6 | "react", 7 | "stage-2", 8 | "flow" 9 | ], 10 | "plugins": [ 11 | "loadable-components/babel", 12 | "transform-regenerator", 13 | "transform-async-to-generator", [ 14 | "import", 15 | { 16 | "libraryName": "antd", 17 | "style": true 18 | } 19 | ] 20 | ], 21 | "env": { 22 | "test": { 23 | "presets": [ 24 | ["env", { 25 | "modules": "commonjs" 26 | }], 27 | "react", 28 | "stage-2", 29 | "flow", 30 | "jest" 31 | ], 32 | "plugins": [ 33 | "loadable-components/babel", 34 | "transform-regenerator", 35 | "transform-async-to-generator" 36 | ] 37 | }, 38 | "production": { 39 | "presets": [ 40 | "react-optimize" 41 | ], 42 | "plugins": ["transform-remove-console"], 43 | "comments": false 44 | } 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | indent_style = space 5 | indent_size = 2 6 | end_of_line = lf 7 | charset = utf-8 8 | trim_trailing_whitespace = true 9 | insert_final_newline = true 10 | 11 | [*.md] 12 | trim_trailing_whitespace = false 13 | -------------------------------------------------------------------------------- /.flowconfig: -------------------------------------------------------------------------------- 1 | [ignore] 2 | 3 | [include] 4 | 5 | [libs] 6 | ./flow-typed 7 | 8 | [options] 9 | module.name_mapper='.*\(.css\)' -> 'CSSModule' 10 | suppress_comment= \\(.\\|\n\\)*\\$FlowIgnore 11 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | .idea/ 3 | *.log 4 | 5 | build/ 6 | dist/ 7 | public/assets/ 8 | /coverage 9 | /.nyc_output 10 | yarn-error.log 11 | -------------------------------------------------------------------------------- /.nvmrc: -------------------------------------------------------------------------------- 1 | 8 2 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | **/*.json 2 | **/*.txt 3 | **/*.xml 4 | **/*.svg 5 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "semi": true, 3 | "trailingComma": "all", 4 | "bracketSpacing": true, 5 | "jsxBracketSameLine": false, 6 | "singleQuote": true, 7 | "overrides": [], 8 | "printWidth": 80, 9 | "useTabs": false, 10 | "tabWidth": 2, 11 | "parser": "babylon" 12 | } 13 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - 8 4 | sudo: false 5 | cache: 6 | yarn: true 7 | directories: 8 | - node_modules 9 | before_install: 10 | - export DISPLAY=:99.0 11 | - sh -e /etc/init.d/xvfb start 12 | before_script: 13 | - npm install 14 | after_success: npm run test 15 | -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "type": "node", 6 | "request": "launch", 7 | "name": "Launch minimalist prod like server", 8 | "program": "${workspaceRoot}/src/server/index.js" 9 | }, 10 | { 11 | "type": "node", 12 | "request": "launch", 13 | "name": "Launch hot reload server", 14 | "program": "${workspaceRoot}/server.hot.reload.js" 15 | }, 16 | { 17 | "type": "chrome", 18 | "request": "launch", 19 | "name": "Launch Chrome (for dev/prod bundles)", 20 | "url": "http://localhost:8082", 21 | "webRoot": "${workspaceRoot}" 22 | }, 23 | { 24 | "type": "chrome", 25 | "request": "launch", 26 | "name": "Launch Chrome (for hot reload)", 27 | "url": "http://localhost:3000", 28 | "webRoot": "${workspaceRoot}" 29 | } 30 | ] 31 | } -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # v1.0.1 2 | - add Typescript types (VSCode users should love) 3 | - fix product bundle issue (fixed: see [#5060](https://github.com/ant-design/ant-design/issues/5060)) 4 | 5 | # v1.0.0 6 | - initial version 7 | -------------------------------------------------------------------------------- /ISSUE_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | ### Version 2 | 1.0.0 3 | 4 | ### Navigator 5 | Chrome 59 | Safari 10.1.2 ... 6 | 7 | ### OS 8 | 9 | MacOS 10.12 (Sierra)... 10 | 11 | ### Steps to reproduce 12 | 1. 13 | 2. 14 | 3. 15 | 16 | ### Expected behavior 17 | What should happen 18 | 19 | ### Actual behavior 20 | What is happening 21 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2018 Erwan DATIN 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /assets/Paypal-button@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MacKentoch/react-redux-antdesign-webpack-starter/648405a3cb73cf1c2a5cd62a5e2a1c1cd8f1c412/assets/Paypal-button@2x.png -------------------------------------------------------------------------------- /assets/Paypal-button@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MacKentoch/react-redux-antdesign-webpack-starter/648405a3cb73cf1c2a5cd62a5e2a1c1cd8f1c412/assets/Paypal-button@3x.png -------------------------------------------------------------------------------- /assets/paypal-button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MacKentoch/react-redux-antdesign-webpack-starter/648405a3cb73cf1c2a5cd62a5e2a1c1cd8f1c412/assets/paypal-button.png -------------------------------------------------------------------------------- /docs/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MacKentoch/react-redux-antdesign-webpack-starter/648405a3cb73cf1c2a5cd62a5e2a1c1cd8f1c412/docs/.DS_Store -------------------------------------------------------------------------------- /docs/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
5 |