SafeDesk is a comprehensive web application designed to ensure women's safety and enforce POSH (Prevention of Sexual Harassment) compliance in workplaces. It provides a secure, anonymous, and efficient channel for reporting incidents, tracking complaints, and managing cases for Internal Complaints Committees (ICC).
PPT Link- https://1drv.ms/p/c/AC651934E817DE94/IQB3Bsp-2tAISbTEgGdJ_af9AZfPGmkzQh_vadDJnfvwZJw?e=2UBc8w
- Anonymous Reporting: Submit complaints without revealing identity (optional).
- Secure Verification: Users receive a Case ID and a 6-digit PIN to securely access their complaint status later.
- Complaint Tracking: Track the real-time status of complaints using Case ID and PIN.
- Communication: Secure messaging with the ICC/Admin regarding the complaint.
- AI Assistance:
- POSH Guidance Chatbot: AI chatbot to answer questions related to the POSH Act and ICC procedures.
- Dashboard: specialized dashboards for ICC members and Admins to view compliance statistics.
- Complaint Management: View details, evidence, and update status of complaints (Submitted -> Under Review -> Inquiry -> Resolved -> Closed).
- Evidence Management: Securely view and manage evidence files uploaded by complainants.
- Member Management: Admins can add or remove ICC members.
- Audit Logs: Track all actions and status changes for accountability.
- Framework: React (Vite)
- Language: TypeScript
- Styling: Tailwind CSS
- State/Form Management: React Hook Form, Zod
- HTTP Client: Axios
- Icons/UI: React Icons, Framer Motion
- Runtime: Node.js
- Framework: Express.js
- Language: TypeScript
- Database: MongoDB (Mongoose ODM)
- Authentication: JWT (JSON Web Tokens), BCrypt.js
- File Storage: Multer
- AI Integration: Google Generative AI (Gemini)
- ML model: trained ML model for Morph detection
- Twillio: : for emergency SMS notifications with location
- Langchain: for ai chat-bot assistant
POST /login- Login for ICC members and Admins.GET /me- Get current logged-in user details.
POST /- Submit a new complaint (Public).POST /verify- Verify Case ID and PIN to access a specific complaint (Public).GET /:id/messages- Get secure messages for a complaint (Requires PIN).POST /:id/messages- Send a message to ICC/Admin (Requires PIN).GET /- List all complaints (ICC/Admin, supports filtering by status/severity).GET /:id- Get full details of a specific complaint (ICC/Admin).PATCH /:id/status- Update complaint status and internal notes (ICC/Admin).
POST /:complaintId- Upload evidence files (Images, Videos, Docs).GET /:complaintId- List uploaded evidence for a complaint (ICC/Admin).
GET /stats- Get compliance statistics (Total complaints, status breakdown, severity breakdown).GET /members- List all ICC members.POST /members- Add a new ICC member/Admin.DELETE /members/:id- Remove an ICC member.
- Node.js (v18+ recommended)
- MongoDB (Local or Atlas URL)
git clone <repository-url>
cd SafeDeskNavigate to the server directory and install dependencies.
cd server
npm installCreate a .env file in the server directory with the following variables:
PORT=5000
MONGODB_URI=mongodb+srv://<your-db-url>
JWT_SECRET=your_super_secret_key
JWT_EXPIRES_IN=7d
CLIENT_URL=http://localhost:5173
UPLOAD_DIR=uploads
MAX_FILE_SIZE_MB=10
GEMINI_API_KEY=your_google_gemini_api_key
TWILIO_SID=HJHDJEVCJVYEVCY
TWILIO_AUTH=UETT7T3764RI7B7T7R73TR7
TWILIO_PHONE=TWILIO-PHONE-NUMBERStart the backend server:
npm run devServer will start on http://localhost:5000
Open a new terminal, navigate to the client directory and install dependencies.
cd client
npm installCreate a .env file in the client directory:
VITE_API_URL=http://localhost:5000/apiStart the frontend development server:
npm run devClient will start on http://localhost:5173
- Create a cluster on MongoDB Atlas.
- Get the connection string and update
MONGODB_URIin your backend environment variables.
- Push the
serverfolder code to a Git repository. - Connect the repository to a hosting service like Render.
- Set the Build Command:
npm install && npm run build. - Set the Start Command:
npm start. - Add all environment variables from your
.envfile to the hosting platform's environment configuration.
- Push the
clientfolder code to a Git repository. - Connect the repository to Vercel or Netlify.
- Set the Build Command:
npm run build. - Set the Output Directory:
dist. - Add the Environment Variable:
VITE_API_URLpointing to your deployed backend URL.
This project is licensed under the Team CodeHeist