{"id":28226709,"url":"https://github.com/berkanjs/auth-tutorial-node.js-express-mongodb-swagger","last_synced_at":"2025-10-17T20:53:11.098Z","repository":{"id":288440287,"uuid":"968107194","full_name":"BerkanJs/Auth-Tutorial-Node.js-Express-MongoDB-Swagger","owner":"BerkanJs","description":" This project is a Node.js application that covers basic authentication operations like user registration, login, email verification, password reset, etc. It also provides API documentation with Swagger.","archived":false,"fork":false,"pushed_at":"2025-04-17T14:20:19.000Z","size":6892,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-18T12:09:25.693Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/BerkanJs.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-04-17T14:16:06.000Z","updated_at":"2025-04-17T14:20:23.000Z","dependencies_parsed_at":"2025-04-18T04:58:41.218Z","dependency_job_id":"05c474ed-321d-44a0-a74f-3674cdd46534","html_url":"https://github.com/BerkanJs/Auth-Tutorial-Node.js-Express-MongoDB-Swagger","commit_stats":null,"previous_names":["berkanjs/auth-tutorial-node.js-express-mongodb-swagger"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/BerkanJs/Auth-Tutorial-Node.js-Express-MongoDB-Swagger","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BerkanJs%2FAuth-Tutorial-Node.js-Express-MongoDB-Swagger","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BerkanJs%2FAuth-Tutorial-Node.js-Express-MongoDB-Swagger/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BerkanJs%2FAuth-Tutorial-Node.js-Express-MongoDB-Swagger/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BerkanJs%2FAuth-Tutorial-Node.js-Express-MongoDB-Swagger/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/BerkanJs","download_url":"https://codeload.github.com/BerkanJs/Auth-Tutorial-Node.js-Express-MongoDB-Swagger/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BerkanJs%2FAuth-Tutorial-Node.js-Express-MongoDB-Swagger/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259609882,"owners_count":22884137,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":[],"created_at":"2025-05-18T12:09:22.287Z","updated_at":"2025-10-17T20:53:06.044Z","avatar_url":"https://github.com/BerkanJs.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🔐 Auth Tutorial – Node.js, Express, MongoDB \u0026 Swagger\n\nThis project is a Node.js-based authentication system that handles user registration, login, email verification, password reset, and more. It also includes Swagger API documentation.\n\n## 📁 Project Structure\n\n```\nauth-tutorial/\n├── backend/\n│   ├── controllers/\n│   ├── routes/\n│   ├── models/\n│   ├── middleware/\n│   ├── utils/\n│   ├── mailtrap/\n│   ├── swagger.yaml\n│   └── server.js\n├── frontend/\n├── node_modules/\n├── .env\n├── package.json\n└── README.md\n```\n\n## 🚀 Setup\n\n### 1. Clone the Repository\n\n```bash\ngit clone https://github.com/your-username/auth-tutorial.git\ncd auth-tutorial\n```\n\n### 2. Install Dependencies\n\n```bash\nnpm install\n```\n\n### 3. Configure Environment Variables\n\nCreate a `.env` file in the root directory and add the following:\n\n```\nPORT=5000\nMONGO_URI=mongodb+srv://user:password@cluster.mongodb.net/dbname\nJWT_SECRET=your_jwt_secret\nCLIENT_URL=http://localhost:5173\n```\n\n### 4. Start the App\n\n```bash\nnpm start\n```\n\n## 📬 Auth Endpoints\n\n- ✅ Sign Up: `POST /api/auth/signup`\n- ✅ Login: `POST /api/auth/login`\n- ✅ Logout: `POST /api/auth/logout`\n- ✅ Verify Email: `POST /api/auth/verify-email`\n- ✅ Forgot Password: `POST /api/auth/forgot-password`\n- ✅ Reset Password: `POST /api/auth/reset-password/:token`\n- ✅ Check Auth: `GET /api/auth/check-auth`\n\n## 📘 Swagger API Documentation\n\nAccess Swagger UI at:\n\n```bash\nhttp://localhost:5000/api-docs\n```\n\nSwagger schema file: `backend/swagger.yaml`\n\n## ✉️ Email Service\n\nThis project uses [Mailtrap](https://mailtrap.io/) for testing email functionalities. Email credentials are stored in `.env`. These actions are email-supported:\n\n- Email verification\n- Sending password reset link\n- Welcome email\n- Password reset success message\n\n## ⚠️ Security Notes\n\n- Passwords are hashed with `bcryptjs`.\n- Authentication is managed via JWT.\n- Cookies are used for secure session handling (HTTPOnly).\n- Token expiration is implemented for enhanced security.\n\n## 👨‍💻 Tech Stack\n\n- Node.js\n- Express.js\n- MongoDB (Mongoose)\n- JWT (JSON Web Tokens)\n- Swagger\n- Mailtrap\n- BcryptJS\n\n## 🧪 Sample Request Bodies\n\n### Sign Up\n\n```json\n{\n  \"email\": \"test@example.com\",\n  \"name\": \"Berkan\",\n  \"password\": \"secret123\"\n}\n```\n\n### Login\n\n```json\n{\n  \"email\": \"test@example.com\",\n  \"password\": \"secret123\"\n}\n```\n\n### Verify Email\n\n```json\n{\n  \"code\": \"123456\"\n}\n```\n\n### Forgot Password\n\n```json\n{\n  \"email\": \"test@example.com\"\n}\n```\n\n### Reset Password\n\n```json\n{\n  \"password\": \"newPassword123\"\n}\n```\n\n## 🧡 Contributing\n\nPull requests are welcome! Feel free to report bugs, suggest improvements, or contribute to the project.\n\n---\n\n**Developed by BerkanJS**  \nTo integrate with frontend, don't forget to set the `CLIENT_URL` in your `.env`:\n\n```bash\nCLIENT_URL=http://localhost:5173\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fberkanjs%2Fauth-tutorial-node.js-express-mongodb-swagger","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fberkanjs%2Fauth-tutorial-node.js-express-mongodb-swagger","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fberkanjs%2Fauth-tutorial-node.js-express-mongodb-swagger/lists"}