diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..32df2f4 --- /dev/null +++ b/.eslintignore @@ -0,0 +1,7 @@ +build/ +public/ +**/coverage/ +**/node_modules/ +**/*.min.js +*.config.js +.*lintrc.js diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 0000000..f9362e4 --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,122 @@ +module.exports = { + env: { + browser: true, + es2021: true, + }, + extends: [ + 'plugin:react/recommended', + 'airbnb', + 'airbnb/hooks', + 'plugin:import/errors', + 'plugin:import/warnings', + 'plugin:import/typescript', + 'plugin:@typescript-eslint/recommended', + 'plugin:@typescript-eslint/recommended-requiring-type-checking', + 'prettier', + ], + parser: '@typescript-eslint/parser', + parserOptions: { + ecmaFeatures: { + jsx: true, + }, + ecmaVersion: 12, + project: './tsconfig.eslint.json', + sourceType: 'module', + tsconfigRootDir: __dirname, + }, + plugins: [ + '@typescript-eslint', + 'import', + 'jsx-a11y', + 'prefer-arrow', + 'react', + 'react-hooks', + ], + root: true, + rules: { + // occur error in `import React from 'react'` with react-scripts 4.0.1 + 'no-use-before-define': 'off', + '@typescript-eslint/no-use-before-define': [ + 'error', + ], + 'lines-between-class-members': [ + 'error', + 'always', + { + exceptAfterSingleLine: true, + }, + ], + 'no-void': [ + 'error', + { + allowAsStatement: true, + }, + ], + 'padding-line-between-statements': [ + 'error', + { + blankLine: 'always', + prev: '*', + next: 'return', + }, + ], + '@typescript-eslint/no-unused-vars': [ + 'error', + { + 'vars': 'all', + 'args': 'after-used', + 'argsIgnorePattern': '_', + 'ignoreRestSiblings': false, + 'varsIgnorePattern': '_', + }, + ], + 'import/extensions': [ + 'error', + 'ignorePackages', + { + js: 'never', + jsx: 'never', + ts: 'never', + tsx: 'never', + }, + ], + 'prefer-arrow/prefer-arrow-functions': [ + 'error', + { + disallowPrototype: true, + singleReturnOnly: false, + classPropertiesAllowed: false, + }, + ], + 'react/jsx-filename-extension': [ + 'error', + { + extensions: ['.jsx', '.tsx'], + }, + ], + 'react/jsx-props-no-spreading': [ + 'error', + { + html: 'enforce', + custom: 'enforce', + explicitSpread: 'ignore', + }, + ], + 'react/react-in-jsx-scope': 'off', + }, + overrides: [ + { + 'files': ['*.tsx'], + 'rules': { + 'react/prop-types': 'off', + }, + }, + ], + settings: { + 'import/resolver': { + node: { + paths: ['src'], + }, + }, + }, +}; diff --git a/.github/workflows/deploy-dev.yml b/.github/workflows/deploy-dev.yml new file mode 100644 index 0000000..e83c472 --- /dev/null +++ b/.github/workflows/deploy-dev.yml @@ -0,0 +1,35 @@ +name: deploy to netlify - dev + +on: + push: + branches: [ develop ] + +jobs: + build: + runs-on: ubuntu-latest + + strategy: + matrix: + node-version: [12.x] + + steps: + - uses: actions/checkout@v2 + + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v2 + with: + node-version: ${{ matrix.node-version }} + cache: 'yarn' + + - run: yarn + - run: yarn build + + - name: Codecov + uses: codecov/codecov-action@v2.1.0 + + - name: Deploy static content to netlify + env: + NETLIFY_AUTH_TOKEN: "6_RbCFxs3Y--PPpYAyog9EIu_0W6xbsk_rfEBgMLsBw" + NETLIFY_SITE_ID: "8ad84bcd-efb4-4fca-9c3a-9a61585a0d1d" + run: netlify deploy --prod + diff --git a/.gitignore b/.gitignore index 0fbd0e0..ad0652a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,3 @@ - # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. # dependencies @@ -19,9 +18,136 @@ .env.test.local .env.production.local + +# Logs +logs +*.log npm-debug.log* yarn-debug.log* yarn-error.log* +lerna-debug.log* + +# Diagnostic reports (https://nodejs.org/api/report.html) +report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage +*.lcov + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# Snowpack dependency directory (https://snowpack.dev/) +web_modules/ + +# TypeScript cache +*.tsbuildinfo + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Microbundle cache +.rpt2_cache/ +.rts2_cache_cjs/ +.rts2_cache_es/ +.rts2_cache_umd/ + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variables file +.env +.env.test + +# parcel-bundler cache (https://parceljs.org/) +.cache +.parcel-cache + +# Next.js build output +.next +out + +# Nuxt.js build / generate output +.nuxt +dist + +# Gatsby files +.cache/ +# Comment in the public line in if your project uses Gatsby and not Next.js +# https://nextjs.org/blog/next-9-1#public-directory-support +# public + +# vuepress build output +.vuepress/dist + +# Serverless directories +.serverless/ + +# FuseBox cache +.fusebox/ + +# DynamoDB Local files +.dynamodb/ + +# TernJS port file +.tern-port + +# Stores VSCode versions used for testing VSCode extensions +.vscode-test + +# yarn v2 +.yarn/cache +.yarn/unplugged +.yarn/build-state.yml +.yarn/install-state.gz +.pnp.* + + +### https://raw.github.com/github/gitignore/218a941be92679ce67d0484547e3e142b2f5f6f0/Global/VisualStudioCode.gitignore + +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +*.code-workspace -/archive +# Local History for Visual Studio Code +.history/ +# Netlify +.netlify diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..4510dc5 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,5 @@ +{ + "singleQuote": true, + "trailingComma": "all", + "endOfLine": "auto" +} diff --git a/.stylelintrc.js b/.stylelintrc.js new file mode 100644 index 0000000..5d600c8 --- /dev/null +++ b/.stylelintrc.js @@ -0,0 +1,15 @@ +module.exports = { + extends: [ + 'stylelint-config-standard', + 'stylelint-config-recess-order', + ], + plugins: [ + 'stylelint-order', + ], + ignoreFiles: [ + '**/node_modules/**', + ], + rules: { + 'string-quotes': 'single', + }, +}; diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..6179b1d --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,20 @@ +{ + // See http://go.microsoft.com/fwlink/?LinkId=827846 to learn about workspace recommendations. + // Extension identifier format: ${publisher}.${name}. Example: vscode.csharp + + // List of extensions which should be recommended for users of this workspace. + "recommendations": [ + "CoenraadS.bracket-pair-colorizer-2", + "dbaeumer.vscode-eslint", + "donjayamanne.githistory", + "esbenp.prettier-vscode", + "msjsdiag.debugger-for-chrome", + "oderwat.indent-rainbow", + "stylelint.vscode-stylelint", + "VisualStudioExptTeam.vscodeintellicode", + "vscode-icons-team.vscode-icons", + "wix.vscode-import-cost" + ], + // List of extensions recommended by VS Code that should not be recommended for users of this workspace. + "unwantedRecommendations": [] +} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..6dd2366 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,39 @@ +{ + "css.validate": false, + "less.validate": false, + "scss.validate": false, + "editor.codeActionsOnSave": { + "source.fixAll.eslint": true, + "source.fixAll.stylelint": true + }, + "editor.defaultFormatter": "esbenp.prettier-vscode", + "editor.formatOnSave": false, + "[graphql]": { + "editor.formatOnSave": true + }, + "[javascript]": { + "editor.formatOnSave": true + }, + "[javascriptreact]": { + "editor.formatOnSave": true + }, + "[json]": { + "editor.formatOnSave": true + }, + "[typescript]": { + "editor.formatOnSave": true + }, + "[typescriptreact]": { + "editor.formatOnSave": true + }, + "editor.lineNumbers": "on", + "editor.rulers": [ + 80 + ], + "editor.wordWrap": "on", + "eslint.packageManager": "yarn", + "files.insertFinalNewline": true, + "files.trimTrailingWhitespace": true, + "npm.packageManager": "yarn", + "typescript.enablePromptUseWorkspaceTsdk": true +} diff --git a/CNAME b/CNAME deleted file mode 100644 index 1f55250..0000000 --- a/CNAME +++ /dev/null @@ -1 +0,0 @@ -hashcloak.com \ No newline at end of file diff --git a/craco.config.js b/craco.config.js new file mode 100644 index 0000000..2835bdc --- /dev/null +++ b/craco.config.js @@ -0,0 +1,7 @@ +module.exports = { + style: { + postcss: { + plugins: [require('tailwindcss'), require('autoprefixer')], + }, + }, +}; diff --git a/netlify.toml b/netlify.toml new file mode 100644 index 0000000..391ca16 --- /dev/null +++ b/netlify.toml @@ -0,0 +1,3 @@ +[build] +command = "yarn build" +publish = "build" diff --git a/package.json b/package.json index 1bfc9cb..06f735b 100644 --- a/package.json +++ b/package.json @@ -1,38 +1,49 @@ { - "name": "hashcloak.com", + "name": "hashcloak", "version": "0.1.0", "private": true, - "homepage": "https://hashcloak.com/", "dependencies": { - "@material-ui/core": "^4.11.0", + "@craco/craco": "^6.4.3", + "@reduxjs/toolkit": "^1.8.0", + "@socketlabs/email": "^1.2.1", "@testing-library/jest-dom": "^5.11.4", "@testing-library/react": "^11.1.0", "@testing-library/user-event": "^12.1.10", - "@typeform/embed": "latest", - "@types/jest": "^26.0.15", - "@types/node": "^12.0.0", - "@types/react": "^16.9.53", - "@types/react-dom": "^16.9.8", - "@types/react-router-dom": "^5.1.6", - "@types/typeform__embed": "^0.22.2", - "gh-pages": "^3.1.0", - "react": "^17.0.1", - "react-calendly": "^1.3.0", - "react-dom": "^17.0.1", - "react-router-dom": "^5.2.0", - "react-scripts": "4.0.0", - "react-typeform-embed": "^0.2.1", - "typeface-inter": "^1.1.13", - "typescript": "^4.0.3", - "web-vitals": "^0.2.4" + "@types/axios": "^0.14.0", + "@types/jest": "^27.0.1", + "@types/node": "^16.7.10", + "@types/react": "^17.0.19", + "@types/react-dom": "^17.0.9", + "axios": "^0.25.0", + "dotenv": "^15.0.0", + "flowbite": "^1.4.7", + "react": "^17.0.2", + "react-burger-menu": "^3.0.6", + "react-calendly": "^3.0.3", + "react-dom": "^17.0.2", + "react-redux": "^7.2.6", + "react-router-dom": "^5.3.0", + "react-router-hash-link": "^2.4.3", + "react-scripts": "4.0.3", + "redux": "^4.1.2", + "typescript": "^4.4.3", + "web-vitals": "^2.1.0" }, "scripts": { - "start": "react-scripts start", - "build": "react-scripts build", - "predeploy": "npm run build src", - "deploy": "gh-pages -d build", - "test": "react-scripts test", - "eject": "react-scripts eject" + "start": "craco start", + "build": "craco build", + "test": "craco test", + "eject": "react-scripts eject", + "fix": "npm run -s format && npm run -s lint:fix", + "format": "prettier --write --loglevel=warn 'src/**/*.{js,jsx,ts,tsx,gql,graphql,json}'", + "lint": "npm run -s lint:style; npm run -s lint:es", + "lint:fix": "npm run -s lint:style:fix && npm run -s lint:es:fix", + "lint:es": "eslint 'src/**/*.{js,jsx,ts,tsx}'", + "lint:es:fix": "eslint --fix 'src/**/*.{js,jsx,ts,tsx}'", + "lint:conflict": "eslint-config-prettier 'src/**/*.{js,jsx,ts,tsx}'", + "lint:style": "stylelint 'src/**/*.{css,less,sass,scss}'", + "lint:style:fix": "stylelint --fix 'src/**/*.{css,less,sass,scss}'", + "preinstall": "typesync || :" }, "eslintConfig": { "extends": [ @@ -51,5 +62,35 @@ "last 1 firefox version", "last 1 safari version" ] + }, + "devDependencies": { + "@types/autoprefixer": "^9.7.2", + "@types/prettier": "^2.3.2", + "@types/react-burger-menu": "^2.8.3", + "@types/react-redux": "^7.1.23", + "@types/react-router-dom": "^5.3.3", + "@types/react-router-hash-link": "^2.4.5", + "@types/stylelint": "^13.13.2", + "@types/testing-library__jest-dom": "^5.14.2", + "@types/testing-library__user-event": "^4.2.0", + "@typescript-eslint/eslint-plugin": "^4.31.1", + "@typescript-eslint/parser": "^4.31.1", + "autoprefixer": "^9", + "eslint-config-airbnb": "18.2.1", + "eslint-config-prettier": "^8.3.0", + "eslint-plugin-import": "^2.24.2", + "eslint-plugin-jsx-a11y": "^6.4.1", + "eslint-plugin-prefer-arrow": "^1.2.3", + "eslint-plugin-react": "^7.25.1", + "eslint-plugin-react-hooks": "4.2.0", + "postcss": "^7", + "prettier": "^2.6.2", + "prettier-plugin-tailwind": "^2.2.12", + "stylelint": "^13.13.1", + "stylelint-config-recess-order": "^2.5.0", + "stylelint-config-standard": "^22.0.0", + "stylelint-order": "^4.1.0", + "tailwindcss": "npm:@tailwindcss/postcss7-compat", + "typesync": "^0.8.0" } } diff --git a/postcss.config.js b/postcss.config.js new file mode 100644 index 0000000..12a703d --- /dev/null +++ b/postcss.config.js @@ -0,0 +1,6 @@ +module.exports = { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +}; diff --git a/public/assets/announcements-blogs.png b/public/assets/announcements-blogs.png new file mode 100644 index 0000000..557c3e4 Binary files /dev/null and b/public/assets/announcements-blogs.png differ diff --git a/public/assets/announcements-newsletter.png b/public/assets/announcements-newsletter.png new file mode 100644 index 0000000..5f9aed7 Binary files /dev/null and b/public/assets/announcements-newsletter.png differ diff --git a/public/assets/company-logo.png b/public/assets/company-logo.png new file mode 100644 index 0000000..1b1ca1c Binary files /dev/null and b/public/assets/company-logo.png differ diff --git a/public/assets/element-logo.svg b/public/assets/element-logo.svg new file mode 100644 index 0000000..54a91b7 --- /dev/null +++ b/public/assets/element-logo.svg @@ -0,0 +1,7 @@ + diff --git a/public/assets/github-logo-black.png b/public/assets/github-logo-black.png new file mode 100644 index 0000000..182a1a3 Binary files /dev/null and b/public/assets/github-logo-black.png differ diff --git a/public/assets/github-logo.png b/public/assets/github-logo.png new file mode 100644 index 0000000..192846a Binary files /dev/null and b/public/assets/github-logo.png differ diff --git a/public/logos/hashcloak_letters-md.png b/public/assets/hashcloak_letters-md.png similarity index 100% rename from public/logos/hashcloak_letters-md.png rename to public/assets/hashcloak_letters-md.png diff --git a/public/assets/main-visual-bg.png b/public/assets/main-visual-bg.png new file mode 100644 index 0000000..3324adf Binary files /dev/null and b/public/assets/main-visual-bg.png differ diff --git a/public/assets/mainvisual-contact-white.png b/public/assets/mainvisual-contact-white.png new file mode 100644 index 0000000..6d55263 Binary files /dev/null and b/public/assets/mainvisual-contact-white.png differ diff --git a/public/assets/mission-image.png b/public/assets/mission-image.png new file mode 100644 index 0000000..a00536c Binary files /dev/null and b/public/assets/mission-image.png differ diff --git a/public/assets/products-developer-survey.svg b/public/assets/products-developer-survey.svg new file mode 100644 index 0000000..1944b91 --- /dev/null +++ b/public/assets/products-developer-survey.svg @@ -0,0 +1,22 @@ + diff --git a/public/assets/products-meson-logo.png b/public/assets/products-meson-logo.png new file mode 100644 index 0000000..017479c Binary files /dev/null and b/public/assets/products-meson-logo.png differ diff --git a/public/assets/products-mesonSafe-logo.png b/public/assets/products-mesonSafe-logo.png new file mode 100644 index 0000000..263f3ca Binary files /dev/null and b/public/assets/products-mesonSafe-logo.png differ diff --git a/public/assets/products-mkbook.png b/public/assets/products-mkbook.png new file mode 100644 index 0000000..abe8a08 Binary files /dev/null and b/public/assets/products-mkbook.png differ diff --git a/public/assets/products-stoffelMPC-logo.png b/public/assets/products-stoffelMPC-logo.png new file mode 100644 index 0000000..deb89cf Binary files /dev/null and b/public/assets/products-stoffelMPC-logo.png differ diff --git a/public/assets/services-advisory.png b/public/assets/services-advisory.png new file mode 100644 index 0000000..14fc54b Binary files /dev/null and b/public/assets/services-advisory.png differ diff --git a/public/assets/services-audits.png b/public/assets/services-audits.png new file mode 100644 index 0000000..7b89e31 Binary files /dev/null and b/public/assets/services-audits.png differ diff --git a/public/assets/services-bespoke.png b/public/assets/services-bespoke.png new file mode 100644 index 0000000..d664e4c Binary files /dev/null and b/public/assets/services-bespoke.png differ diff --git a/public/assets/supporters-binance-fellowship.png b/public/assets/supporters-binance-fellowship.png new file mode 100644 index 0000000..556b721 Binary files /dev/null and b/public/assets/supporters-binance-fellowship.png differ diff --git a/public/logos/celo.png b/public/assets/supporters-celo.png similarity index 100% rename from public/logos/celo.png rename to public/assets/supporters-celo.png diff --git a/public/assets/supporters-esp.png b/public/assets/supporters-esp.png new file mode 100644 index 0000000..3031909 Binary files /dev/null and b/public/assets/supporters-esp.png differ diff --git a/public/assets/supporters-ethereum-foundation.png b/public/assets/supporters-ethereum-foundation.png new file mode 100644 index 0000000..70d3fe2 Binary files /dev/null and b/public/assets/supporters-ethereum-foundation.png differ diff --git a/public/assets/supporters-flashbots.png b/public/assets/supporters-flashbots.png new file mode 100644 index 0000000..fd48710 Binary files /dev/null and b/public/assets/supporters-flashbots.png differ diff --git a/public/assets/supporters-fuel.png b/public/assets/supporters-fuel.png new file mode 100644 index 0000000..12f3102 Binary files /dev/null and b/public/assets/supporters-fuel.png differ diff --git a/public/assets/supporters-hakka-finance.svg b/public/assets/supporters-hakka-finance.svg new file mode 100644 index 0000000..18d027b --- /dev/null +++ b/public/assets/supporters-hakka-finance.svg @@ -0,0 +1,19 @@ + diff --git a/public/assets/supporters-light-protocol.svg b/public/assets/supporters-light-protocol.svg new file mode 100644 index 0000000..11d4102 --- /dev/null +++ b/public/assets/supporters-light-protocol.svg @@ -0,0 +1,20 @@ + diff --git a/public/assets/supporters-panther-protocol.png b/public/assets/supporters-panther-protocol.png new file mode 100644 index 0000000..b069625 Binary files /dev/null and b/public/assets/supporters-panther-protocol.png differ diff --git a/public/assets/supporters-perpetual-protocol.png b/public/assets/supporters-perpetual-protocol.png new file mode 100644 index 0000000..021f55b Binary files /dev/null and b/public/assets/supporters-perpetual-protocol.png differ diff --git a/public/assets/supporters-sacred-finance.svg b/public/assets/supporters-sacred-finance.svg new file mode 100644 index 0000000..061dd24 --- /dev/null +++ b/public/assets/supporters-sacred-finance.svg @@ -0,0 +1,16 @@ + diff --git a/public/assets/twitter-logo-white.png b/public/assets/twitter-logo-white.png new file mode 100644 index 0000000..66962e7 Binary files /dev/null and b/public/assets/twitter-logo-white.png differ diff --git a/public/assets/twitter-logo.png b/public/assets/twitter-logo.png new file mode 100644 index 0000000..1b05dd4 Binary files /dev/null and b/public/assets/twitter-logo.png differ diff --git a/public/logos/hashcloak_bare.png b/public/favicon.ico similarity index 100% rename from public/logos/hashcloak_bare.png rename to public/favicon.ico diff --git a/public/graphics/cloak.png b/public/graphics/cloak.png deleted file mode 100644 index 6b9cde9..0000000 Binary files a/public/graphics/cloak.png and /dev/null differ diff --git a/public/graphics/contract.png b/public/graphics/contract.png deleted file mode 100644 index c104583..0000000 Binary files a/public/graphics/contract.png and /dev/null differ diff --git a/public/graphics/ice.png b/public/graphics/ice.png deleted file mode 100644 index c5ad162..0000000 Binary files a/public/graphics/ice.png and /dev/null differ diff --git a/public/graphics/noun_Announcement_3166042.png b/public/graphics/noun_Announcement_3166042.png deleted file mode 100644 index 391a62e..0000000 Binary files a/public/graphics/noun_Announcement_3166042.png and /dev/null differ diff --git a/public/graphics/noun_Science_3306446.png b/public/graphics/noun_Science_3306446.png deleted file mode 100644 index ac2bc06..0000000 Binary files a/public/graphics/noun_Science_3306446.png and /dev/null differ diff --git a/public/graphics/noun_newsletter_31729.png b/public/graphics/noun_newsletter_31729.png deleted file mode 100644 index 506ce44..0000000 Binary files a/public/graphics/noun_newsletter_31729.png and /dev/null differ diff --git a/public/graphics/noun_newsletter_957339.png b/public/graphics/noun_newsletter_957339.png deleted file mode 100644 index c663bf5..0000000 Binary files a/public/graphics/noun_newsletter_957339.png and /dev/null differ diff --git a/public/index.html b/public/index.html index c39aadb..0364b9a 100644 --- a/public/index.html +++ b/public/index.html @@ -1,22 +1,768 @@ +
+ + + + + + + + + +