The ONE STEP Onboarding Portal streamlines and simplifies the onboarding process for new hires and HR teams. It provides a centralized platform where new employees can complete forms, upload documents, and update personal information before their start date, reducing administrative delays.
![logo1](https://private-user-images.githubusercontent.com/179270768/393701284-3492573a-da2b-429f-8fd6-8d193b91a3eb.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkyNzE1NDEsIm5iZiI6MTczOTI3MTI0MSwicGF0aCI6Ii8xNzkyNzA3NjgvMzkzNzAxMjg0LTM0OTI1NzNhLWRhMmItNDI5Zi04ZmQ2LThkMTkzYjkxYTNlYi5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjExJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIxMVQxMDU0MDFaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT0wYWVlNTg2OGFlYWNmNDc2YmRiNzg2MGE2NzE5N2EwODg1MDYyYjRmOGNhYmUxOWFiZGMwODIzZmI4ODFjZWRlJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.IU2PwwJ5rtAWlLSgQEMh8UHLWhm_LnOjP3q0CDoKg44)
- Pre-emptive Data Collection: Employees submit information in advance, enabling HR to verify and resolve discrepancies early.
- Automation: Automates tasks like issuing welcome kits, provisioning IT equipment, and setting up access credentials.
- User-Friendly Interface: Guides new hires step-by-step, with notifications and reminders to reduce stress.
- Real-Time Progress Tracking: HR can monitor onboarding status to ensure no tasks are missed.
- Frontend: React
- Backend: Node.js
- Database: MongoDB
- Cloud Services: AWS Lambda
- CI/CD: Jenkins
Before setting up the project, ensure the following are installed on your system:
- Node.js (v14 or later)
- MongoDB (local or cloud instance)
- AWS CLI (configured with access credentials)
- Jenkins (optional for CI/CD pipeline setup)
git clone https://github.com/your-username/employee-onboarding-portal.git
cd employee-onboarding-portal
- Navigate to the
server
folder:cd server
- Install dependencies:
npm install
- Configure environment variables:
- Create a
.env
file in thebackend
directory. - Add the following:
PORT=3000 SENDGRID_API_KEY=<Your Sendgrid api string> REACT_APP_BACKEND_URL="http://localhost:3000" JWT_SECRET=<Your JWT secret string> MONGO_URI=<Your MongoDB connection string> AWS_REGION=<Your AWS region> AWS_ACCESS_KEY_ID=<Your AWS Access Key> AWS_SECRET_ACCESS_KEY=<Your AWS Secret Key> GOOGLE_CLIENT_ID=<Your Google Client ID>
- Create a
- Start the backend server:
npm start
- Navigate to the
frontend
folder:cd frontend
- Install dependencies:
npm install
- Configure environment variables:
Create a .env file in the frontend directory.
Add the backend API URL:
REACT_APP_API_URL=http://localhost:3000
- Start the development server:
npm start
![Screenshot 2024-12-05 at 5 52 27 PM](https://private-user-images.githubusercontent.com/179270768/393695996-3a97a7b3-e087-45b7-816d-64419ca37d06.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkyNzE1NDEsIm5iZiI6MTczOTI3MTI0MSwicGF0aCI6Ii8xNzkyNzA3NjgvMzkzNjk1OTk2LTNhOTdhN2IzLWUwODctNDViNy04MTZkLTY0NDE5Y2EzN2QwNi5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjExJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIxMVQxMDU0MDFaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT00YzMwODQyNGQyZGFlZWQzMDU0ZWRlMjlhMTllNjc3MzRkNTdmMDhmMDM5NDRlYjNkYWJlYTY3MDhkMGFjMjQ4JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.w2ZdHLA-uTXm2zUAAOxNdSWuew7DSsPlFScHduksvS8)
We implemented Google Single Sign-On (SSO) for both sign-up and sign-in, offering users a seamless and secure authentication experience. The integration ensures that users can log in using their Google credentials, reducing the need to remember multiple passwords and improving security. This implementation uses SSL/TLS encryption to protect sensitive data during
the authentication process, ensuring all communication between the client and server is encrypted and secure.
The application supports two roles: Employee and Admin. Each role is associated with a different user interface, ensuring that both employees and administrators have tailored experiences.
- Employee Role: Employees can access their personal data, view their onboarding progress, salary details, upload required documents, and track the completion of their onboarding tasks.
- Admin Role: Admin users have access to a more comprehensive dashboard where they can manage employee data, review progress for all users, send notifications, and manage various system settings. They can also send grouped message to employees in our chat page.
Employees Page - Where Admin can browse list of registered employees and their status.
Documents Status Per Employee -
Job Offering Page - Admin can add open positions in the company.
Chat Page - We have list of all the users on left side and Chat section on right side.
The UI is dynamically adjusted based on the assigned role, providing relevant features and maintaining a streamlined user experience.
We integrated the project repository on GitHub (or another version control platform) with the Single Sign-On (SSO) system, ensuring that only authenticated users can access and contribute to the repository. This integration simplifies user management and improves security by tying access to authenticated roles, avoiding the need for separate repository credentials.
The project is set up with Jenkins for Continuous Integration/Continuous Deployment (CI/CD). Jenkins is integrated with both the SSO and GitHub repositories:
- Jenkins Pipeline: Whenever there is a push to the GitHub repository (for example, after a new feature or bug fix is committed), Jenkins automatically triggers a build. This ensures that the latest changes are continuously tested and deployed without manual intervention.
- Webhooks: We used GitHub webhooks to notify Jenkins of any changes in the repository, initiating the build process automatically. This setup allows for real-time monitoring and rapid feedback on code changes, ensuring that the project is always in a deployable state.
![Screenshot 2024-12-05 at 6 20 20 AM](https://private-user-images.githubusercontent.com/179270768/393700613-720c7589-e031-4cea-b4a5-6e47850d5cd5.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkyNzE1NDEsIm5iZiI6MTczOTI3MTI0MSwicGF0aCI6Ii8xNzkyNzA3NjgvMzkzNzAwNjEzLTcyMGM3NTg5LWUwMzEtNGNlYS1iNGE1LTZlNDc4NTBkNWNkNS5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjExJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIxMVQxMDU0MDFaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1hMWUzYWY1MTJiMDNlZDAzOTg4ZjNiMjFmZDA2ZTM4OWVmNWNkNTM5N2NhYWNkOGMxMTM2YWM4YWJiYjEwNGQyJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.Oc_pqbxl2MjxlyeE61bNCJ2OI4QBtf0reGLzZasHUPw)
The project also includes several advanced features and integrations to enhance security and usability:
- Document Repository (AWS S3): For secure document storage, we integrated AWS S3 buckets. This allows employees to upload and store necessary documents, such as IDs, contracts, and tax forms, securely. The data stored in S3 is encrypted, ensuring compliance with industry-standard data protection regulations. S3 also offers scalability, making it easy to handle a large volume of documents as the application grows.
![Screenshot 2024-12-08 at 8 31 38 PM](https://private-user-images.githubusercontent.com/179270768/393700962-1c27ed54-17b7-4a01-9591-f9b02068243b.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkyNzE1NDEsIm5iZiI6MTczOTI3MTI0MSwicGF0aCI6Ii8xNzkyNzA3NjgvMzkzNzAwOTYyLTFjMjdlZDU0LTE3YjctNGEwMS05NTkxLWY5YjAyMDY4MjQzYi5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjExJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIxMVQxMDU0MDFaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1kNGVhYjAzNWU3ZDVkZDc3NWZkN2ZiNGIzZGQwYTQ1ZjVjZGJlZmViYmI4YmJlMzMzMTE4YTViNWQzNDQ3YmNiJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.fF5W909J1SSnbvsH5tQZ3zbpf7SClN7TjILeIjaGwfk)
-
Serverless Functionality (AWS Lambda): To minimize server management and optimize cost efficiency, we used AWS Lambda for serverless execution. Lambda functions handle specific tasks like sending emails, processing uploaded documents, or triggering workflows, without the need to provision or manage traditional servers. This also improves application performance by enabling on-demand resource scaling. When a user clicks on the user panel on the left, the Room Component is triggered. This component sends a request to the WebSocket API to establish a connection. Once the connection is successfully created, a Lambda function is invoked to save the necessary chat room and user information into DynamoDB. When a user sends a message, a request is sent to the REST API to store the chat message in the database.
-
Database (DynamoDB): We used AWS DynamoDB, a fully managed NoSQL database, to store and retrieve data in a highly available, scalable manner. DynamoDB is ideal for applications requiring low-latency data access, such as handling real-time onboarding information. With DynamoDB, we can easily scale as the application grows while ensuring fast and reliable access to employee data.
This comprehensive set of features enhances both the user experience and the security of the platform, making it a robust and scalable solution for employee onboarding.
Added authaction.test.js file for functional testing.
Test case success -