├── ML ├── README.md ├── .env.example ├── Test1.jpg ├── Test2.jpg ├── Test3.jpg ├── Test4.jpg ├── Test5.jpg ├── install-deps.sh ├── demo.py ├── requirements.txt ├── imutils.py ├── SpecialDB.py ├── app.py ├── transform.py └── scan.py ├── store └── .gitkeep ├── nodemon.json ├── client ├── src │ ├── react-app-env.d.ts │ ├── setupTests.ts │ ├── components │ │ ├── Shared │ │ │ ├── Footer.tsx │ │ │ └── Navbar.tsx │ │ ├── Student │ │ │ └── Hero.tsx │ │ └── Teacher │ │ │ └── Hero.tsx │ ├── index.tsx │ ├── tailwind.src.css │ ├── services │ │ └── axios.ts │ ├── App.tsx │ └── serviceWorker.ts ├── public │ ├── robots.txt │ ├── favicon.ico │ ├── manifest.json │ └── index.html ├── .env.example ├── .gitignore ├── tsconfig.json ├── postcss.config.js ├── tailwind.config.js ├── package.json └── README.md ├── run.sh ├── assets ├── Logo.png ├── screenshot-home.png ├── screenshot-preview.png └── screenshot-calibrate.png ├── .env.sample ├── ecosystem.config.js ├── api ├── board │ ├── board.schema.ts │ ├── board.service.ts │ └── board.routes.ts ├── error │ ├── error.handler.ts │ └── error.constant.ts ├── services │ ├── nodecache.service.ts │ └── socket.service.ts ├── middlewares │ └── validate-query.ts ├── app.ts └── socket │ └── socket.routes.ts ├── .github ├── ISSUE_TEMPLATE.MD └── PULL_REQUEST_TEMPLATE.md ├── package.json ├── .gitignore ├── tsconfig.json ├── README.md └── yarn.lock /ML/README.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /store/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /nodemon.json: -------------------------------------------------------------------------------- 1 | { 2 | "ignore": ["store/*"] 3 | } 4 | -------------------------------------------------------------------------------- /client/src/react-app-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /ML/.env.example: -------------------------------------------------------------------------------- 1 | FLASK_PORT= 2 | FLASK_DEBUG= -------------------------------------------------------------------------------- /run.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/bash 2 | source ./env/bin/activate 3 | cd ML 4 | python3 app.py -------------------------------------------------------------------------------- /ML/Test1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitaalekhyapaul/shikshak/HEAD/ML/Test1.jpg -------------------------------------------------------------------------------- /ML/Test2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitaalekhyapaul/shikshak/HEAD/ML/Test2.jpg -------------------------------------------------------------------------------- /ML/Test3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitaalekhyapaul/shikshak/HEAD/ML/Test3.jpg -------------------------------------------------------------------------------- /ML/Test4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitaalekhyapaul/shikshak/HEAD/ML/Test4.jpg -------------------------------------------------------------------------------- /ML/Test5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitaalekhyapaul/shikshak/HEAD/ML/Test5.jpg -------------------------------------------------------------------------------- /assets/Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitaalekhyapaul/shikshak/HEAD/assets/Logo.png -------------------------------------------------------------------------------- /ML/install-deps.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/bash 2 | source ../env/bin/activate 3 | pip3 install -r requirements.txt -------------------------------------------------------------------------------- /client/public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /assets/screenshot-home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitaalekhyapaul/shikshak/HEAD/assets/screenshot-home.png -------------------------------------------------------------------------------- /client/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitaalekhyapaul/shikshak/HEAD/client/public/favicon.ico -------------------------------------------------------------------------------- /assets/screenshot-preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitaalekhyapaul/shikshak/HEAD/assets/screenshot-preview.png -------------------------------------------------------------------------------- /assets/screenshot-calibrate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitaalekhyapaul/shikshak/HEAD/assets/screenshot-calibrate.png -------------------------------------------------------------------------------- /.env.sample: -------------------------------------------------------------------------------- 1 | PORT= 2 | NODE_ENV="<"development"|"production">" 3 | FLASK_PORT= -------------------------------------------------------------------------------- /ML/demo.py: -------------------------------------------------------------------------------- 1 | def findPoints(user, address): 2 | print(user) 3 | print("called findPoints from demo.py") 4 | return True 5 | 6 | def convert(user, address): 7 | print(user) 8 | print("called convert from demo.py") 9 | return True -------------------------------------------------------------------------------- /client/.env.example: -------------------------------------------------------------------------------- 1 | REACT_APP_STUN_URLS = "" 2 | REACT_APP_STUN_USERNAME = "" 3 | REACT_APP_STUN_CREDENTIALS = "" 4 | REACT_APP_TURN_URLS = "" 5 | REACT_APP_TURN_USERNAME = "" 6 | REACT_APP_TURN_CREDENTIALS = "" -------------------------------------------------------------------------------- /client/src/setupTests.ts: -------------------------------------------------------------------------------- 1 | // jest-dom adds custom jest matchers for asserting on DOM nodes. 2 | // allows you to do things like: 3 | // expect(element).toHaveTextContent(/react/i) 4 | // learn more: https://github.com/testing-library/jest-dom 5 | import '@testing-library/jest-dom/extend-expect'; 6 | -------------------------------------------------------------------------------- /ecosystem.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | apps: [ 3 | { 4 | name: "Shikshak: Node.js Server", 5 | script: "./build/app.js", 6 | env: { 7 | NODE_ENV: "production", 8 | }, 9 | }, 10 | { 11 | name: "Shikshak: Flask Server", 12 | script: "chmod +x ./run.sh && ./run.sh", 13 | }, 14 | ], 15 | }; 16 | -------------------------------------------------------------------------------- /client/public/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "short_name": "Shikshak", 3 | "name": "Academics made Affordable", 4 | "icons": [{ 5 | "src": "favicon.ico", 6 | "sizes": "64x64 32x32 24x24 16x16", 7 | "type": "image/x-icon" 8 | }], 9 | "start_url": ".", 10 | "display": "standalone", 11 | "theme_color": "#000000", 12 | "background_color": "#ffffff" 13 | } -------------------------------------------------------------------------------- /client/src/components/Shared/Footer.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | 3 | const Footer = () => { 4 | return ( 5 |
9 |

10 | Made using 🧠 and ❤️ by !!CODERS 11 |

12 |
13 | ); 14 | }; 15 | 16 | export default Footer; 17 | -------------------------------------------------------------------------------- /ML/requirements.txt: -------------------------------------------------------------------------------- 1 | ## The following requirements were added by pip freeze: 2 | click==8.0.1 3 | cycler==0.10.0 4 | Flask==2.0.1 5 | itsdangerous==2.0.1 6 | Jinja2==3.0.1 7 | kiwisolver==1.3.1 8 | MarkupSafe==2.0.1 9 | matplotlib==3.4.3 10 | numpy==1.21.1 11 | opencv-python-headless==4.5.3.56 12 | Pillow==8.3.1 13 | pyparsing==2.4.7 14 | python-dateutil==2.8.2 15 | python-dotenv==0.19.0 16 | scipy==1.7.1 17 | six==1.16.0 18 | Werkzeug==2.0.1 19 | -------------------------------------------------------------------------------- /api/board/board.schema.ts: -------------------------------------------------------------------------------- 1 | import * as yup from "yup"; 2 | 3 | export const PostRequestSchema = yup 4 | .object({ 5 | roomId: yup 6 | .string() 7 | .trim() 8 | .matches(/[0-9A-Z]{8}/, "roomId is not valid") 9 | .required(), 10 | boardImg: yup.string().trim().min(1, "boardImg cannot br null").required(), 11 | }) 12 | .required(); 13 | 14 | export type postRequest = yup.InferType; 15 | -------------------------------------------------------------------------------- /client/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # production 12 | /build 13 | 14 | # misc 15 | .DS_Store 16 | .env.local 17 | .env.development.local 18 | .env.test.local 19 | .env.production.local 20 | 21 | npm-debug.log* 22 | yarn-debug.log* 23 | yarn-error.log* 24 | 25 | # tailwind 26 | /src/tailwind.css -------------------------------------------------------------------------------- /client/src/components/Shared/Navbar.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import { Link } from "react-router-dom"; 3 | 4 | const Navbar = () => { 5 | return ( 6 |
7 | 8 | shikshak 13 | 14 |
15 | ); 16 | }; 17 | 18 | export default Navbar; 19 | -------------------------------------------------------------------------------- /client/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "lib": [ 5 | "dom", 6 | "dom.iterable", 7 | "esnext" 8 | ], 9 | "allowJs": true, 10 | "skipLibCheck": true, 11 | "esModuleInterop": true, 12 | "allowSyntheticDefaultImports": true, 13 | "strict": true, 14 | "forceConsistentCasingInFileNames": true, 15 | "module": "esnext", 16 | "moduleResolution": "node", 17 | "resolveJsonModule": true, 18 | "isolatedModules": true, 19 | "noEmit": true, 20 | "jsx": "react" 21 | }, 22 | "include": [ 23 | "src" 24 | ] 25 | } 26 | -------------------------------------------------------------------------------- /client/postcss.config.js: -------------------------------------------------------------------------------- 1 | const purgecss = require("@fullhuman/postcss-purgecss")({ 2 | content: [ 3 | "./src/**/*.jsx", 4 | "./src/**/*.js", 5 | "./src/**/*.tsx", 6 | "./src/**/*.ts", 7 | "./public/index.html", 8 | ], 9 | css: ["./src/tailwind.css"], 10 | // Include any special characters you're using in this regular expression 11 | defaultExtractor: (content) => content.match(/[A-Za-z0-9-_:/]+/g) || [], 12 | }); 13 | 14 | module.exports = { 15 | plugins: [ 16 | require("tailwindcss"), 17 | require("autoprefixer"), 18 | ...(process.env.NODE_ENV === "production" ? [purgecss] : []), 19 | ], 20 | }; 21 | -------------------------------------------------------------------------------- /api/error/error.handler.ts: -------------------------------------------------------------------------------- 1 | import { Request, Response, NextFunction } from "express"; 2 | 3 | export interface ApiError extends Error { 4 | message: string; 5 | httpStatus?: number; 6 | } 7 | 8 | export const errorHandler = ( 9 | err: ApiError, 10 | req: Request, 11 | res: Response, 12 | next: NextFunction 13 | ) => { 14 | console.error("ApiError\n%o", { error: err }); 15 | if (err.httpStatus) { 16 | return res.status(err.httpStatus).json({ 17 | success: false, 18 | error: err.message, 19 | }); 20 | } 21 | res.status(500).json({ 22 | success: false, 23 | error: "Internal Server Error.", 24 | }); 25 | }; 26 | -------------------------------------------------------------------------------- /client/tailwind.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | future: { 3 | // removeDeprecatedGapUtilities: true, 4 | // purgeLayersByDefault: true, 5 | }, 6 | purge: [], 7 | theme: { 8 | extend: { 9 | fontSize: { 10 | "7xl": "6rem", 11 | "8xl": "8rem", 12 | "9xl": "10rem", 13 | }, 14 | fontFamily: { 15 | cursive: ["Kalam", "cursive"], 16 | "sans-serif": [ 17 | "Fira Sans", 18 | "Roboto", 19 | "Oxygen", 20 | "Ubuntu", 21 | "Cantarell", 22 | "Droid Sans", 23 | "Helvetica Neue", 24 | ], 25 | }, 26 | colors: { 27 | "alice-blue": "#e2e8f0", 28 | }, 29 | }, 30 | }, 31 | variants: {}, 32 | plugins: [], 33 | }; 34 | -------------------------------------------------------------------------------- /client/src/index.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import ReactDOM from "react-dom"; 3 | import { BrowserRouter } from "react-router-dom"; 4 | 5 | import * as serviceWorker from "./serviceWorker"; 6 | import Navbar from "./components/Shared/Navbar"; 7 | import App from "./App"; 8 | import Footer from "./components/Shared/Footer"; 9 | 10 | ReactDOM.render( 11 | 12 | 13 | 14 | 15 |