Frontend:
- React.js
- Typescript
- Material UI
Backend:
- Node.js
- Express.js
- MongoDB
- Socket.io
- Login
Employees and Admins both can login from this page.
- Forget Password
User will give his registered email address and press the submit button. A recovery link will send to the user email.
- Home Page
Employee
Admin
- Change password
- View Personal Information, current projects and monetory details
- Edit personal Information
User auhorized to edit only personal information
- Users All Projects Details
User can veiw his all projects lists from joinning date to now.
- Claim leave request
User can claim for leave from here
- View leave request status
User can view their accepted or rejected leave request list.
- Download payslip
User can download monthly payslip from here
- Veiw notice
User can view general and perivate notice. Other users can't view any one's particular notice.
- Real time notification
If admin change any user's information, that user get notification about that update.
- View all employee list
Only admins can view all employee list. Admin can edit, delete, active and deactive any employee's profile excluding his own profile. But admin can view, edit, delete, active and deactive others admin profiles.
Deactive users can't login in this system with correct credientials
- Add new employee profile including personal, project and financial information.
Only admin can add new employee profile in the system.
- View, Edit and Delete all projects deatils in the company
Admin can view, edit and delete all running, completed and pending projects in the comapany.
- Add new projects.
Admin can add new projects in this system.
- View, Reject and Approve leave request.
Admin can view, reject and approve leave request excluding his own leave request.
- Send notice.
Admin can send notice or any message to the all employee or any particular employee.
Note:
- We have to create first admin from Database. We can use post man or direct mongo alts for this.
- To receive forget password email, employee's email address should be real. ( I add my email address for demonstration. Change the email address in the code.)
- Clone this repo
- Go to the root folder and run
npm install
. - Go to the frontend folder and run
npm install
- Create a
.env
file and input your cridentials .env
file example:
PORT=
MONGO_URL=
JWT_KEY=
- Go to the mongo alts and connected your project to the database
- Run the backend and frontend
- Backend command for run the project
npm run dev
- Frontend command for run the frontend
npm run start
- Typescript run command
npm run watch
Improvement Scope: I build this project from scratch and according to my raw idea. So, there are lots of improvement scope.
- I used typescript and used dynamic type
any
in many places because of time shortage. - Real time notification can be more updated and optimized. Specialy we can save all notifications in the database.
- This app can be more optimized and can be reduce extra rendering.
Learning
- Typescript project setup
- Project feature design
- Material UI
- Forget password Workflow
- Role base features
- File uploads techniques
- Middlewires
- Schema desgin and more