From 82b49f3600e7ebb1488737f943abcbe276343bde Mon Sep 17 00:00:00 2001 From: Naman Goyal Date: Fri, 30 Dec 2022 13:13:46 +0530 Subject: [PATCH 1/8] frontend initialised --- frontend/.gitignore | 24 + frontend/index.html | 13 + frontend/package-lock.json | 1399 +++++++++++++++++++++++++++++++++ frontend/package.json | 21 + frontend/public/vite.svg | 1 + frontend/src/App.css | 41 + frontend/src/App.jsx | 34 + frontend/src/assets/react.svg | 1 + frontend/src/index.css | 70 ++ frontend/src/main.jsx | 10 + frontend/vite.config.js | 7 + 11 files changed, 1621 insertions(+) create mode 100644 frontend/.gitignore create mode 100644 frontend/index.html create mode 100644 frontend/package-lock.json create mode 100644 frontend/package.json create mode 100644 frontend/public/vite.svg create mode 100644 frontend/src/App.css create mode 100644 frontend/src/App.jsx create mode 100644 frontend/src/assets/react.svg create mode 100644 frontend/src/index.css create mode 100644 frontend/src/main.jsx create mode 100644 frontend/vite.config.js diff --git a/frontend/.gitignore b/frontend/.gitignore new file mode 100644 index 0000000..a547bf3 --- /dev/null +++ b/frontend/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/frontend/index.html b/frontend/index.html new file mode 100644 index 0000000..79c4701 --- /dev/null +++ b/frontend/index.html @@ -0,0 +1,13 @@ + + + + + + + Vite + React + + +
+ + + diff --git a/frontend/package-lock.json b/frontend/package-lock.json new file mode 100644 index 0000000..52b1f2e --- /dev/null +++ b/frontend/package-lock.json @@ -0,0 +1,1399 @@ +{ + "name": "frontend", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "frontend", + "version": "0.0.0", + "dependencies": { + "react": "^18.2.0", + "react-dom": "^18.2.0" + }, + "devDependencies": { + "@types/react": "^18.0.26", + "@types/react-dom": "^18.0.9", + "@vitejs/plugin-react": "^3.0.0", + "vite": "^4.0.0" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.20.10", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.10.tgz", + "integrity": "sha512-sEnuDPpOJR/fcafHMjpcpGN5M2jbUGUHwmuWKM/YdPzeEDJg8bgmbcWQFUfE32MQjti1koACvoPVsDe8Uq+idg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.7.tgz", + "integrity": "sha512-t1ZjCluspe5DW24bn2Rr1CDb2v9rn/hROtg9a2tmd0+QYf4bsloYfLQzjG4qHPNMhWtKdGC33R5AxGR2Af2cBw==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.20.7", + "@babel/helper-compilation-targets": "^7.20.7", + "@babel/helper-module-transforms": "^7.20.7", + "@babel/helpers": "^7.20.7", + "@babel/parser": "^7.20.7", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.20.7", + "@babel/types": "^7.20.7", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.7.tgz", + "integrity": "sha512-7wqMOJq8doJMZmP4ApXTzLxSr7+oO2jroJURrVEp6XShrQUObV8Tq/D0NCcoYg2uHqUrjzO0zwBjoYzelxK+sw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.20.7", + "@jridgewell/gen-mapping": "^0.3.2", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz", + "integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.20.5", + "@babel/helper-validator-option": "^7.18.6", + "browserslist": "^4.21.3", + "lru-cache": "^5.1.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", + "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", + "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", + "dev": true, + "dependencies": { + "@babel/template": "^7.18.10", + "@babel/types": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", + "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.11.tgz", + "integrity": "sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-simple-access": "^7.20.2", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.19.1", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.20.10", + "@babel/types": "^7.20.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", + "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", + "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", + "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", + "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.7.tgz", + "integrity": "sha512-PBPjs5BppzsGaxHQCDKnZ6Gd9s6xl8bBCluz3vEInLGRJmnZan4F6BYCeqtyXqkk4W5IlPmjK4JlOuZkpJ3xZA==", + "dev": true, + "dependencies": { + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.20.7", + "@babel/types": "^7.20.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.7.tgz", + "integrity": "sha512-T3Z9oHybU+0vZlY9CiDSJQTD5ZapcW18ZctFMi0MOAl/4BjFF4ul7NVSARLdbGO5vDqy9eQiGTV0LtKfvCYvcg==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.18.6.tgz", + "integrity": "sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.19.6.tgz", + "integrity": "sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/template": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", + "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.20.10", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.10.tgz", + "integrity": "sha512-oSf1juCgymrSez8NI4A2sr4+uB/mFd9MXplYGPEBnfAuWmmyeVcHa6xLPiaRBcXkcb/28bgxmQLTVwFKE1yfsg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.20.7", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz", + "integrity": "sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.19.4", + "@babel/helper-validator-identifier": "^7.19.1", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.16.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.16.12.tgz", + "integrity": "sha512-CTWgMJtpCyCltrvipZrrcjjRu+rzm6pf9V8muCsJqtKujR3kPmU4ffbckvugNNaRmhxAF1ZI3J+0FUIFLFg8KA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.16.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.16.12.tgz", + "integrity": "sha512-0LacmiIW+X0/LOLMZqYtZ7d4uY9fxYABAYhSSOu+OGQVBqH4N5eIYgkT7bBFnR4Nm3qo6qS3RpHKVrDASqj/uQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.16.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.16.12.tgz", + "integrity": "sha512-sS5CR3XBKQXYpSGMM28VuiUnbX83Z+aWPZzClW+OB2JquKqxoiwdqucJ5qvXS8pM6Up3RtJfDnRQZkz3en2z5g==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.16.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.16.12.tgz", + "integrity": "sha512-Dpe5hOAQiQRH20YkFAg+wOpcd4PEuXud+aGgKBQa/VriPJA8zuVlgCOSTwna1CgYl05lf6o5els4dtuyk1qJxQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.16.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.16.12.tgz", + "integrity": "sha512-ApGRA6X5txIcxV0095X4e4KKv87HAEXfuDRcGTniDWUUN+qPia8sl/BqG/0IomytQWajnUn4C7TOwHduk/FXBQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.16.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.12.tgz", + "integrity": "sha512-AMdK2gA9EU83ccXCWS1B/KcWYZCj4P3vDofZZkl/F/sBv/fphi2oUqUTox/g5GMcIxk8CF1CVYTC82+iBSyiUg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.16.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.16.12.tgz", + "integrity": "sha512-KUKB9w8G/xaAbD39t6gnRBuhQ8vIYYlxGT2I+mT6UGRnCGRr1+ePFIGBQmf5V16nxylgUuuWVW1zU2ktKkf6WQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.16.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.16.12.tgz", + "integrity": "sha512-vhDdIv6z4eL0FJyNVfdr3C/vdd/Wc6h1683GJsFoJzfKb92dU/v88FhWdigg0i6+3TsbSDeWbsPUXb4dif2abg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.16.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.16.12.tgz", + "integrity": "sha512-29HXMLpLklDfmw7T2buGqq3HImSUaZ1ArmrPOMaNiZZQptOSZs32SQtOHEl8xWX5vfdwZqrBfNf8Te4nArVzKQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.16.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.16.12.tgz", + "integrity": "sha512-JFDuNDTTfgD1LJg7wHA42o2uAO/9VzHYK0leAVnCQE/FdMB599YMH73ux+nS0xGr79pv/BK+hrmdRin3iLgQjg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.16.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.16.12.tgz", + "integrity": "sha512-xTGzVPqm6WKfCC0iuj1fryIWr1NWEM8DMhAIo+4rFgUtwy/lfHl+Obvus4oddzRDbBetLLmojfVZGmt/g/g+Rw==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.16.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.16.12.tgz", + "integrity": "sha512-zI1cNgHa3Gol+vPYjIYHzKhU6qMyOQrvZ82REr5Fv7rlh5PG6SkkuCoH7IryPqR+BK2c/7oISGsvPJPGnO2bHQ==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.16.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.16.12.tgz", + "integrity": "sha512-/C8OFXExoMmvTDIOAM54AhtmmuDHKoedUd0Otpfw3+AuuVGemA1nQK99oN909uZbLEU6Bi+7JheFMG3xGfZluQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.16.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.16.12.tgz", + "integrity": "sha512-qeouyyc8kAGV6Ni6Isz8hUsKMr00EHgVwUKWNp1r4l88fHEoNTDB8mmestvykW6MrstoGI7g2EAsgr0nxmuGYg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.16.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.16.12.tgz", + "integrity": "sha512-s9AyI/5vz1U4NNqnacEGFElqwnHusWa81pskAf8JNDM2eb6b2E6PpBmT8RzeZv6/TxE6/TADn2g9bb0jOUmXwQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.16.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.16.12.tgz", + "integrity": "sha512-e8YA7GQGLWhvakBecLptUiKxOk4E/EPtSckS1i0MGYctW8ouvNUoh7xnU15PGO2jz7BYl8q1R6g0gE5HFtzpqQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.16.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.16.12.tgz", + "integrity": "sha512-z2+kUxmOqBS+6SRVd57iOLIHE8oGOoEnGVAmwjm2aENSP35HPS+5cK+FL1l+rhrsJOFIPrNHqDUNechpuG96Sg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.16.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.16.12.tgz", + "integrity": "sha512-PAonw4LqIybwn2/vJujhbg1N9W2W8lw9RtXIvvZoyzoA/4rA4CpiuahVbASmQohiytRsixbNoIOUSjRygKXpyA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.16.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.16.12.tgz", + "integrity": "sha512-+wr1tkt1RERi+Zi/iQtkzmMH4nS8+7UIRxjcyRz7lur84wCkAITT50Olq/HiT4JN2X2bjtlOV6vt7ptW5Gw60Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.16.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.16.12.tgz", + "integrity": "sha512-XEjeUSHmjsAOJk8+pXJu9pFY2O5KKQbHXZWQylJzQuIBeiGrpMeq9sTVrHefHxMOyxUgoKQTcaTS+VK/K5SviA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.16.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.16.12.tgz", + "integrity": "sha512-eRKPM7e0IecUAUYr2alW7JGDejrFJXmpjt4MlfonmQ5Rz9HWpKFGCjuuIRgKO7W9C/CWVFXdJ2GjddsBXqQI4A==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.16.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.16.12.tgz", + "integrity": "sha512-iPYKN78t3op2+erv2frW568j1q0RpqX6JOLZ7oPPaAV1VaF7dDstOrNw37PVOYoTWE11pV4A1XUitpdEFNIsPg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", + "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, + "node_modules/@types/prop-types": { + "version": "15.7.5", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", + "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", + "dev": true + }, + "node_modules/@types/react": { + "version": "18.0.26", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.26.tgz", + "integrity": "sha512-hCR3PJQsAIXyxhTNSiDFY//LhnMZWpNNr5etoCqx/iUfGc5gXWtQR2Phl908jVR6uPXacojQWTg4qRpkxTuGug==", + "dev": true, + "dependencies": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "18.0.10", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.10.tgz", + "integrity": "sha512-E42GW/JA4Qv15wQdqJq8DL4JhNpB3prJgjgapN3qJT9K2zO5IIAQh4VXvCEDupoqAwnz0cY4RlXeC/ajX5SFHg==", + "dev": true, + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/scheduler": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", + "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==", + "dev": true + }, + "node_modules/@vitejs/plugin-react": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-3.0.0.tgz", + "integrity": "sha512-1mvyPc0xYW5G8CHQvJIJXLoMjl5Ct3q2g5Y2s6Ccfgwm45y48LBvsla7az+GkkAtYikWQ4Lxqcsq5RHLcZgtNQ==", + "dev": true, + "dependencies": { + "@babel/core": "^7.20.5", + "@babel/plugin-transform-react-jsx-self": "^7.18.6", + "@babel/plugin-transform-react-jsx-source": "^7.19.6", + "magic-string": "^0.27.0", + "react-refresh": "^0.14.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.0.0" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/browserslist": { + "version": "4.21.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", + "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001400", + "electron-to-chromium": "^1.4.251", + "node-releases": "^2.0.6", + "update-browserslist-db": "^1.0.9" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001441", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001441.tgz", + "integrity": "sha512-OyxRR4Vof59I3yGWXws6i908EtGbMzVUi3ganaZQHmydk1iwDhRnvaPG2WaR0KcqrDFKrxVZHULT396LEPhXfg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + } + ] + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true + }, + "node_modules/csstype": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz", + "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==", + "dev": true + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/electron-to-chromium": { + "version": "1.4.284", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", + "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==", + "dev": true + }, + "node_modules/esbuild": { + "version": "0.16.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.16.12.tgz", + "integrity": "sha512-eq5KcuXajf2OmivCl4e89AD3j8fbV+UTE9vczEzq5haA07U9oOTzBWlh3+6ZdjJR7Rz2QfWZ2uxZyhZxBgJ4+g==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.16.12", + "@esbuild/android-arm64": "0.16.12", + "@esbuild/android-x64": "0.16.12", + "@esbuild/darwin-arm64": "0.16.12", + "@esbuild/darwin-x64": "0.16.12", + "@esbuild/freebsd-arm64": "0.16.12", + "@esbuild/freebsd-x64": "0.16.12", + "@esbuild/linux-arm": "0.16.12", + "@esbuild/linux-arm64": "0.16.12", + "@esbuild/linux-ia32": "0.16.12", + "@esbuild/linux-loong64": "0.16.12", + "@esbuild/linux-mips64el": "0.16.12", + "@esbuild/linux-ppc64": "0.16.12", + "@esbuild/linux-riscv64": "0.16.12", + "@esbuild/linux-s390x": "0.16.12", + "@esbuild/linux-x64": "0.16.12", + "@esbuild/netbsd-x64": "0.16.12", + "@esbuild/openbsd-x64": "0.16.12", + "@esbuild/sunos-x64": "0.16.12", + "@esbuild/win32-arm64": "0.16.12", + "@esbuild/win32-ia32": "0.16.12", + "@esbuild/win32-x64": "0.16.12" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/is-core-module": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json5": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.2.tgz", + "integrity": "sha512-46Tk9JiOL2z7ytNQWFLpj99RZkVgeHf87yGQKsIkaPz1qSH9UczKH1rO7K3wgRselo0tYMUNfecYpm/p1vC7tQ==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/magic-string": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz", + "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==", + "dev": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.13" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/nanoid": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "dev": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/node-releases": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.8.tgz", + "integrity": "sha512-dFSmB8fFHEH/s81Xi+Y/15DQY6VHW81nXRj86EMSL3lmuTmK1e+aT4wrFCkTbm+gSwkw4KpX+rT/pMM2c1mF+A==", + "dev": true + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/postcss": { + "version": "8.4.20", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.20.tgz", + "integrity": "sha512-6Q04AXR1212bXr5fh03u8aAwbLxAQNGQ/Q1LNa0VfOI06ZAlhPHtQvE4OIdpj4kLThXilalPnmDSOD65DcHt+g==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + } + ], + "dependencies": { + "nanoid": "^3.3.4", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/react": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, + "node_modules/react-refresh": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz", + "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/rollup": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.9.0.tgz", + "integrity": "sha512-nGGylpmblyjTpF4lEUPgmOw6OVxRvnI6Iuuh6Lz4O/X66cVOX1XJSsqP1YamxQ+mPuFE7qJxLFDSCk8rNv5dDw==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=14.18.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/scheduler": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", + "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist-lint": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/vite": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.0.3.tgz", + "integrity": "sha512-HvuNv1RdE7deIfQb8mPk51UKjqptO/4RXZ5yXSAvurd5xOckwS/gg8h9Tky3uSbnjYTgUm0hVCet1cyhKd73ZA==", + "dev": true, + "dependencies": { + "esbuild": "^0.16.3", + "postcss": "^8.4.20", + "resolve": "^1.22.1", + "rollup": "^3.7.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "@types/node": ">= 14", + "less": "*", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + } + } +} diff --git a/frontend/package.json b/frontend/package.json new file mode 100644 index 0000000..2371d17 --- /dev/null +++ b/frontend/package.json @@ -0,0 +1,21 @@ +{ + "name": "frontend", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "vite build", + "preview": "vite preview" + }, + "dependencies": { + "react": "^18.2.0", + "react-dom": "^18.2.0" + }, + "devDependencies": { + "@types/react": "^18.0.26", + "@types/react-dom": "^18.0.9", + "@vitejs/plugin-react": "^3.0.0", + "vite": "^4.0.0" + } +} \ No newline at end of file diff --git a/frontend/public/vite.svg b/frontend/public/vite.svg new file mode 100644 index 0000000..e7b8dfb --- /dev/null +++ b/frontend/public/vite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/src/App.css b/frontend/src/App.css new file mode 100644 index 0000000..2c5e2ef --- /dev/null +++ b/frontend/src/App.css @@ -0,0 +1,41 @@ +#root { + max-width: 1280px; + margin: 0 auto; + padding: 2rem; + text-align: center; +} + +.logo { + height: 6em; + padding: 1.5em; + will-change: filter; +} +.logo:hover { + filter: drop-shadow(0 0 2em #646cffaa); +} +.logo.react:hover { + filter: drop-shadow(0 0 2em #61dafbaa); +} + +@keyframes logo-spin { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} + +@media (prefers-reduced-motion: no-preference) { + a:nth-of-type(2) .logo { + animation: logo-spin infinite 20s linear; + } +} + +.card { + padding: 2em; +} + +.read-the-docs { + color: #888; +} diff --git a/frontend/src/App.jsx b/frontend/src/App.jsx new file mode 100644 index 0000000..3140301 --- /dev/null +++ b/frontend/src/App.jsx @@ -0,0 +1,34 @@ +import { useState } from 'react' +import reactLogo from './assets/react.svg' +import './App.css' + +function App() { + const [count, setCount] = useState(0) + + return ( +
+
+ + Vite logo + + + React logo + +
+

Muglo 2.0

+
+ +

+ Edit src/App.jsx and save to test HMR +

+
+

+ Click on the Vite and React logos to learn more +

+
+ ) +} + +export default App diff --git a/frontend/src/assets/react.svg b/frontend/src/assets/react.svg new file mode 100644 index 0000000..6c87de9 --- /dev/null +++ b/frontend/src/assets/react.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/src/index.css b/frontend/src/index.css new file mode 100644 index 0000000..917888c --- /dev/null +++ b/frontend/src/index.css @@ -0,0 +1,70 @@ +:root { + font-family: Inter, Avenir, Helvetica, Arial, sans-serif; + font-size: 16px; + line-height: 24px; + font-weight: 400; + + color-scheme: light dark; + color: rgba(255, 255, 255, 0.87); + background-color: #242424; + + font-synthesis: none; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + -webkit-text-size-adjust: 100%; +} + +a { + font-weight: 500; + color: #646cff; + text-decoration: inherit; +} +a:hover { + color: #535bf2; +} + +body { + margin: 0; + display: flex; + place-items: center; + min-width: 320px; + min-height: 100vh; +} + +h1 { + font-size: 3.2em; + line-height: 1.1; +} + +button { + border-radius: 8px; + border: 1px solid transparent; + padding: 0.6em 1.2em; + font-size: 1em; + font-weight: 500; + font-family: inherit; + background-color: #1a1a1a; + cursor: pointer; + transition: border-color 0.25s; +} +button:hover { + border-color: #646cff; +} +button:focus, +button:focus-visible { + outline: 4px auto -webkit-focus-ring-color; +} + +@media (prefers-color-scheme: light) { + :root { + color: #213547; + background-color: #ffffff; + } + a:hover { + color: #747bff; + } + button { + background-color: #f9f9f9; + } +} diff --git a/frontend/src/main.jsx b/frontend/src/main.jsx new file mode 100644 index 0000000..5cc5991 --- /dev/null +++ b/frontend/src/main.jsx @@ -0,0 +1,10 @@ +import React from 'react' +import ReactDOM from 'react-dom/client' +import App from './App' +import './index.css' + +ReactDOM.createRoot(document.getElementById('root')).render( + + + , +) diff --git a/frontend/vite.config.js b/frontend/vite.config.js new file mode 100644 index 0000000..5a33944 --- /dev/null +++ b/frontend/vite.config.js @@ -0,0 +1,7 @@ +import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react' + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [react()], +}) From b62f515979bec5602bff5b0ca503141160d45ca6 Mon Sep 17 00:00:00 2001 From: Naman Goyal Date: Fri, 30 Dec 2022 13:21:00 +0530 Subject: [PATCH 2/8] gitignore added --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c305f80 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +# backend\backend\__pycache__\. +*.pyc From 6d1d5aad8da8b0d4895ba80f7a6ad73697e0dd94 Mon Sep 17 00:00:00 2001 From: Naman Goyal Date: Fri, 30 Dec 2022 13:21:19 +0530 Subject: [PATCH 3/8] backend intialised --- backend/.gitignore | 2 + backend/backend/__init__.py | 0 backend/backend/asgi.py | 16 +++++ backend/backend/settings.py | 123 ++++++++++++++++++++++++++++++++++++ backend/backend/urls.py | 21 ++++++ backend/backend/wsgi.py | 16 +++++ backend/manage.py | 22 +++++++ 7 files changed, 200 insertions(+) create mode 100644 backend/.gitignore create mode 100644 backend/backend/__init__.py create mode 100644 backend/backend/asgi.py create mode 100644 backend/backend/settings.py create mode 100644 backend/backend/urls.py create mode 100644 backend/backend/wsgi.py create mode 100644 backend/manage.py diff --git a/backend/.gitignore b/backend/.gitignore new file mode 100644 index 0000000..2f58fe7 --- /dev/null +++ b/backend/.gitignore @@ -0,0 +1,2 @@ +db.sqlite3 +backend\__pycache__\. \ No newline at end of file diff --git a/backend/backend/__init__.py b/backend/backend/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/backend/asgi.py b/backend/backend/asgi.py new file mode 100644 index 0000000..f4518a1 --- /dev/null +++ b/backend/backend/asgi.py @@ -0,0 +1,16 @@ +""" +ASGI config for backend project. + +It exposes the ASGI callable as a module-level variable named ``application``. + +For more information on this file, see +https://docs.djangoproject.com/en/4.1/howto/deployment/asgi/ +""" + +import os + +from django.core.asgi import get_asgi_application + +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'backend.settings') + +application = get_asgi_application() diff --git a/backend/backend/settings.py b/backend/backend/settings.py new file mode 100644 index 0000000..9dd1849 --- /dev/null +++ b/backend/backend/settings.py @@ -0,0 +1,123 @@ +""" +Django settings for backend project. + +Generated by 'django-admin startproject' using Django 4.1.4. + +For more information on this file, see +https://docs.djangoproject.com/en/4.1/topics/settings/ + +For the full list of settings and their values, see +https://docs.djangoproject.com/en/4.1/ref/settings/ +""" + +from pathlib import Path + +# Build paths inside the project like this: BASE_DIR / 'subdir'. +BASE_DIR = Path(__file__).resolve().parent.parent + + +# Quick-start development settings - unsuitable for production +# See https://docs.djangoproject.com/en/4.1/howto/deployment/checklist/ + +# SECURITY WARNING: keep the secret key used in production secret! +SECRET_KEY = 'django-insecure-8+92#za2ai2__74j0p&dibvmzs==p%1ndo^9j_d8k3&at*4q0r' + +# SECURITY WARNING: don't run with debug turned on in production! +DEBUG = True + +ALLOWED_HOSTS = [] + + +# Application definition + +INSTALLED_APPS = [ + 'django.contrib.admin', + 'django.contrib.auth', + 'django.contrib.contenttypes', + 'django.contrib.sessions', + 'django.contrib.messages', + 'django.contrib.staticfiles', +] + +MIDDLEWARE = [ + 'django.middleware.security.SecurityMiddleware', + 'django.contrib.sessions.middleware.SessionMiddleware', + 'django.middleware.common.CommonMiddleware', + 'django.middleware.csrf.CsrfViewMiddleware', + 'django.contrib.auth.middleware.AuthenticationMiddleware', + 'django.contrib.messages.middleware.MessageMiddleware', + 'django.middleware.clickjacking.XFrameOptionsMiddleware', +] + +ROOT_URLCONF = 'backend.urls' + +TEMPLATES = [ + { + 'BACKEND': 'django.template.backends.django.DjangoTemplates', + 'DIRS': [], + 'APP_DIRS': True, + 'OPTIONS': { + 'context_processors': [ + 'django.template.context_processors.debug', + 'django.template.context_processors.request', + 'django.contrib.auth.context_processors.auth', + 'django.contrib.messages.context_processors.messages', + ], + }, + }, +] + +WSGI_APPLICATION = 'backend.wsgi.application' + + +# Database +# https://docs.djangoproject.com/en/4.1/ref/settings/#databases + +DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.sqlite3', + 'NAME': BASE_DIR / 'db.sqlite3', + } +} + + +# Password validation +# https://docs.djangoproject.com/en/4.1/ref/settings/#auth-password-validators + +AUTH_PASSWORD_VALIDATORS = [ + { + 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', + }, +] + + +# Internationalization +# https://docs.djangoproject.com/en/4.1/topics/i18n/ + +LANGUAGE_CODE = 'en-us' + +TIME_ZONE = 'UTC' + +USE_I18N = True + +USE_TZ = True + + +# Static files (CSS, JavaScript, Images) +# https://docs.djangoproject.com/en/4.1/howto/static-files/ + +STATIC_URL = 'static/' + +# Default primary key field type +# https://docs.djangoproject.com/en/4.1/ref/settings/#default-auto-field + +DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' diff --git a/backend/backend/urls.py b/backend/backend/urls.py new file mode 100644 index 0000000..b511391 --- /dev/null +++ b/backend/backend/urls.py @@ -0,0 +1,21 @@ +"""backend URL Configuration + +The `urlpatterns` list routes URLs to views. For more information please see: + https://docs.djangoproject.com/en/4.1/topics/http/urls/ +Examples: +Function views + 1. Add an import: from my_app import views + 2. Add a URL to urlpatterns: path('', views.home, name='home') +Class-based views + 1. Add an import: from other_app.views import Home + 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home') +Including another URLconf + 1. Import the include() function: from django.urls import include, path + 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) +""" +from django.contrib import admin +from django.urls import path + +urlpatterns = [ + path('admin/', admin.site.urls), +] diff --git a/backend/backend/wsgi.py b/backend/backend/wsgi.py new file mode 100644 index 0000000..c4aa324 --- /dev/null +++ b/backend/backend/wsgi.py @@ -0,0 +1,16 @@ +""" +WSGI config for backend project. + +It exposes the WSGI callable as a module-level variable named ``application``. + +For more information on this file, see +https://docs.djangoproject.com/en/4.1/howto/deployment/wsgi/ +""" + +import os + +from django.core.wsgi import get_wsgi_application + +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'backend.settings') + +application = get_wsgi_application() diff --git a/backend/manage.py b/backend/manage.py new file mode 100644 index 0000000..eb6431e --- /dev/null +++ b/backend/manage.py @@ -0,0 +1,22 @@ +#!/usr/bin/env python +"""Django's command-line utility for administrative tasks.""" +import os +import sys + + +def main(): + """Run administrative tasks.""" + os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'backend.settings') + try: + from django.core.management import execute_from_command_line + except ImportError as exc: + raise ImportError( + "Couldn't import Django. Are you sure it's installed and " + "available on your PYTHONPATH environment variable? Did you " + "forget to activate a virtual environment?" + ) from exc + execute_from_command_line(sys.argv) + + +if __name__ == '__main__': + main() From 60c4e642c6c76fd3fbe673e269e9d684bc79087f Mon Sep 17 00:00:00 2001 From: Naman Goyal Date: Wed, 11 Jan 2023 18:58:14 +0530 Subject: [PATCH 4/8] env added to gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index c305f80..f4616e0 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ # backend\backend\__pycache__\. *.pyc +env \ No newline at end of file From 8b8b8597cd3055fd3199143a1f60cc29a2e42a29 Mon Sep 17 00:00:00 2001 From: Naman Goyal Date: Wed, 11 Jan 2023 18:59:00 +0530 Subject: [PATCH 5/8] requirement file added --- requirements.txt | Bin 0 -> 216 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 requirements.txt diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..d23d240e97acab983729961f904d3895054fe0bf GIT binary patch literal 216 zcmZ9G$qIu&5JcZOkY5?xNKU!=BZ3RYEM`Us`ti}4hDZoa9h$0o-Rq|!(9z>*Xt`)| z949H^$bph86%S>e<`!~NsW7+xaU&rxiQ?6`YkRBX8Fp%_)|WdnE4!GN=~kw3oQ)cI babpz4i`ZBuv71ic#jj$smOn}H=YPTmJDDK3 literal 0 HcmV?d00001 From 981faeb85663e48f564a8735ef643a2b3ebea8cf Mon Sep 17 00:00:00 2001 From: Naman Goyal Date: Wed, 1 Mar 2023 23:08:32 +0530 Subject: [PATCH 6/8] axios added --- frontend/package-lock.json | 91 +++++++++++++++++++++++++++++++++++ frontend/package.json | 3 +- frontend/src/assets/axios.jsx | 4 ++ 3 files changed, 97 insertions(+), 1 deletion(-) create mode 100644 frontend/src/assets/axios.jsx diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 52b1f2e..c171325 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -8,6 +8,7 @@ "name": "frontend", "version": "0.0.0", "dependencies": { + "axios": "^1.3.4", "react": "^18.2.0", "react-dom": "^18.2.0" }, @@ -835,6 +836,21 @@ "node": ">=4" } }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/axios": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.3.4.tgz", + "integrity": "sha512-toYm+Bsyl6VC5wSkfkbbNB6ROv7KY93PEBBL6xyDczaIHasAiv4wPqQ/c4RjoQzipxRD2W5g21cOqQulZ7rHwQ==", + "dependencies": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, "node_modules/browserslist": { "version": "4.21.4", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", @@ -908,6 +924,17 @@ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/convert-source-map": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", @@ -937,6 +964,14 @@ } } }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/electron-to-chromium": { "version": "1.4.284", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", @@ -998,6 +1033,38 @@ "node": ">=0.8.0" } }, + "node_modules/follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/fsevents": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", @@ -1130,6 +1197,25 @@ "node": ">=12" } }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -1190,6 +1276,11 @@ "node": "^10 || ^12 || >=14" } }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, "node_modules/react": { "version": "18.2.0", "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", diff --git a/frontend/package.json b/frontend/package.json index 2371d17..59078d9 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -9,6 +9,7 @@ "preview": "vite preview" }, "dependencies": { + "axios": "^1.3.4", "react": "^18.2.0", "react-dom": "^18.2.0" }, @@ -18,4 +19,4 @@ "@vitejs/plugin-react": "^3.0.0", "vite": "^4.0.0" } -} \ No newline at end of file +} diff --git a/frontend/src/assets/axios.jsx b/frontend/src/assets/axios.jsx new file mode 100644 index 0000000..f6c3b31 --- /dev/null +++ b/frontend/src/assets/axios.jsx @@ -0,0 +1,4 @@ +import axios from 'axios' + +const instance = axios.create({}) +export{instance} \ No newline at end of file From 1da3ce7e863bd0ac0207108a8a32da07d7fc53cc Mon Sep 17 00:00:00 2001 From: Naman Goyal Date: Tue, 28 Mar 2023 02:22:29 +0530 Subject: [PATCH 7/8] rest framework snippet added --- backend/.gitignore | 2 -- backend/backend/settings.py | 24 +++++++++++++- backend/backend/urls.py | 4 ++- backend/db.sqlite3 | Bin 0 -> 131072 bytes backend/user/__init__.py | 0 backend/user/admin.py | 3 ++ backend/user/apps.py | 6 ++++ backend/user/migrations/__init__.py | 0 backend/user/models.py | 3 ++ backend/user/tests.py | 3 ++ backend/user/urls.py | 7 +++++ backend/user/views.py | 15 +++++++++ frontend/src/App.jsx | 47 +++++++++++++++------------- frontend/src/api/axios.jsx | 6 ++++ frontend/src/assets/axios.jsx | 4 --- requirements.txt | Bin 216 -> 378 bytes 16 files changed, 95 insertions(+), 29 deletions(-) delete mode 100644 backend/.gitignore create mode 100644 backend/db.sqlite3 create mode 100644 backend/user/__init__.py create mode 100644 backend/user/admin.py create mode 100644 backend/user/apps.py create mode 100644 backend/user/migrations/__init__.py create mode 100644 backend/user/models.py create mode 100644 backend/user/tests.py create mode 100644 backend/user/urls.py create mode 100644 backend/user/views.py create mode 100644 frontend/src/api/axios.jsx delete mode 100644 frontend/src/assets/axios.jsx diff --git a/backend/.gitignore b/backend/.gitignore deleted file mode 100644 index 2f58fe7..0000000 --- a/backend/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -db.sqlite3 -backend\__pycache__\. \ No newline at end of file diff --git a/backend/backend/settings.py b/backend/backend/settings.py index 9dd1849..8d9523c 100644 --- a/backend/backend/settings.py +++ b/backend/backend/settings.py @@ -20,7 +20,7 @@ # See https://docs.djangoproject.com/en/4.1/howto/deployment/checklist/ # SECURITY WARNING: keep the secret key used in production secret! -SECRET_KEY = 'django-insecure-8+92#za2ai2__74j0p&dibvmzs==p%1ndo^9j_d8k3&at*4q0r' +SECRET_KEY = 'django-insecure-vbi%pqkymabekp2z@330z-zq)qsq%+!345%zyvxpvw2&or#)jx' # SECURITY WARNING: don't run with debug turned on in production! DEBUG = True @@ -28,6 +28,7 @@ ALLOWED_HOSTS = [] + # Application definition INSTALLED_APPS = [ @@ -37,9 +38,13 @@ 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', + 'corsheaders', + 'rest_framework', + 'user', ] MIDDLEWARE = [ + "corsheaders.middleware.CorsMiddleware", #CORS 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', @@ -121,3 +126,20 @@ # https://docs.djangoproject.com/en/4.1/ref/settings/#default-auto-field DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' + + +REST_FRAMEWORK = { + 'DEFAULT_AUTHENTICATION_CLASSES': ( + 'rest_framework_simplejwt.authentication.JWTAuthentication', + ), +} + + +# CORS_ALLOWED_ORIGINS = [ +# "http://localhost:5173", +# "http://127.0.0.1:5173", +# ] + +CORS_ORIGIN_ALLOW_ALL = True +# CORS_ALLOW_HEADERS = ['*', 'http://127.0.0.1:5173'] + diff --git a/backend/backend/urls.py b/backend/backend/urls.py index b511391..e6c7ad5 100644 --- a/backend/backend/urls.py +++ b/backend/backend/urls.py @@ -14,8 +14,10 @@ 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) """ from django.contrib import admin -from django.urls import path +from django.urls import path, include + urlpatterns = [ path('admin/', admin.site.urls), + path('user/', include('user.urls')) ] diff --git a/backend/db.sqlite3 b/backend/db.sqlite3 new file mode 100644 index 0000000000000000000000000000000000000000..7a9d8c488bb7a7e359c25e6704cb1795db415d82 GIT binary patch literal 131072 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 U009sH0T2KI5C8!XcsvOFAAQ20LjV8( literal 0 HcmV?d00001 diff --git a/backend/user/__init__.py b/backend/user/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/user/admin.py b/backend/user/admin.py new file mode 100644 index 0000000..8c38f3f --- /dev/null +++ b/backend/user/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/backend/user/apps.py b/backend/user/apps.py new file mode 100644 index 0000000..36cce4c --- /dev/null +++ b/backend/user/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class UserConfig(AppConfig): + default_auto_field = 'django.db.models.BigAutoField' + name = 'user' diff --git a/backend/user/migrations/__init__.py b/backend/user/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/user/models.py b/backend/user/models.py new file mode 100644 index 0000000..71a8362 --- /dev/null +++ b/backend/user/models.py @@ -0,0 +1,3 @@ +from django.db import models + +# Create your models here. diff --git a/backend/user/tests.py b/backend/user/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/backend/user/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/backend/user/urls.py b/backend/user/urls.py new file mode 100644 index 0000000..2bf1d75 --- /dev/null +++ b/backend/user/urls.py @@ -0,0 +1,7 @@ +# from django.contrib import admin +from django.urls import path +from user.views import Custom + +urlpatterns = [ + path('api/', Custom.as_view()), +] diff --git a/backend/user/views.py b/backend/user/views.py new file mode 100644 index 0000000..f6af810 --- /dev/null +++ b/backend/user/views.py @@ -0,0 +1,15 @@ +from django.shortcuts import render +from rest_framework.views import APIView +from rest_framework.response import Response +from rest_framework import status + +# Create your views here. + + +class Custom(APIView): + + def get(self, request): + return Response({"resp": "info"}) + + + diff --git a/frontend/src/App.jsx b/frontend/src/App.jsx index 3140301..2ae534d 100644 --- a/frontend/src/App.jsx +++ b/frontend/src/App.jsx @@ -1,32 +1,37 @@ import { useState } from 'react' import reactLogo from './assets/react.svg' import './App.css' +import axios from 'axios' +import { useEffect } from 'react' function App() { - const [count, setCount] = useState(0) + const [count, setCount] = useState("") + + let info; + let url = 'http://127.0.0.1:8000/user/api/' + // info = fetch(url) + +// fetch(url, { +// method : "GET", +// mode: 'cors', +// headers: {} +// }) +// .then(response => console.log(response)) +// .then(data => console.log(data)); +// useEffect(()=>axios.get(url).then((response) =>{ +// setCount(((response.data))) +// })) + +useEffect(()=>{ + axios.get(url).then((r)=>{ + setCount(r.data) + }) +},[]) + return (
- -

Muglo 2.0

-
- -

- Edit src/App.jsx and save to test HMR -

-
-

- Click on the Vite and React logos to learn more -

+ {count.resp}
) } diff --git a/frontend/src/api/axios.jsx b/frontend/src/api/axios.jsx new file mode 100644 index 0000000..caf2f97 --- /dev/null +++ b/frontend/src/api/axios.jsx @@ -0,0 +1,6 @@ +import axios from 'axios' + +const instance = axios.create({ + baseURL:'/' +}) +export default instance; \ No newline at end of file diff --git a/frontend/src/assets/axios.jsx b/frontend/src/assets/axios.jsx deleted file mode 100644 index f6c3b31..0000000 --- a/frontend/src/assets/axios.jsx +++ /dev/null @@ -1,4 +0,0 @@ -import axios from 'axios' - -const instance = axios.create({}) -export{instance} \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index d23d240e97acab983729961f904d3895054fe0bf..f94163f350f8125e819fdfe223508c83cc3536cb 100644 GIT binary patch delta 115 zcmcb?_={0zg delta 16 Ycmeyxbc1n%&%^^#6Bmd~mSKzo06qi;Z~y=R From f08fd21f85130f885ab9cc7879bd79224b9b9dbd Mon Sep 17 00:00:00 2001 From: Naman Goyal Date: Fri, 7 Apr 2023 14:03:36 +0530 Subject: [PATCH 8/8] Login page added --- frontend/src/App.css | 89 ++++++++++++-------- frontend/src/App.jsx | 29 ++----- frontend/src/assets/images/googlesignin.png | Bin 0 -> 26147 bytes frontend/src/index.css | 4 +- frontend/src/pages/Login.jsx | 20 +++++ 5 files changed, 83 insertions(+), 59 deletions(-) create mode 100644 frontend/src/assets/images/googlesignin.png create mode 100644 frontend/src/pages/Login.jsx diff --git a/frontend/src/App.css b/frontend/src/App.css index 2c5e2ef..89f47c3 100644 --- a/frontend/src/App.css +++ b/frontend/src/App.css @@ -1,41 +1,56 @@ -#root { - max-width: 1280px; - margin: 0 auto; - padding: 2rem; - text-align: center; -} +*{ + margin: 0; +} +.loginpage{ + display: flex; + height: 100vh; + width: 100vw; + background-repeat: no-repeat; + background-size: cover; + background-image: url('https://ucarecdn.com/5015c61e-0b04-4b81-9661-3c0d7c3d82e8/'); -.logo { - height: 6em; - padding: 1.5em; - will-change: filter; -} -.logo:hover { - filter: drop-shadow(0 0 2em #646cffaa); } -.logo.react:hover { - filter: drop-shadow(0 0 2em #61dafbaa); +.form-login{ + position: absolute; + top: 50%; + left: 20%; + transform: translate(-50%, -50%); +} +.login-item input{ + height: 40px; + width: 300px; + border: 1px solid darkgoldenrod; + padding: 4px; +} +.login-heading{ + position: absolute; + font-size: 90px; + top: 100px; + left: 50px; +} +.iitj-login{ + position: relative; + left: 20px; + font-size: 70px; +} +.signup-login{ + position: absolute; + left: 105px; + height: 40px; + width: 300px; + border-radius: 4px; + background-color: white; + border: 1px solid darkgoldenrod; + top: 330px; } -@keyframes logo-spin { - from { - transform: rotate(0deg); - } - to { - transform: rotate(360deg); - } -} - -@media (prefers-reduced-motion: no-preference) { - a:nth-of-type(2) .logo { - animation: logo-spin infinite 20s linear; - } -} - -.card { - padding: 2em; -} - -.read-the-docs { - color: #888; -} +.signup-login:hover{ + background-color: #c4fccf; + cursor: pointer; +} +.goole-login{ + position: relative; + top: 4px; + right: 4px; + height: 20px; +} \ No newline at end of file diff --git a/frontend/src/App.jsx b/frontend/src/App.jsx index 2ae534d..77d52d1 100644 --- a/frontend/src/App.jsx +++ b/frontend/src/App.jsx @@ -3,35 +3,24 @@ import reactLogo from './assets/react.svg' import './App.css' import axios from 'axios' import { useEffect } from 'react' - +import Login from './pages/Login' function App() { const [count, setCount] = useState("") - let info; - let url = 'http://127.0.0.1:8000/user/api/' - // info = fetch(url) + // let info; + // let url = 'http://127.0.0.1:8000/user/api/' -// fetch(url, { -// method : "GET", -// mode: 'cors', -// headers: {} -// }) -// .then(response => console.log(response)) -// .then(data => console.log(data)); -// useEffect(()=>axios.get(url).then((response) =>{ -// setCount(((response.data))) -// })) -useEffect(()=>{ - axios.get(url).then((r)=>{ - setCount(r.data) - }) -},[]) +// useEffect(()=>{ +// axios.get(url).then((r)=>{ +// setCount(r.data) +// }) +// },[]) return (
- {count.resp} +
) } diff --git a/frontend/src/assets/images/googlesignin.png b/frontend/src/assets/images/googlesignin.png new file mode 100644 index 0000000000000000000000000000000000000000..9c6f2cbf99f2701c47f711e68675e9374a58e427 GIT binary patch literal 26147 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 J9NCSOyGc;4E86=t{VIjMcZtg6~cA>n&$ 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 Ct3B`l literal 0 HcmV?d00001 diff --git a/frontend/src/index.css b/frontend/src/index.css index 917888c..2f3277a 100644 --- a/frontend/src/index.css +++ b/frontend/src/index.css @@ -1,4 +1,4 @@ -:root { +/* :root { font-family: Inter, Avenir, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 24px; @@ -67,4 +67,4 @@ button:focus-visible { button { background-color: #f9f9f9; } -} +} */ diff --git a/frontend/src/pages/Login.jsx b/frontend/src/pages/Login.jsx new file mode 100644 index 0000000..7bd10fb --- /dev/null +++ b/frontend/src/pages/Login.jsx @@ -0,0 +1,20 @@ +import React from 'react' +import google from '../assets/images/googlesignin.png' +export default function Login() { + return ( +
+
+
Welcome to mulgo,
+
IITJ
+ +
+ +
+
+
+
+
+
+
+ ) +}