├── client ├── src │ ├── pages │ │ ├── RaiseIssue │ │ │ └── styles.css │ │ ├── SelfService │ │ │ ├── Assets │ │ │ │ └── styles.css │ │ │ ├── styles.css │ │ │ ├── ViewPaySlip │ │ │ │ ├── styles.css │ │ │ │ └── ViewPaySlip.js │ │ │ ├── Cab │ │ │ │ └── styles.css │ │ │ ├── Separation │ │ │ │ ├── styles.css │ │ │ │ └── Separation.js │ │ │ ├── SelfService.js │ │ │ ├── ManageReq │ │ │ │ ├── styles.css │ │ │ │ ├── ManageReq.js │ │ │ │ ├── VehicleReq.js │ │ │ │ └── LeaveReq.js │ │ │ └── Transfer │ │ │ │ └── Transfer.js │ │ ├── Timesheet │ │ │ ├── styles.css │ │ │ └── Timesheet.js │ │ ├── LeaveReq │ │ │ ├── styles.css │ │ │ └── Leave.js │ │ ├── SignIn │ │ │ ├── styles.css │ │ │ └── SignIn.js │ │ ├── Error │ │ │ └── Error.js │ │ └── Home │ │ │ ├── styles.css │ │ │ └── Home.js │ ├── components │ │ ├── Footer │ │ │ ├── styles.css │ │ │ └── Footer.js │ │ ├── NavBar │ │ │ ├── styles.css │ │ │ ├── bars-solid.svg │ │ │ ├── Stack-logo.svg │ │ │ └── NavBar.js │ │ ├── Notifications │ │ │ └── NotifcationsStack.js │ │ ├── TextEditor │ │ │ └── TextEditor.js │ │ ├── DateToday │ │ │ └── DateToday.js │ │ └── SideBar │ │ │ ├── styles.css │ │ │ └── SideBar.js │ ├── routes │ │ └── ProtectedRoutes │ │ │ └── ProtectedRoute.js │ ├── index.js │ ├── index.css │ ├── api │ │ └── employee.js │ └── App.js ├── public │ ├── HRstackIcon.ico │ ├── hrstack-logo.png │ └── index.html ├── postcss.config.js ├── .gitignore ├── tailwind.config.js ├── package.json ├── employee.js └── README.md ├── .vscode └── settings.json ├── admin ├── public │ ├── HRstackIcon.ico │ ├── hrstack-logo.png │ ├── index.html.bak │ └── index.html ├── src │ ├── pages │ │ ├── Management │ │ │ ├── AddAssets │ │ │ │ ├── styles.css │ │ │ │ └── AssetManagement.js │ │ │ ├── styles.css │ │ │ ├── Announcements │ │ │ │ └── styles.css │ │ │ ├── ViewPaySlip │ │ │ │ ├── styles.css │ │ │ │ └── ViewPaySlip.js │ │ │ ├── AddEvents │ │ │ │ └── styles.css │ │ │ ├── Management.js │ │ │ └── ManageReq │ │ │ │ └── styles.css │ │ ├── Error │ │ │ └── Error.js │ │ └── HomeAdmin │ │ │ ├── styles.css │ │ │ └── HomeAdmin.js │ ├── components │ │ ├── Footer │ │ │ ├── styles.css │ │ │ └── Footer.js │ │ ├── NameCard │ │ │ ├── styles.css │ │ │ └── NameCard.js │ │ ├── NavBar │ │ │ ├── styles.css │ │ │ ├── bars-solid.svg │ │ │ ├── Stack-logo.svg │ │ │ └── NavBar.js │ │ ├── DateToday │ │ │ └── DateToday.js │ │ ├── TextEditor │ │ │ ├── TextEditor.js │ │ │ └── txtCopy.js │ │ └── SideBar │ │ │ ├── SideBar.js │ │ │ └── styles.css │ ├── index.js │ ├── api │ │ └── api.js │ ├── index.css │ └── App.js ├── package.json └── README.md ├── client-hr ├── public │ ├── HRstackIcon.ico │ ├── hrstack-logo.png │ └── index.html ├── src │ ├── pages │ │ └── AddEmployee │ │ │ ├── styles.css │ │ │ └── AddEmployee.js │ ├── components │ │ ├── Footer │ │ │ ├── styles.css │ │ │ └── Footer.js │ │ ├── NameCard │ │ │ ├── styles.css │ │ │ └── NameCard.js │ │ ├── SkillCard │ │ │ ├── styles.css │ │ │ └── SkillCard.js │ │ ├── NavBar │ │ │ ├── styles.css │ │ │ ├── bars-solid.svg │ │ │ ├── Stack-logo.svg │ │ │ └── NavBar.js │ │ ├── DateToday │ │ │ └── DateToday.js │ │ ├── TextEditor │ │ │ ├── TextEditor.js │ │ │ └── txtCopy.js │ │ └── SideBar │ │ │ ├── SideBar.js │ │ │ └── styles.css │ ├── index.js │ ├── index.css │ ├── api │ │ └── api.js │ └── App.js ├── package.json.bak ├── package.json └── README.md ├── server ├── contollers │ ├── hr.js │ ├── admin.js │ └── employee.js ├── routes │ ├── hr.js │ ├── admin.js │ └── employee.js ├── models │ └── User.js ├── package.json ├── index.js └── .gitignore └── README.md /client/src/pages/RaiseIssue/styles.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "cSpell.words": [ 3 | "timesheet" 4 | ] 5 | } -------------------------------------------------------------------------------- /client/src/pages/SelfService/Assets/styles.css: -------------------------------------------------------------------------------- 1 | .assetRequest { 2 | padding: 2% 5%; 3 | } -------------------------------------------------------------------------------- /admin/public/HRstackIcon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stormdotcom/hr-management/HEAD/admin/public/HRstackIcon.ico -------------------------------------------------------------------------------- /admin/public/hrstack-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stormdotcom/hr-management/HEAD/admin/public/hrstack-logo.png -------------------------------------------------------------------------------- /client/public/HRstackIcon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stormdotcom/hr-management/HEAD/client/public/HRstackIcon.ico -------------------------------------------------------------------------------- /client/public/hrstack-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stormdotcom/hr-management/HEAD/client/public/hrstack-logo.png -------------------------------------------------------------------------------- /client-hr/public/HRstackIcon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stormdotcom/hr-management/HEAD/client-hr/public/HRstackIcon.ico -------------------------------------------------------------------------------- /client-hr/public/hrstack-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stormdotcom/hr-management/HEAD/client-hr/public/hrstack-logo.png -------------------------------------------------------------------------------- /client/postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | } 7 | -------------------------------------------------------------------------------- /server/contollers/hr.js: -------------------------------------------------------------------------------- 1 | import mongoose from "mongoose" 2 | import bcrypt from "bcrypt" 3 | 4 | export const getAllEmployees = async((req, res)=>{ 5 | 6 | }) -------------------------------------------------------------------------------- /client/src/pages/Timesheet/styles.css: -------------------------------------------------------------------------------- 1 | 2 | .timeSheet { 3 | height: 100vh; 4 | padding-top: 5%; 5 | padding-left: 15%; 6 | overflow-y: scroll; 7 | } -------------------------------------------------------------------------------- /admin/src/pages/Management/AddAssets/styles.css: -------------------------------------------------------------------------------- 1 | .assetsMange { 2 | background-color: rgb(8, 57, 100); 3 | padding-left: 7%; 4 | margin-bottom: 1000px; 5 | overflow-y: auto; 6 | } -------------------------------------------------------------------------------- /client-hr/src/pages/AddEmployee/styles.css: -------------------------------------------------------------------------------- 1 | 2 | .addEmployee input[type="password"] 3 | { 4 | -webkit-text-security: disc; 5 | padding: 3px 5px; 6 | letter-spacing: 1px; 7 | width: 50%; 8 | height: 2%; 9 | } -------------------------------------------------------------------------------- /server/routes/hr.js: -------------------------------------------------------------------------------- 1 | import express from 'express'; 2 | const router = express.Router(); 3 | 4 | /* GET home page. */ 5 | router.get('/', function(req, res, next) { 6 | res.send("hr"); 7 | }); 8 | 9 | 10 | export default router; 11 | -------------------------------------------------------------------------------- /client/src/pages/SelfService/styles.css: -------------------------------------------------------------------------------- 1 | .selfService { 2 | height: 100vh; 3 | padding-top: 5%; 4 | padding-left: 15%; 5 | overflow-y: scroll; 6 | } 7 | .selfServices { 8 | padding-top:20% ; 9 | padding-left: 10%; 10 | } -------------------------------------------------------------------------------- /admin/src/pages/Management/styles.css: -------------------------------------------------------------------------------- 1 | .selfService { 2 | height: 100vh; 3 | padding-top: 5%; 4 | padding-left: 15%; 5 | overflow-y: scroll; 6 | } 7 | .selfServices { 8 | padding-top:20% ; 9 | padding-left: 10%; 10 | } -------------------------------------------------------------------------------- /admin/src/pages/Management/Announcements/styles.css: -------------------------------------------------------------------------------- 1 | .uploadEventImage { 2 | background-color: #e4e4e4 !important; 3 | transition: all 100ms ease-in-out; 4 | 5 | } 6 | 7 | .uploadEventImage:hover { 8 | background-color: #d4d3d3 !important; 9 | } -------------------------------------------------------------------------------- /server/routes/admin.js: -------------------------------------------------------------------------------- 1 | import express from 'express'; 2 | import { createUser} from "../contollers/admin.js" 3 | const router = express.Router(); 4 | 5 | /* GET home page. */ 6 | router.get('/', function(req, res) { 7 | res.send("admin"); 8 | }); 9 | router.post('/createUser', createUser); 10 | 11 | export default router; 12 | -------------------------------------------------------------------------------- /server/routes/employee.js: -------------------------------------------------------------------------------- 1 | import express from 'express'; 2 | import { login} from "../contollers/employee.js" 3 | const router = express.Router(); 4 | 5 | /* GET home page. */ 6 | router.get('/login', function(req, res, next) { 7 | res.send("employee"); 8 | }); 9 | router.post('/login', login); 10 | export default router; 11 | -------------------------------------------------------------------------------- /admin/src/components/Footer/styles.css: -------------------------------------------------------------------------------- 1 | .footer { 2 | font-weight: 500; 3 | text-align: center; 4 | width: 100%; 5 | height: 15px; 6 | background-color: #278acb; 7 | color: #fff; 8 | font-size: smaller; 9 | position:fixed; 10 | bottom:0; 11 | } 12 | .footer p { 13 | font-size: smaller; 14 | } -------------------------------------------------------------------------------- /client-hr/src/components/Footer/styles.css: -------------------------------------------------------------------------------- 1 | .footer { 2 | font-weight: 500; 3 | text-align: center; 4 | width: 100%; 5 | height: 15px; 6 | background-color: #278acb; 7 | color: #fff; 8 | font-size: smaller; 9 | position:fixed; 10 | bottom:0; 11 | } 12 | .footer p { 13 | font-size: smaller; 14 | } -------------------------------------------------------------------------------- /client/src/components/Footer/styles.css: -------------------------------------------------------------------------------- 1 | .footer { 2 | font-weight: 500; 3 | text-align: center; 4 | width: 100%; 5 | height: 15px; 6 | background-color: #278acb; 7 | color: #fff; 8 | font-size: smaller; 9 | position:fixed; 10 | bottom:0; 11 | } 12 | .footer p { 13 | font-size: smaller; 14 | } -------------------------------------------------------------------------------- /client/src/pages/SelfService/ViewPaySlip/styles.css: -------------------------------------------------------------------------------- 1 | .viewPay { 2 | height: 100vh; 3 | padding-top: 5%; 4 | padding-left: 15%; 5 | overflow-y: scroll; 6 | 7 | } 8 | .SlipForm { 9 | background-color: #F5F5F5; 10 | margin: auto; 11 | margin-top: 4%; 12 | width: 50%; 13 | border-radius: 15px; 14 | 15 | 16 | } 17 | -------------------------------------------------------------------------------- /admin/src/pages/Management/ViewPaySlip/styles.css: -------------------------------------------------------------------------------- 1 | .viewPay { 2 | height: 100vh; 3 | padding-top: 5%; 4 | padding-left: 15%; 5 | overflow-y: scroll; 6 | 7 | } 8 | .SlipForm { 9 | background-color: #F5F5F5; 10 | margin: auto; 11 | margin-top: 4%; 12 | width: 50%; 13 | border-radius: 15px; 14 | 15 | 16 | } 17 | -------------------------------------------------------------------------------- /admin/src/components/Footer/Footer.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import "./styles.css"; 3 | import 'bootstrap/dist/css/bootstrap.min.css'; 4 | function Footer() { 5 | return ( 6 |
7 | 8 |

2021 Copyright HR Stack example Company

9 | 10 |
11 | ) 12 | } 13 | 14 | export default Footer 15 | -------------------------------------------------------------------------------- /client/src/components/Footer/Footer.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import "./styles.css"; 3 | import 'bootstrap/dist/css/bootstrap.min.css'; 4 | function Footer() { 5 | return ( 6 |
7 | 8 |

2021 Copyright HR Stack example Company

9 | 10 |
11 | ) 12 | } 13 | 14 | export default Footer 15 | -------------------------------------------------------------------------------- /client-hr/src/components/Footer/Footer.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import "./styles.css"; 3 | import 'bootstrap/dist/css/bootstrap.min.css'; 4 | function Footer() { 5 | return ( 6 |
7 | 8 |

2021 Copyright HR Stack example Company

9 | 10 |
11 | ) 12 | } 13 | 14 | export default Footer 15 | -------------------------------------------------------------------------------- /admin/src/components/NameCard/styles.css: -------------------------------------------------------------------------------- 1 | .nameCard { 2 | box-shadow: rgba(0, 0, 0, 0.24) 0px 3px 8px; 3 | background-color: #fdfeff; 4 | padding: 10px 20px; 5 | border-radius: 15px; 6 | min-width: 300px; 7 | margin: 20px 10px; 8 | transition: all 100ms ease-in-out; 9 | } 10 | .nameCard:hover { 11 | background-color: #f8fcff; 12 | translate: 1px 1px; 13 | } -------------------------------------------------------------------------------- /client-hr/src/components/NameCard/styles.css: -------------------------------------------------------------------------------- 1 | .nameCard { 2 | box-shadow: rgba(0, 0, 0, 0.24) 0px 3px 8px; 3 | background-color: #fdfeff; 4 | padding: 10px 20px; 5 | border-radius: 15px; 6 | min-width: 300px; 7 | margin: 20px 10px; 8 | transition: all 100ms ease-in-out; 9 | } 10 | .nameCard:hover { 11 | background-color: #f8fcff; 12 | translate: 1px 1px; 13 | } -------------------------------------------------------------------------------- /client-hr/src/components/SkillCard/styles.css: -------------------------------------------------------------------------------- 1 | .skillCard { 2 | box-shadow: rgba(0, 0, 0, 0.24) 0px 3px 8px; 3 | background-color: #fdfeff; 4 | padding: 10px 20px; 5 | border-radius: 15px; 6 | min-width: 300px; 7 | margin: 20px 10px; 8 | transition: all 100ms ease-in-out; 9 | } 10 | .skillCard:hover { 11 | background-color: #f8fcff; 12 | translate: 1px 1px; 13 | } -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /client/src/routes/ProtectedRoutes/ProtectedRoute.js: -------------------------------------------------------------------------------- 1 | import { Navigate, Outlet } from "react-router-dom"; 2 | import SignIn from "../../pages/SignIn/SignIn"; 3 | const Auth =()=>{ 4 | const user = { loggedin: true} 5 | return user && user.loggedin; 6 | } 7 | 8 | const ProtectedRoute = ()=>{ 9 | const isAuth = Auth() 10 | return isAuth ? : 11 | } 12 | 13 | export default ProtectedRoute; 14 | -------------------------------------------------------------------------------- /client/src/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | import "./index.css" 4 | import App from './App'; 5 | import { BrowserRouter } from "react-router-dom"; 6 | import Footer from "./components/Footer/Footer" 7 | ReactDOM.render( 8 | 9 | 10 | 11 |