{"id":48717810,"url":"https://github.com/aryarajeev000/user-management-system","last_synced_at":"2026-04-11T18:02:04.203Z","repository":{"id":331191678,"uuid":"1125636007","full_name":"aryarajeev000/user-management-system","owner":"aryarajeev000","description":"This project is a full-stack User Management System designed to handle user authentication, role-based authorization, and user lifecycle management. It supports secure login/signup, profile management, and admin-level user controls using a clean and scalable architecture.","archived":false,"fork":false,"pushed_at":"2025-12-31T13:06:31.000Z","size":123,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-01-04T07:12:56.597Z","etag":null,"topics":["axios-react","bcryptjs","css","express-middleware","expressjs","html","javascript","json","jwt-auth","jwt-authentication","mongodb","nodejs","passport","react","restful-api"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aryarajeev000.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-12-31T04:39:55.000Z","updated_at":"2025-12-31T13:06:35.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/aryarajeev000/user-management-system","commit_stats":null,"previous_names":["aryarajeev000/user-management-system"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/aryarajeev000/user-management-system","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aryarajeev000%2Fuser-management-system","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aryarajeev000%2Fuser-management-system/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aryarajeev000%2Fuser-management-system/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aryarajeev000%2Fuser-management-system/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aryarajeev000","download_url":"https://codeload.github.com/aryarajeev000/user-management-system/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aryarajeev000%2Fuser-management-system/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31689762,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-11T13:07:20.380Z","status":"ssl_error","status_checked_at":"2026-04-11T13:06:47.903Z","response_time":54,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["axios-react","bcryptjs","css","express-middleware","expressjs","html","javascript","json","jwt-auth","jwt-authentication","mongodb","nodejs","passport","react","restful-api"],"created_at":"2026-04-11T18:01:37.797Z","updated_at":"2026-04-11T18:02:04.190Z","avatar_url":"https://github.com/aryarajeev000.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# User Management System\n\n## Project Overview\nThis project is a full-stack **User Management System** built as part of the **Backend Developer Intern Assessment**.  \nIt provides secure authentication, role-based access control, admin-level user management, and a clean frontend interface.\n\nThe system focuses on **security, correctness, and scalability**, with a minimal yet professional UI.\n\n## Deployed Link\n\n### Backend\nhttps://user-management-system-it6g.onrender.com\n### Frontend\nuser-management-system-moeu.vercel.app\n\n### admin user\nadmin@gmail.com\nAdmin@1234\n### user\nuser@gmail.com\nUser@1234\n---\n\n## Tech Stack\n\n### Backend\n- Node.js\n- Express.js\n- MongoDB (Mongoose)\n- JWT (HTTP-only cookies)\n- bcrypt (password hashing)\n- Joi / Zod (input validation)\n\n### Frontend\n- React (Vite)\n- React Router DOM\n- Axios\n- Context API\n- Plain CSS (custom fintech aqua theme)\n\n---\n\n## Backend Features\n\n### Authentication\n- User signup with **full name, email, and password**\n- Email format validation\n- Strong password validation\n- Password hashing using bcrypt\n- JWT authentication token on signup\n- User login with email and password\n- Credential verification\n- JWT authentication token on login\n- Get current logged-in user information\n- Secure logout functionality (cookie cleared)\n\n### User Management – Admin\n- View all users\n- Pagination support (10 users per page)\n- Activate user accounts\n- Deactivate user accounts\n- Admin-only protected routes\n\n### User Management – User\n- View own profile\n- Update full name and email\n- Change password (old password verification required)\n\n### Security\n- Password hashing using bcrypt\n- Protected routes using authentication middleware\n- Role-based access control (admin / user)\n- Input validation on all endpoints\n- Proper HTTP status codes\n- Environment variables for sensitive data (JWT secret)\n- Cookie-based authentication (HTTP-only)\n\n---\n\n## Frontend Features\n\n### Login Page\n- Email and password input fields\n- Client-side form validation\n- Error message display\n- Redirect to dashboard on success\n- Link to signup page\n\n### Signup Page\n- Full name, email, password inputs\n- Required field validation\n- Email format validation\n- Password strength validation\n- Server-side error handling\n- Redirect to login on success\n\n### User Profile Page\n- Display user information\n- Edit full name and email\n- Save and cancel actions\n- Change password section\n- Success and error messages\n- Admin-specific section (for admin users)\n\n### Admin Dashboard\n- Table displaying all users\n- Columns: email, full name, role, status, actions\n- Pagination (10 users per page)\n- Activate / deactivate user actions\n- Confirmation dialog before status change\n- Clean, structured UI\n\n### Navigation Bar\n- Display logged-in user name\n- Display user role\n- Role-based navigation links\n- Logout button\n- Redirect to login after logout\n\n### Protected Routes\n- Prevent unauthenticated access\n- Admin-only pages restricted to admins\n- Automatic redirection for unauthorized users\n\n---\n\n## Folder Structure\n\n### Root Structure\nroot/\n├── backend/\n├── frontend/\n└── README.md\n\n### Backend Structure\nbackend/\n├── src/\n│ ├── config/\n│ ├── controllers/\n│ ├── middlewares/\n│ ├── models/\n│ ├── routes/\n│ ├── utils/\n│ ├── app.js\n│ └── server.js\n├── .env\n└── package.json\n\n\n### Frontend Structure\nfrontend/\n├── src/\n│ ├── api/\n│ ├── components/\n│ ├── context/\n│ ├── pages/\n│ ├── style.css\n│ ├── App.jsx\n│ └── main.jsx\n└── package.json\n\n\n---\n\n## Environment Variables\n\n### Backend Environment Variables\nCreate a `.env` file inside the backend directory.\n\n```env\nPORT=5000\nMONGO_URI=your_mongodb_connection_string\nJWT_SECRET=your_jwt_secret\nNODE_ENV=development\n\nFrontend Environment Variables\n\nNo environment variables are required for local frontend setup.\n\n### Backend Setup\nInstall Dependencies\ncd backend\nnpm install\n\nRun Server\nnpm run dev\n\nBackend URL\nhttp://localhost:5000\n\n### Frontend Setup\nInstall Dependencies\ncd frontend\nnpm install\n\nRun Frontend\nnpm run dev\n\nFrontend URL\nhttp://localhost:5173\n\n### API Endpoints\nAuthentication APIs\nSignup\nPOST /api/auth/signup\n\n\nRequest Body:\n\n{\n  \"fullName\": \"John Doe\",\n  \"email\": \"john@example.com\",\n  \"password\": \"Strong@123\"\n}\n\nLogin\nPOST /api/auth/login\n\n\nRequest Body:\n\n{\n  \"email\": \"john@example.com\",\n  \"password\": \"Strong@123\"\n}\n\nLogout\nPOST /api/auth/logout\n\nUser APIs\nGet Current User\nGET /api/user/me\n\nUpdate User Profile\nPUT /api/user/me\n\nAdmin APIs\nGet All Users\nGET /api/admin/users?page=1\n\nActivate / Deactivate User\nPATCH /api/admin/users/:id/status\n\n## Authentication Flow\nStep 1\n\nUser signs up or logs in.\n\nStep 2\n\nBackend generates JWT and stores it in an HTTP-only cookie.\n\nStep 3\n\nBrowser automatically sends cookie with each request.\n\nStep 4\n\nProtected routes validate JWT from cookie.\n\nStep 5\n\nLogout clears the authentication cookie.\n\nTesting\nAPI Testing\n\nAPIs tested using Postman / Thunder Client\n\nValidation errors tested for invalid email and weak passwords\n\nRole-based access verified for admin routes\n\n## Deployment\n### Backend Deployment\n\nHosted on Render \nEnvironment variables configured in deployment dashboard\nCORS configured to allow frontend origin with credentials\n\n### Frontend Deployment\n\nHosted on Vercel\nBackend base URL configured accordingly\n\nRajeev Sutrakar\nBackend Developer\nDecember 2025\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faryarajeev000%2Fuser-management-system","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faryarajeev000%2Fuser-management-system","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faryarajeev000%2Fuser-management-system/lists"}