Repository: shashiben/Hostel-Management Branch: master Commit: 0a2153e5af2b Files: 65 Total size: 156.2 KB Directory structure: gitextract_epyapo_v/ ├── .eslintcache ├── .gitignore ├── .vscode/ │ └── settings.json ├── Procfile ├── README.md ├── frontend/ │ ├── .eslintcache │ ├── index.html │ ├── package.json │ ├── public/ │ │ ├── manifest.json │ │ └── robots.txt │ ├── src/ │ │ ├── App.jsx │ │ ├── actions/ │ │ │ ├── attendanceActions.jsx │ │ │ ├── studentActions.jsx │ │ │ └── userActions.jsx │ │ ├── components/ │ │ │ ├── analysisComponent.jsx │ │ │ ├── attendanceTable.jsx │ │ │ ├── attendanceTableComponent.jsx │ │ │ ├── footer.jsx │ │ │ ├── formContainer.jsx │ │ │ ├── header.jsx │ │ │ ├── loader.jsx │ │ │ ├── message.jsx │ │ │ ├── paginate.jsx │ │ │ ├── rating.jsx │ │ │ ├── searchBox.jsx │ │ │ └── student.jsx │ │ ├── constants/ │ │ │ ├── attendanceConstant.jsx │ │ │ ├── studentConstant.jsx │ │ │ └── userConstants.jsx │ │ ├── css/ │ │ │ └── index.css │ │ ├── main.jsx │ │ ├── reducers/ │ │ │ ├── attendanceReducer.jsx │ │ │ ├── studentsReducer.jsx │ │ │ └── userReducers.jsx │ │ ├── reportWebVitals.js │ │ ├── screens/ │ │ │ ├── Authentication Screens/ │ │ │ │ ├── LoginView.jsx │ │ │ │ └── RegisterView.jsx │ │ │ ├── addStudentView.jsx │ │ │ ├── analysisView.jsx │ │ │ ├── attendanceView.jsx │ │ │ ├── homeView.jsx │ │ │ ├── profileView.jsx │ │ │ ├── studentDetailsView.jsx │ │ │ ├── studentTableView.jsx │ │ │ ├── userEditView.jsx │ │ │ └── userListView.jsx │ │ └── store.jsx │ └── vite.config.js ├── package.json └── server/ ├── config/ │ └── mongoDBConfig.js ├── controllers/ │ ├── attendanceController.js │ ├── studentController.js │ └── userController.js ├── data/ │ └── students.js ├── index.js ├── middleware/ │ ├── authMiddleware.js │ └── errorMiddleware.js ├── models/ │ ├── attendance.js │ ├── student.js │ └── user.js ├── routes/ │ ├── attendanceRoutes.js │ ├── studentRoutes.js │ └── userRoutes.js ├── seeder.js └── utils/ └── generateToken.js ================================================ FILE CONTENTS ================================================ ================================================ FILE: .eslintcache ================================================ [{"/home/shashi/Projects/React Projects/hostel-app/src/reportWebVitals.js":"1","/home/shashi/Projects/React Projects/hostel-app/src/components/header.jsx":"2","/home/shashi/Projects/React Projects/hostel-app/src/reducers/orphanageReducer.jsx":"3","/home/shashi/Projects/React Projects/hostel-app/src/components/orphanage.jsx":"4","/home/shashi/Projects/React Projects/hostel-app/src/constants/orphanageConstant.jsx":"5","/home/shashi/Projects/React Projects/hostel-app/src/App.js":"6","/home/shashi/Projects/React Projects/hostel-app/src/screens/orphangeDetailsView.jsx":"7","/home/shashi/Projects/React Projects/hostel-app/src/screens/homeView.jsx":"8","/home/shashi/Projects/React Projects/hostel-app/src/components/searchBox.jsx":"9","/home/shashi/Projects/React Projects/hostel-app/src/screens/addStudentView.jsx":"10","/home/shashi/Projects/React Projects/hostel-app/src/screens/analysisView.jsx":"11","/home/shashi/Projects/React Projects/hostel-app/src/actions/orphanageActions.jsx":"12","/home/shashi/Projects/React Projects/hostel-app/src/screens/editOrphanageDetails.jsx":"13"},{"size":362,"mtime":1611587355656,"results":"14","hashOfConfig":"15"},{"size":1420,"mtime":1611588899653,"results":"16","hashOfConfig":"15"},{"size":2572,"mtime":1611587355656,"results":"17","hashOfConfig":"15"},{"size":1015,"mtime":1611587355656,"results":"18","hashOfConfig":"15"},{"size":1091,"mtime":1611587355656,"results":"19","hashOfConfig":"15"},{"size":1181,"mtime":1611590345616,"results":"20","hashOfConfig":"15"},{"size":3630,"mtime":1611587679636,"results":"21","hashOfConfig":"15"},{"size":1240,"mtime":1611588079853,"results":"22","hashOfConfig":"15"},{"size":783,"mtime":1611588125620,"results":"23","hashOfConfig":"15"},{"size":4986,"mtime":1611590107133,"results":"24","hashOfConfig":"15"},{"size":1222,"mtime":1611591364130,"results":"25","hashOfConfig":"15"},{"size":4092,"mtime":1611587355653,"results":"26","hashOfConfig":"15"},{"size":4936,"mtime":1611587355656,"results":"27","hashOfConfig":"15"},{"filePath":"28","messages":"29","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"30"},"cbixyl",{"filePath":"31","messages":"32","errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"33","usedDeprecatedRules":"30"},{"filePath":"34","messages":"35","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36","messages":"37","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38","messages":"39","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40","messages":"41","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"42","messages":"43","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"44","usedDeprecatedRules":"45"},{"filePath":"46","messages":"47","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"30"},{"filePath":"48","messages":"49","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"45"},{"filePath":"50","messages":"51","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"52","messages":"53","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"54","usedDeprecatedRules":"30"},{"filePath":"55","messages":"56","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"57","messages":"58","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"/home/shashi/Projects/React Projects/hostel-app/src/reportWebVitals.js",[],["59","60"],"/home/shashi/Projects/React Projects/hostel-app/src/components/header.jsx",["61","62"],"import React from 'react'\nimport { Container, Nav, Navbar, NavDropdown } from 'react-bootstrap'\nimport { Route } from 'react-router-dom'\nimport { LinkContainer } from 'react-router-bootstrap'\nimport SearchBox from './searchBox'\n\nconst Header = () => {\n return (\n
\n \n \n \n NSD Solutions\n \n \n \n } />\n\n \n \n \n \n
\n )\n}\n\nexport default Header\n","/home/shashi/Projects/React Projects/hostel-app/src/reducers/orphanageReducer.jsx",[],"/home/shashi/Projects/React Projects/hostel-app/src/components/orphanage.jsx",[],"/home/shashi/Projects/React Projects/hostel-app/src/constants/orphanageConstant.jsx",[],"/home/shashi/Projects/React Projects/hostel-app/src/App.js",[],"/home/shashi/Projects/React Projects/hostel-app/src/screens/orphangeDetailsView.jsx",["63"],"import React, { useEffect } from 'react'\nimport { useDispatch, useSelector } from 'react-redux'\n\nimport {\n getorphanageDetails,\n deleteOrphanage,\n} from '../actions/orphanageActions'\nimport { Row, Col, Image, ListGroup, Card, Button } from 'react-bootstrap'\nimport { Link } from 'react-router-dom'\nimport Rating from '../components/rating'\nimport Loading from '../components/loader.jsx'\nimport Message from '../components/message.jsx'\nimport { ORPHANAGE_DELETE_RESET } from '../constants/orphanageConstant'\n\nconst OrphanageDetailsView = ({ history, match }) => {\n const orphanageId = match.params.id\n const dispatch = useDispatch()\n const orphanageDetails = useSelector((state) => state.orphanageDetails)\n const { loading, error, orphanage } = orphanageDetails\n const orphanageDelete = useSelector((state) => state.orphanageDelete)\n const {\n loading: loadingDelete,\n error: errorDelete,\n success,\n } = orphanageDelete\n useEffect(() => {\n if (success) {\n dispatch({ type: ORPHANAGE_DELETE_RESET })\n history.push('/')\n }\n console.log(JSON.stringify(orphanage))\n if (orphanageId !== orphanage._id) {\n dispatch(getorphanageDetails(orphanageId))\n }\n }, [dispatch, match, success])\n\n const pushToEdit = () => {\n history.push(`/orphanage/${orphanage._id}/edit`)\n }\n\n const deleteOrphanag = () => {\n dispatch(deleteOrphanage(orphanageId))\n }\n\n \n\n \n\n return (\n <>\n \n Go Back\n \n {loadingDelete && }\n {errorDelete && {errorDelete}}\n {loading ? (\n \n ) : error ? (\n {error}\n ) : (\n \n \n {orphanage.name}\n \n \n \n \n

{orphanage.name}

\n
\n \n \n \n\n \n \n \n \n \n \n
\n \n \n \n \n \n \n Contact:\n \n {orphanage.contact}\n \n \n \n \n \n Address:\n \n {orphanage.city},{orphanage.state}\n \n \n \n \n \n \n \n \n \n \n
\n )}\n \n )\n}\n\nexport default OrphanageDetailsView\n",["64","65"],"/home/shashi/Projects/React Projects/hostel-app/src/screens/homeView.jsx",[],"/home/shashi/Projects/React Projects/hostel-app/src/components/searchBox.jsx",[],"/home/shashi/Projects/React Projects/hostel-app/src/screens/addStudentView.jsx",[],"/home/shashi/Projects/React Projects/hostel-app/src/screens/analysisView.jsx",["66"],"import React, { useState, useEffect } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { Row, Col, Table } from \"react-bootstrap\";\nimport DatePicker from \"react-datepicker\";\nimport \"react-datepicker/dist/react-datepicker.css\";\n\nconst AnalysisView = () => {\n const [startDate, setStartDate] = useState(new Date());\n\n return (\n <>\n \n Go Back\n \n \n \n \n Analysis for \n \n {startDate.toISOString().toString().substring(0, 10)}\n \n \n \n setStartDate(date)}\n />\n \n \n \n \n \n \n \n \n \n \n \n \n \n
NameContact NoRoom NoBlock NoCategoryAttendance
\n \n \n );\n};\n\nexport default AnalysisView;\n","/home/shashi/Projects/React Projects/hostel-app/src/actions/orphanageActions.jsx",[],"/home/shashi/Projects/React Projects/hostel-app/src/screens/editOrphanageDetails.jsx",[],{"ruleId":"67","replacedBy":"68"},{"ruleId":"69","replacedBy":"70"},{"ruleId":"71","severity":1,"message":"72","line":3,"column":10,"nodeType":"73","messageId":"74","endLine":3,"endColumn":15},{"ruleId":"71","severity":1,"message":"75","line":5,"column":8,"nodeType":"73","messageId":"74","endLine":5,"endColumn":17},{"ruleId":"76","severity":1,"message":"77","line":35,"column":6,"nodeType":"78","endLine":35,"endColumn":32,"suggestions":"79"},{"ruleId":"67","replacedBy":"80"},{"ruleId":"69","replacedBy":"81"},{"ruleId":"71","severity":1,"message":"82","line":1,"column":27,"nodeType":"73","messageId":"74","endLine":1,"endColumn":36},"no-native-reassign",["83"],"no-negated-in-lhs",["84"],"no-unused-vars","'Route' is defined but never used.","Identifier","unusedVar","'SearchBox' is defined but never used.","react-hooks/exhaustive-deps","React Hook useEffect has missing dependencies: 'history', 'orphanage', and 'orphanageId'. Either include them or remove the dependency array.","ArrayExpression",["85"],["83"],["84"],"'useEffect' is defined but never used.","no-global-assign","no-unsafe-negation",{"desc":"86","fix":"87"},"Update the dependencies array to be: [dispatch, history, match, orphanage, orphanageId, success]",{"range":"88","text":"89"},[1198,1224],"[dispatch, history, match, orphanage, orphanageId, success]"] ================================================ FILE: .gitignore ================================================ # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. # dependencies /node_modules node_modules/ /.pnp .pnp.js # testing /coverage # production /frontend/build /frontend/dist /frontend/node_modules # misc .DS_Store .env .env.local .env.development.local .env.test.local .env.production.local npm-debug.log* yarn-debug.log* yarn-error.log* ================================================ FILE: .vscode/settings.json ================================================ { "cmake.configureOnOpen": true } ================================================ FILE: Procfile ================================================ web: node server/index.js ================================================ FILE: README.md ================================================ # 🏠 Hostel Management **MERN-ish chaos, now with Vite** — Express + MongoDB in the back, React + Redux up front. No Next.js; we’re not that fancy. Yet. --- ## 🚀 Run this thing (3 steps, you’ve got this) 1. **Feed the machine** ```bash npm install && npm install --prefix frontend ``` 2. **Summon Mongo** 🍃 Have MongoDB running somewhere. If it’s not up, the API will ghost you harder than a bad roommate. 3. **Whisper secrets** (repo root, `.env`) ```env NODE_ENV=development PORT=5000 MONGO_URI=mongodb://127.0.0.1:27017/your_db_name JWT_SECRET=make_it_long_and_random_no_password123_pls ``` 4. **Hit go** 🎬 ```bash npm run dev ``` - UI: [http://localhost:3000](http://localhost:3000) - API: [http://localhost:5000](http://localhost:5000) (dev says “API is running” — it’s shy, not broken) **Production build** (when you’re showing off): `npm run build --prefix frontend` then `NODE_ENV=production npm start` --- ## ✨ What it does (feature buffet) | | | |---|---| | 🔐 | Register / login (navbar stays minimal until you’re in — we’re not nosy) | | 👤 | Student CRUD + details | | 📍 | Update student whereabouts | | ✅ | Daily attendance | | 📊 | Analysis views | | 📥 | CSV export for attendance | | 🗑️ | Nuke old attendance by “last N days” | | 👑 | Admin: user list + toggle admin status | --- ## 🤝 Contributing PRs welcome. Big ideas? Open an issue first so we can panic together constructively. Tests: `npm test --prefix frontend` (Vitest; add tests if you’re feeling brave). ================================================ FILE: frontend/.eslintcache ================================================ [{"/home/shashi/Projects/React Projects/hostel-app/frontend/src/App.js":"1","/home/shashi/Projects/React Projects/hostel-app/frontend/src/screens/homeView.jsx":"2","/home/shashi/Projects/React Projects/hostel-app/frontend/src/screens/addStudentView.jsx":"3","/home/shashi/Projects/React Projects/hostel-app/frontend/src/index.js":"4","/home/shashi/Projects/React Projects/hostel-app/frontend/src/store.jsx":"5","/home/shashi/Projects/React Projects/hostel-app/frontend/src/components/header.jsx":"6","/home/shashi/Projects/React Projects/hostel-app/frontend/src/components/message.jsx":"7","/home/shashi/Projects/React Projects/hostel-app/frontend/src/components/rating.jsx":"8","/home/shashi/Projects/React Projects/hostel-app/frontend/src/components/searchBox.jsx":"9","/home/shashi/Projects/React Projects/hostel-app/frontend/src/reducers/studentsReducer.jsx":"10","/home/shashi/Projects/React Projects/hostel-app/frontend/src/constants/studentConstant.jsx":"11","/home/shashi/Projects/React Projects/hostel-app/frontend/src/actions/studentActions.jsx":"12","/home/shashi/Projects/React Projects/hostel-app/frontend/src/components/student.jsx":"13","/home/shashi/Projects/React Projects/hostel-app/frontend/src/actions/userActions.jsx":"14","/home/shashi/Projects/React Projects/hostel-app/frontend/src/reducers/userReducers.jsx":"15","/home/shashi/Projects/React Projects/hostel-app/frontend/src/screens/Authentication Screens/LoginView.jsx":"16","/home/shashi/Projects/React Projects/hostel-app/frontend/src/components/formContainer.jsx":"17","/home/shashi/Projects/React Projects/hostel-app/frontend/src/screens/Authentication Screens/RegisterView.jsx":"18","/home/shashi/Projects/React Projects/hostel-app/frontend/src/constants/userConstants.jsx":"19","/home/shashi/Projects/React Projects/hostel-app/frontend/src/screens/analysisView.jsx":"20","/home/shashi/Projects/React Projects/hostel-app/frontend/src/components/loader.jsx":"21","/home/shashi/Projects/React Projects/hostel-app/frontend/src/components/footer.jsx":"22","/home/shashi/Projects/React Projects/hostel-app/frontend/src/reportWebVitals.js":"23","/home/shashi/Projects/React Projects/hostel-app/frontend/src/components/paginate.jsx":"24","/home/shashi/Projects/React Projects/hostel-app/frontend/src/screens/studentDetailsView.jsx":"25","/home/shashi/Projects/React Projects/hostel-app/frontend/src/screens/studentTableView.jsx":"26","/home/shashi/Projects/React Projects/hostel-app/frontend/src/screens/attendanceView.jsx":"27","/home/shashi/Projects/React Projects/hostel-app/frontend/src/reducers/attendanceReducer.jsx":"28","/home/shashi/Projects/React Projects/hostel-app/frontend/src/actions/attendanceActions.jsx":"29","/home/shashi/Projects/React Projects/hostel-app/frontend/src/constants/attendanceConstant.jsx":"30","/home/shashi/Projects/React Projects/hostel-app/frontend/src/components/analysisComponent.jsx":"31","/home/shashi/Projects/React Projects/hostel-app/frontend/src/components/attendanceTable.jsx":"32","/home/shashi/Projects/React Projects/hostel-app/frontend/src/components/attendanceTableComponent.jsx":"33","/home/shashi/Projects/React Projects/hostel-app/frontend/src/screens/profileView.jsx":"34","/home/shashi/Projects/React Projects/hostel-app/frontend/src/screens/userListView.jsx":"35","/home/shashi/Projects/React Projects/hostel-app/frontend/src/screens/userEditView.jsx":"36"},{"size":2000,"mtime":1612457509687,"results":"37","hashOfConfig":"38"},{"size":2760,"mtime":1612458544737,"results":"39","hashOfConfig":"38"},{"size":7160,"mtime":1612266721633,"results":"40","hashOfConfig":"38"},{"size":595,"mtime":1611587355656,"results":"41","hashOfConfig":"38"},{"size":1760,"mtime":1612540038213,"results":"42","hashOfConfig":"38"},{"size":2509,"mtime":1612455514013,"results":"43","hashOfConfig":"38"},{"size":236,"mtime":1611587355656,"results":"44","hashOfConfig":"38"},{"size":1670,"mtime":1611587355656,"results":"45","hashOfConfig":"38"},{"size":783,"mtime":1611588125620,"results":"46","hashOfConfig":"38"},{"size":3180,"mtime":1612338704456,"results":"47","hashOfConfig":"38"},{"size":1297,"mtime":1612276158097,"results":"48","hashOfConfig":"38"},{"size":4652,"mtime":1612511277820,"results":"49","hashOfConfig":"38"},{"size":861,"mtime":1612458074420,"results":"50","hashOfConfig":"38"},{"size":6593,"mtime":1612243543269,"results":"51","hashOfConfig":"38"},{"size":3520,"mtime":1612243170023,"results":"52","hashOfConfig":"38"},{"size":2146,"mtime":1612242755929,"results":"53","hashOfConfig":"38"},{"size":331,"mtime":1611587355653,"results":"54","hashOfConfig":"38"},{"size":3149,"mtime":1612243440719,"results":"55","hashOfConfig":"38"},{"size":1502,"mtime":1612242844223,"results":"56","hashOfConfig":"38"},{"size":3733,"mtime":1612540523853,"results":"57","hashOfConfig":"38"},{"size":386,"mtime":1611587355656,"results":"58","hashOfConfig":"38"},{"size":280,"mtime":1611587355653,"results":"59","hashOfConfig":"38"},{"size":362,"mtime":1611587355656,"results":"60","hashOfConfig":"38"},{"size":743,"mtime":1612503930076,"results":"61","hashOfConfig":"38"},{"size":5749,"mtime":1612511177533,"results":"62","hashOfConfig":"38"},{"size":2402,"mtime":1612440885763,"results":"63","hashOfConfig":"38"},{"size":1116,"mtime":1612453105207,"results":"64","hashOfConfig":"38"},{"size":1789,"mtime":1612540078413,"results":"65","hashOfConfig":"38"},{"size":2462,"mtime":1612540492013,"results":"66","hashOfConfig":"38"},{"size":859,"mtime":1612539882713,"results":"67","hashOfConfig":"38"},{"size":2641,"mtime":1612539718740,"results":"68","hashOfConfig":"38"},{"size":2085,"mtime":1612454468233,"results":"69","hashOfConfig":"38"},{"size":3361,"mtime":1612453607120,"results":"70","hashOfConfig":"38"},{"size":3635,"mtime":1612455338080,"results":"71","hashOfConfig":"38"},{"size":2730,"mtime":1612457423720,"results":"72","hashOfConfig":"38"},{"size":3182,"mtime":1612457679380,"results":"73","hashOfConfig":"38"},{"filePath":"74","messages":"75","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"76"},"cy2yr9",{"filePath":"77","messages":"78","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"79","usedDeprecatedRules":"76"},{"filePath":"80","messages":"81","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"82"},{"filePath":"83","messages":"84","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"85"},{"filePath":"86","messages":"87","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"88","messages":"89","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"82"},{"filePath":"90","messages":"91","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"92"},{"filePath":"93","messages":"94","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"95"},{"filePath":"96","messages":"97","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"98"},{"filePath":"99","messages":"100","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"101"},{"filePath":"102","messages":"103","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"76"},{"filePath":"104","messages":"105","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"106","messages":"107","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"101"},{"filePath":"108","messages":"109","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"76"},{"filePath":"110","messages":"111","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"101"},{"filePath":"112","messages":"113","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"95"},{"filePath":"114","messages":"115","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"101"},{"filePath":"116","messages":"117","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"82"},{"filePath":"118","messages":"119","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"101"},{"filePath":"120","messages":"121","errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"122"},{"filePath":"123","messages":"124","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"95"},{"filePath":"125","messages":"126","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"101"},{"filePath":"127","messages":"128","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"101"},{"filePath":"129","messages":"130","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"101"},{"filePath":"131","messages":"132","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"133","usedDeprecatedRules":"101"},{"filePath":"134","messages":"135","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"136","usedDeprecatedRules":"82"},{"filePath":"137","messages":"138","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"76"},{"filePath":"139","messages":"140","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"141","messages":"142","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"143","messages":"144","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"145","messages":"146","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"147","messages":"148","errorCount":0,"warningCount":3,"fixableErrorCount":0,"fixableWarningCount":0,"source":"149","usedDeprecatedRules":"82"},{"filePath":"150","messages":"151","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"152"},{"filePath":"153","messages":"154","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"95"},{"filePath":"155","messages":"156","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"157","messages":"158","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"101"},"/home/shashi/Projects/React Projects/hostel-app/frontend/src/App.js",[],["159","160"],"/home/shashi/Projects/React Projects/hostel-app/frontend/src/screens/homeView.jsx",["161"],"import React, { useEffect, useState } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport Student from \"../components/student\";\nimport Loading from \"../components/loader.jsx\";\nimport Message from \"../components/message.jsx\";\nimport { listStudents } from \"../actions/studentActions\";\nimport Paginate from \"../components/paginate\";\nimport {\n Row,\n Col,\n ButtonGroup,\n ToggleButton,\n Container,\n} from \"react-bootstrap\";\nimport StudentsTableView from \"./studentTableView\";\n\nconst HomeView = ({ match, history }) => {\n const [isGrid, setIsGrid] = useState(true);\n const keyword = match.params.keyword;\n\n const pageNumber = match.params.pageNumber || 1;\n const userLogin = useSelector((state) => state.userLogin);\n const { loading: userLoading, userInfo } = userLogin;\n\n const dispatch = useDispatch();\n\n const studentsList = useSelector((state) => state.studentsList);\n const { loading, error, students, page, pages } = studentsList;\n\n useEffect(() => {\n if (!userLoading && !userInfo) {\n history.push(\"/login\");\n }\n dispatch(listStudents(keyword, pageNumber));\n }, [keyword, pageNumber]);\n\n return (\n <>\n <>\n \n \n \n \n \n {[\"Grid\", \"Table\"].map((type) => (\n \n setIsGrid(e.target.value === \"Grid\" ? true : false)\n }\n >\n {type === \"Grid\" ? <> Grid : <> Table }\n \n ))}\n \n \n \n \n \n \n\n

Students

\n {loading ? (\n \n ) : error ? (\n {error}\n ) : isGrid ? (\n <>\n \n {students.map((student) => (\n \n \n \n ))}\n \n \n \n ) : (\n <>\n \n \n )}\n \n );\n};\n\nexport default HomeView;\n","/home/shashi/Projects/React Projects/hostel-app/frontend/src/screens/addStudentView.jsx",[],["162","163"],"/home/shashi/Projects/React Projects/hostel-app/frontend/src/index.js",[],["164","165"],"/home/shashi/Projects/React Projects/hostel-app/frontend/src/store.jsx",[],"/home/shashi/Projects/React Projects/hostel-app/frontend/src/components/header.jsx",[],"/home/shashi/Projects/React Projects/hostel-app/frontend/src/components/message.jsx",[],["166","167"],"/home/shashi/Projects/React Projects/hostel-app/frontend/src/components/rating.jsx",[],["168","169"],"/home/shashi/Projects/React Projects/hostel-app/frontend/src/components/searchBox.jsx",[],["170","171"],"/home/shashi/Projects/React Projects/hostel-app/frontend/src/reducers/studentsReducer.jsx",[],["172","173"],"/home/shashi/Projects/React Projects/hostel-app/frontend/src/constants/studentConstant.jsx",[],"/home/shashi/Projects/React Projects/hostel-app/frontend/src/actions/studentActions.jsx",[],"/home/shashi/Projects/React Projects/hostel-app/frontend/src/components/student.jsx",[],"/home/shashi/Projects/React Projects/hostel-app/frontend/src/actions/userActions.jsx",[],"/home/shashi/Projects/React Projects/hostel-app/frontend/src/reducers/userReducers.jsx",[],"/home/shashi/Projects/React Projects/hostel-app/frontend/src/screens/Authentication Screens/LoginView.jsx",[],"/home/shashi/Projects/React Projects/hostel-app/frontend/src/components/formContainer.jsx",[],"/home/shashi/Projects/React Projects/hostel-app/frontend/src/screens/Authentication Screens/RegisterView.jsx",[],"/home/shashi/Projects/React Projects/hostel-app/frontend/src/constants/userConstants.jsx",[],"/home/shashi/Projects/React Projects/hostel-app/frontend/src/screens/analysisView.jsx",["174","175"],"import React, { useState, useEffect } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { Row, Col, Button, Modal, Form } from \"react-bootstrap\";\nimport DatePicker from \"react-datepicker\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport \"react-datepicker/dist/react-datepicker.css\";\nimport {\n deleteAttendanceByDate,\n getAnalysisByDate,\n} from \"../actions/attendanceActions\";\nimport AnalysisComponent from \"../components/analysisComponent\";\nimport Loading from \"../components/loader\";\nimport Message from \"../components/message\";\n\nconst AnalysisView = () => {\n const dispatch = useDispatch();\n const [modal, setModal] = useState(false);\n const [days, setDays] = useState(0);\n const [idList, setIdList] = useState([]);\n const [startDate, setStartDate] = useState(new Date());\n const attendanceAnalysis = useSelector((state) => state.attendanceAnalysis);\n const { attendance } = attendanceAnalysis;\n const attendanceDelete = useSelector((state) => state.attendanceDelete);\n const {\n loading: loadingDelete,\n success: successDelete,\n error: errorDelete,\n } = attendanceDelete;\n useEffect(() => {\n if (attendance) {\n var temp = idList;\n Object.entries(attendance.details).map((at) => {\n temp.push(at[0]);\n });\n\n setIdList(temp);\n } else {\n dispatch(getAnalysisByDate(startDate.toString().substring(0, 15)));\n }\n }, [attendance, dispatch]);\n\n const changeDate = (date) => {\n dispatch(getAnalysisByDate(date.toString().substring(0, 15)));\n setStartDate(date);\n };\n const showModal = () => {\n setModal(true);\n };\n const closeModal = () => {\n setModal(false);\n };\n\n const startDelete = () => {\n setModal(false);\n dispatch(deleteAttendanceByDate(days));\n };\n\n return (\n <>\n \n \n Go Back\n \n
\n \n
\n
\n {loadingDelete && }\n {errorDelete && {errorDelete}}\n {successDelete && Attendance Deleted}\n\n \n \n \n Analysis for \n \n {startDate.toISOString().toString().substring(0, 10)}\n \n \n \n changeDate(date)}\n />\n \n \n \n \n Enter Number of days before to delete\n \n \n
\n \n Enter no of days\n setDays(e.target.value)}\n >\n \n
\n
\n \n \n \n \n
\n {}\n \n \n );\n};\n\nexport default AnalysisView;\n","/home/shashi/Projects/React Projects/hostel-app/frontend/src/components/loader.jsx",[],"/home/shashi/Projects/React Projects/hostel-app/frontend/src/components/footer.jsx",[],"/home/shashi/Projects/React Projects/hostel-app/frontend/src/reportWebVitals.js",[],"/home/shashi/Projects/React Projects/hostel-app/frontend/src/components/paginate.jsx",[],"/home/shashi/Projects/React Projects/hostel-app/frontend/src/screens/studentDetailsView.jsx",["176"],"import React, { useState, useEffect } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport {\n Row,\n Col,\n Image,\n ListGroup,\n Card,\n Button,\n Form,\n} from \"react-bootstrap\";\nimport Loading from \"../components/loader\";\nimport Message from \"../components/message\";\nimport {\n getStudentDetails,\n updateStudent,\n deleteStudent,\n} from \"../actions/studentActions\";\nimport { STUDENT_UPDATE_RESET } from \"../constants/studentConstant\";\nconst StudentDetailsView = ({ match, history }) => {\n const [status, setStatus] = useState(\"\");\n const dispatch = useDispatch();\n const studentDetails = useSelector((state) => state.studentDetails);\n const { loading, error, student } = studentDetails;\n const studentUpdate = useSelector((state) => state.studentUpdate);\n const {\n loading: loadingUpdate,\n error: errorUpdate,\n success: successUpdate,\n } = studentUpdate;\n const studentDelete = useSelector((state) => state.studentDelete);\n const {\n loading: loadingDelete,\n error: errorDelete,\n success: successDelete,\n } = studentDelete;\n\n useEffect(() => {\n if (successDelete) {\n history.push(\"/\");\n }\n if (successUpdate) {\n dispatch({ type: STUDENT_UPDATE_RESET });\n }\n if (!student || !student._id || student._id !== match.params.id) {\n dispatch(getStudentDetails(match.params.id));\n }\n if (student && student._id && !status) {\n setStatus(student.status);\n }\n }, [dispatch, match, successUpdate, successDelete]);\n\n const navigateToEdit = () => {\n history.push({\n pathname: `/student/edit/${student._id}`,\n state: { studentProps: student },\n });\n };\n const updateStatus = () => {\n student.status = status;\n dispatch(updateStudent(student));\n };\n\n const deleteStuden = () => {\n if (window.confirm(\"Are you sure\")) {\n dispatch(deleteStudent(student._id));\n }\n };\n return (\n <>\n \n Go Back\n \n {loading || loadingUpdate || loadingDelete ? (\n \n ) : error ? (\n {error}\n ) : (\n <>\n {errorUpdate && {errorUpdate}}\n {errorDelete && {errorDelete}}\n {student && (\n \n \n {student.name}\n \n \n \n \n

{student.name}

\n
\n \n Phone No:{student.contact}\n \n \n Father Contact:{student.fatherContact}\n \n \n City:{student.city}\n \n \n Address:{student.address}\n \n
\n \n \n \n \n \n \n Room No:\n {student.roomNo}\n \n \n \n \n Block No:\n {student.blockNo}\n \n \n \n \n Status:\n \n setStatus(e.target.value)}\n >\n {[\"Hostel\", \"Outside\", \"Home\"].map((x) => (\n \n ))}\n \n \n \n \n \n \n Update\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n )}\n \n )}\n \n );\n};\n\nexport default StudentDetailsView;\n","/home/shashi/Projects/React Projects/hostel-app/frontend/src/screens/studentTableView.jsx",["177"],"import React, { useEffect } from \"react\";\nimport { Table } from \"react-bootstrap\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport Message from \"../components/message\";\nimport Loader from \"../components/loader\";\nimport Paginate from \"../components/paginate\";\nimport { listStudents } from \"../actions/studentActions\";\nimport { Link } from \"react-router-dom\";\n\nconst StudentsTableView = ({ keyword, pageNumber }) => {\n const dispatch = useDispatch();\n\n const studentsList = useSelector((state) => state.studentsList);\n const { loading, error, students, page, pages } = studentsList;\n useEffect(() => {\n if (!students) {\n dispatch(listStudents(keyword, pageNumber));\n }\n }, [dispatch, keyword, pageNumber]);\n return (\n <>\n {loading ? (\n \n ) : error ? (\n {error}\n ) : (\n <>\n \n \n \n \n \n \n \n \n \n \n \n \n {students.map((student) => (\n \n \n \n \n \n \n \n \n ))}\n \n
StreamNAMESTATUSCONTACTROOM NOCITY
{student.category}\n {student.name}\n \n \n {student.status}\n \n \n {student.contact}\n {student.roomNo}{student.city}
\n \n \n )}\n \n );\n};\n\nexport default StudentsTableView;\n","/home/shashi/Projects/React Projects/hostel-app/frontend/src/screens/attendanceView.jsx",[],"/home/shashi/Projects/React Projects/hostel-app/frontend/src/reducers/attendanceReducer.jsx",[],"/home/shashi/Projects/React Projects/hostel-app/frontend/src/actions/attendanceActions.jsx",[],"/home/shashi/Projects/React Projects/hostel-app/frontend/src/constants/attendanceConstant.jsx",[],"/home/shashi/Projects/React Projects/hostel-app/frontend/src/components/analysisComponent.jsx",["178"],"/home/shashi/Projects/React Projects/hostel-app/frontend/src/components/attendanceTable.jsx",["179","180","181"],"import React, { useEffect, useState } from \"react\";\nimport { useSelector, useDispatch } from \"react-redux\";\nimport Loading from \"./loader\";\nimport Message from \"./message\";\nimport AttendanceTableComponent from \"./attendanceTableComponent\";\n\nconst AttendanceTable = ({ roomNo }) => {\n const dispatch = useDispatch();\n const [attendanceMap, setAttendanceMap] = useState({});\n\n const getStudentsByRoomNo = useSelector((state) => state.getStudentsByRoomNo);\n const { loading, error, students, attendance } = getStudentsByRoomNo;\n const attendanceDataEnter = useSelector((state) => state.attendanceDataEnter);\n const {\n loading: loadingAttendance,\n error: errorAttendance,\n } = attendanceDataEnter;\n useEffect(() => {\n if (students) {\n arrangeTable();\n }\n }, [dispatch, attendance, attendanceMap, students]);\n\n const arrangeTable = () => {\n if (attendance) {\n var tempMap = attendanceMap;\n students.map((student) => {\n if (attendance.data[student._id]) {\n tempMap[student._id] = attendance.data[student._id];\n } else {\n tempMap[student._id] = \"Hostel\";\n }\n });\n setAttendanceMap(attendanceMap);\n } else {\n students.map((student) => {\n var temp = attendanceMap;\n temp[student._id] = \"Hostel\";\n setAttendanceMap(temp);\n });\n }\n var temp = attendanceMap;\n setAttendanceMap(temp);\n };\n\n return (\n <>\n {error && {error}}\n {loading || loadingAttendance ? (\n \n ) : (\n <>\n {errorAttendance && (\n {errorAttendance}\n )}\n {students && (\n <>\n \n \n )}\n \n )}\n \n );\n};\n\nexport default AttendanceTable;\n","/home/shashi/Projects/React Projects/hostel-app/frontend/src/components/attendanceTableComponent.jsx",["182"],"import React, { useEffect } from \"react\";\nimport { Table, Form, Button } from \"react-bootstrap\";\nimport { useDispatch } from \"react-redux\";\nimport { postAttendance } from \"../actions/attendanceActions\";\nimport { Link } from \"react-router-dom\";\nconst AttendanceTableComponent = ({\n students,\n attendanceMap,\n setAttendanceMap,\n attendance,\n roomNo,\n}) => {\n const dispatch = useDispatch();\n useEffect(() => {}, [dispatch, attendanceMap]);\n const updateAttendance = () => {\n if (attendance) {\n if (!attendance.roomNo.includes(roomNo)) {\n attendance.roomNo.push(roomNo);\n }\n }\n const roomData = attendance ? attendance.roomNo : roomNo;\n const dataData = attendanceMap;\n const detailsData = attendance ? attendance.details : {};\n students.map((student) => {\n detailsData[student._id] = {\n name: student.name,\n contact: student.contact,\n roomNo: student.roomNo,\n };\n });\n\n dispatch(\n postAttendance({\n roomNo: roomData,\n details: detailsData,\n data: dataData,\n })\n );\n };\n return (\n <>\n \n \n \n \n \n \n \n \n \n \n \n {students &&\n students.map((student) => (\n <>\n \n \n \n \n \n \n \n \n ))}\n \n
NAMEAttendanceSTATUSCONTACTCITY
\n {student.name}\n \n
\n \n {\n var tempMap = attendanceMap;\n tempMap[student._id] = e.target.value;\n setAttendanceMap(tempMap);\n }}\n >\n \n \n \n \n \n
\n
\n \n {student.status}\n \n \n {student.contact}\n {student.city}
\n \n \n );\n};\n\nexport default AttendanceTableComponent;\n","/home/shashi/Projects/React Projects/hostel-app/frontend/src/screens/profileView.jsx",[],"/home/shashi/Projects/React Projects/hostel-app/frontend/src/screens/userListView.jsx",[],"/home/shashi/Projects/React Projects/hostel-app/frontend/src/screens/userEditView.jsx",[],{"ruleId":"183","replacedBy":"184"},{"ruleId":"185","replacedBy":"186"},{"ruleId":"187","severity":1,"message":"188","line":35,"column":6,"nodeType":"189","endLine":35,"endColumn":27,"suggestions":"190"},{"ruleId":"183","replacedBy":"191"},{"ruleId":"185","replacedBy":"192"},{"ruleId":"183","replacedBy":"193"},{"ruleId":"185","replacedBy":"194"},{"ruleId":"183","replacedBy":"195"},{"ruleId":"185","replacedBy":"196"},{"ruleId":"183","replacedBy":"197"},{"ruleId":"185","replacedBy":"198"},{"ruleId":"183","replacedBy":"199"},{"ruleId":"185","replacedBy":"200"},{"ruleId":"183","replacedBy":"201"},{"ruleId":"185","replacedBy":"202"},{"ruleId":"203","severity":1,"message":"204","line":32,"column":51,"nodeType":"205","messageId":"206","endLine":32,"endColumn":53},{"ruleId":"187","severity":1,"message":"207","line":40,"column":6,"nodeType":"189","endLine":40,"endColumn":28,"suggestions":"208"},{"ruleId":"187","severity":1,"message":"209","line":52,"column":6,"nodeType":"189","endLine":52,"endColumn":53,"suggestions":"210"},{"ruleId":"187","severity":1,"message":"211","line":19,"column":6,"nodeType":"189","endLine":19,"endColumn":37,"suggestions":"212"},{"ruleId":"203","severity":1,"message":"204","line":22,"column":56,"nodeType":"205","messageId":"206","endLine":22,"endColumn":58},{"ruleId":"187","severity":1,"message":"213","line":22,"column":6,"nodeType":"189","endLine":22,"endColumn":53,"suggestions":"214"},{"ruleId":"203","severity":1,"message":"204","line":27,"column":30,"nodeType":"205","messageId":"206","endLine":27,"endColumn":32},{"ruleId":"203","severity":1,"message":"204","line":36,"column":30,"nodeType":"205","messageId":"206","endLine":36,"endColumn":32},{"ruleId":"203","severity":1,"message":"204","line":24,"column":28,"nodeType":"205","messageId":"206","endLine":24,"endColumn":30},"no-native-reassign",["215"],"no-negated-in-lhs",["216"],"react-hooks/exhaustive-deps","React Hook useEffect has missing dependencies: 'dispatch', 'history', 'userInfo', and 'userLoading'. Either include them or remove the dependency array.","ArrayExpression",["217"],["215"],["216"],["215"],["216"],["215"],["216"],["215"],["216"],["215"],["216"],["215"],["216"],"array-callback-return","Array.prototype.map() expects a return value from arrow function.","ArrowFunctionExpression","expectedInside","React Hook useEffect has missing dependencies: 'idList' and 'startDate'. Either include them or remove the dependency array.",["218"],"React Hook useEffect has missing dependencies: 'history', 'status', and 'student'. Either include them or remove the dependency array.",["219"],"React Hook useEffect has a missing dependency: 'students'. Either include it or remove the dependency array.",["220"],"React Hook useEffect has a missing dependency: 'arrangeTable'. Either include it or remove the dependency array.",["221"],"no-global-assign","no-unsafe-negation",{"desc":"222","fix":"223"},{"desc":"224","fix":"225"},{"desc":"226","fix":"227"},{"desc":"228","fix":"229"},{"desc":"230","fix":"231"},"Update the dependencies array to be: [dispatch, history, keyword, pageNumber, userInfo, userLoading]",{"range":"232","text":"233"},"Update the dependencies array to be: [attendance, dispatch, idList, startDate]",{"range":"234","text":"235"},"Update the dependencies array to be: [dispatch, match, successUpdate, successDelete, student, status, history]",{"range":"236","text":"237"},"Update the dependencies array to be: [dispatch, keyword, pageNumber, students]",{"range":"238","text":"239"},"Update the dependencies array to be: [dispatch, attendance, attendanceMap, students, arrangeTable]",{"range":"240","text":"241"},[1116,1137],"[dispatch, history, keyword, pageNumber, userInfo, userLoading]",[1402,1424],"[attendance, dispatch, idList, startDate]",[1494,1541],"[dispatch, match, successUpdate, successDelete, student, status, history]",[702,733],"[dispatch, keyword, pageNumber, students]",[780,827],"[dispatch, attendance, attendanceMap, students, arrangeTable]"] ================================================ FILE: frontend/index.html ================================================ Hostel Management
================================================ FILE: frontend/package.json ================================================ { "name": "hostel-app", "version": "0.1.0", "private": true, "type": "module", "scripts": { "dev": "vite", "build": "vite build", "preview": "vite preview", "test": "vitest run --passWithNoTests" }, "dependencies": { "@redux-devtools/extension": "^3.3.0", "axios": "^1.7.9", "react": "^18.3.1", "react-bootstrap": "^1.6.8", "react-csv": "^2.2.2", "react-datepicker": "^4.25.0", "react-dom": "^18.3.1", "react-redux": "^8.1.3", "react-router-bootstrap": "^0.25.0", "react-router-dom": "^5.3.4", "redux": "^4.2.1", "redux-thunk": "^2.4.2", "web-vitals": "^4.2.4" }, "devDependencies": { "@testing-library/jest-dom": "^6.6.3", "@testing-library/react": "^14.3.1", "@testing-library/user-event": "^14.5.2", "@vitejs/plugin-react": "^4.3.4", "jsdom": "^25.0.1", "vite": "^6.0.11", "vitest": "^3.0.4" }, "browserslist": { "production": [ ">0.2%", "not dead", "not op_mini all" ], "development": [ "last 1 chrome version", "last 1 firefox version", "last 1 safari version" ] } } ================================================ FILE: frontend/public/manifest.json ================================================ { "short_name": "React App", "name": "Create React App Sample", "icons": [ { "src": "favicon.ico", "sizes": "64x64 32x32 24x24 16x16", "type": "image/x-icon" }, { "src": "logo192.png", "type": "image/png", "sizes": "192x192" }, { "src": "logo512.png", "type": "image/png", "sizes": "512x512" } ], "start_url": ".", "display": "standalone", "theme_color": "#000000", "background_color": "#ffffff" } ================================================ FILE: frontend/public/robots.txt ================================================ # https://www.robotstxt.org/robotstxt.html User-agent: * Disallow: ================================================ FILE: frontend/src/App.jsx ================================================ import React from "react"; import HomeView from "./screens/homeView"; import { BrowserRouter as Router, Route } from "react-router-dom"; import { Container } from "react-bootstrap"; import Header from "./components/header"; import Footer from "./components/footer"; import AddStudentView from "./screens/addStudentView"; import AnalysisView from "./screens/analysisView"; import LoginView from "./screens/Authentication Screens/LoginView"; import RegisterView from "./screens/Authentication Screens/RegisterView"; import StudentDetailsView from "./screens/studentDetailsView"; import AttendanceView from "./screens/attendanceView"; import ProfileView from "./screens/profileView"; import UserListView from "./screens/userListView"; import UserEditView from "./screens/userEditView"; const App = () => { return (