{"id":26826787,"url":"https://github.com/kaiumallimon/shieldx-server","last_synced_at":"2026-04-28T01:33:04.888Z","repository":{"id":279048484,"uuid":"937569385","full_name":"kaiumallimon/shieldx-server","owner":"kaiumallimon","description":"Secure and scalable Node.js backend for ShieldX, a password manager with encryption and authentication. 🚀🔐","archived":false,"fork":false,"pushed_at":"2025-02-25T16:14:18.000Z","size":59,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-12T02:54:36.605Z","etag":null,"topics":["bcrypt","jwt","nodejs","password-manager","secured"],"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/kaiumallimon.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}},"created_at":"2025-02-23T11:43:48.000Z","updated_at":"2025-02-26T19:41:49.000Z","dependencies_parsed_at":"2025-02-23T13:19:35.008Z","dependency_job_id":"5599a8ff-75b6-4789-bd14-1adc61854db9","html_url":"https://github.com/kaiumallimon/shieldx-server","commit_stats":null,"previous_names":["kaiumallimon/shieldx-server"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/kaiumallimon/shieldx-server","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kaiumallimon%2Fshieldx-server","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kaiumallimon%2Fshieldx-server/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kaiumallimon%2Fshieldx-server/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kaiumallimon%2Fshieldx-server/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kaiumallimon","download_url":"https://codeload.github.com/kaiumallimon/shieldx-server/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kaiumallimon%2Fshieldx-server/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32362781,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-27T20:07:02.737Z","status":"ssl_error","status_checked_at":"2026-04-27T20:07:00.910Z","response_time":128,"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":["bcrypt","jwt","nodejs","password-manager","secured"],"created_at":"2025-03-30T11:31:02.909Z","updated_at":"2026-04-28T01:33:04.873Z","avatar_url":"https://github.com/kaiumallimon.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ShieldX\n\nShieldX is a secure and efficient password manager built using Firebase and Node.js. It allows users to store, manage, and retrieve their passwords securely. The application ensures that user data is protected with robust authentication and authorization mechanisms.\n\n## Features\n\n- **User Authentication**: Secure user registration and login using JWT tokens.\n- **Password Management**: Store, update, retrieve, and delete passwords.\n- **User Profile**: Access and manage user profile information.\n- **Token Refresh**: Refresh authentication tokens to maintain secure sessions.\n- **Middleware**: Authentication middleware to protect routes and ensure secure access.\n\n\n- **Password generator**: Generate strong and efficient password using the password generator tool and store automatically. \u003ci\u003e[Coming soon..]\u003c/i\u003e\n\n## Project Structure\n\n```bash\nshieldx\n├──src\n│   ├──config\n│   │   └──firebase.config.js\n│   ├──middlewares\n│   │   └──auth.middleware.js\n│   ├──modules\n│   │   ├──auth\n│   │   │   ├──controllers\n│   │   │   │   └──auth.controller.js\n│   │   │   ├──models\n│   │   │   │   └──auth.model.js\n│   │   │   ├──routes\n│   │   │   │   └──auth.route.js\n│   │   │   └──services\n│   │   │   │   └──auth.service.js\n│   │   ├──passwords\n│   │   │   ├──controllers\n│   │   │   │   └──passwords.controller.js\n│   │   │   ├──models\n│   │   │   │   └──passwords.model.js\n│   │   │   └──routes\n│   │   │   │   └──passwords.route.js\n│   │   ├──test\n│   │   │   ├──controllers\n│   │   │   │   └──test.controller.js\n│   │   │   └──routes\n│   │   │   │   └──test.route.js\n│   │   └──user\n│   │   │   ├──controller\n│   │   │   │   └──user.controller.js\n│   │   │   ├──model\n│   │   │   │   └──user.model.js\n│   │   │   └──routes\n│   │   │   │   └──user.routes.js\n│   ├──utils\n│   │   ├──aes.generator.util.js\n│   │   └──encryption.util.js\n│   └──index.js\n├──package-lock.json\n├──package.json\n├──README.md\n└──.gitignore\n```\n\n## Getting Started\n\n1. Clone the repository:\n    ```bash\n    git clone https://github.com/kaiumallimon/shieldx-server.git\n    cd shieldx\n    ```\n\n2. Install dependencies:\n    ```bash\n    npm install\n    ```\n\n3. Set up environment variables:\n\n    Create a `.env` file in the root directory and add the following:\n\n    ```env\n    PORT = 3000\n    JWT_SECRET=???\n    JWT_REFRESH_SECRET=???\n    AES_SECRET=???\u003c32 character\u003e\n    FIREBASE_SERVICE_ACCOUNT=???\n    ```\n\n4. Start the application:\n    ```bash\n    node src/index.js\n    ```\n\n5. Access the application at `http://localhost:3000`.\n\n## Contributing\n\nContributions are welcome! Please fork the repository and submit a pull request for any improvements or bug fixes.\n\n## License\n\nThis project is licensed under the MIT License.\n\n### Authentication Process:\n\n- User logs in with his email and password.\n- Email and password is sent to the server.\n- Server verifies email and password and generates two JWT token, one for authentication and one for refreshing the authentication if it expired.\n- Server sends the token to the clients\n- Client requests the user account data with the token it received. If the token is expired, then it calls the refresh api with the refresh token given. Then the server verifies and generates the auth token again and sends to the client \u0026 using the auth token, client gets the user account / all other data as required.\n\n### APIS\n\nTest the server:\n```bash\n/\n```\n\nRegister an user:\n\n```bash\n/api/auth/register\n\n# request type: POST\n# required body:\n# {name, email, password}\n```\n\nLogin an user (generate auth token):\n\n```bash\n/api/auth/login\n\n# request type: POST\n# required body:\n# {email, password}\n```\n\nRefresh auth token (only if token expired):\n```bash\n/api/auth/refresh\n\n# request type: POST\n# required body:\n# {refreshToken} =\u003e Received from login api call\n```\n\nUser account data fetch\n```bash\n/api/profile/me\n\n# request type: POST\n# required body:\n# {email}\n\n# required Authorization:\n# Bearer ...authToken\n```\n\nStore Password\n```bash\n/api/password/store\n\n# request type: POST\n# required Authorization:\n# Bearer ...authToken\n\n# required body:\n# { userId, clientTitle, clientUsername, clientPassword, clientUrl, notes }\n\n# notes \u0026 clientUrl is optional\n```\n\nRetreive all passwords of an user\n```bash\n/api/password/all/:userId\n\n# request type: GET\n# required Authorization:\n# Bearer ...authToken\n```\n\nRetreive saved data of a password by passwordId\n```bash\n/api/password/single/:passwordId\n\n# request type: GET\n# required Authorization:\n# Bearer ...authToken\n```\n\nDelete a password\n```bash\n/api/password/delete/:passwordId\n\n# request type: GET\n# required Authorization:\n# Bearer ...authToken\n```\n\nUpdate a password\n```bash\n/api/password/update/:passwordId\n\n# request type: POST\n# required Authorization:\n# Bearer ...authToken\n\n# required body:\n# { passwordId, clientTitle, clientUsername, clientPassword, clientUrl, notes }\n```\n\n## Author\n[Kaium Al Limon](www.facebook.com/lemon.exee)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkaiumallimon%2Fshieldx-server","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkaiumallimon%2Fshieldx-server","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkaiumallimon%2Fshieldx-server/lists"}