{"id":28520252,"url":"https://github.com/mahmovdsayed/blogplatform","last_synced_at":"2026-04-09T02:30:57.920Z","repository":{"id":294761041,"uuid":"987993008","full_name":"Mahmovdsayed/blogPlatform","owner":"Mahmovdsayed","description":"Blogging Platform is a comprehensive solution that enables users to easily create, manage, and share blog posts. The platform features secure user authentication, allowing authors to create, edit, and delete their posts, organize content with categories and tags, and engage with readers through comments.","archived":false,"fork":false,"pushed_at":"2025-05-25T03:35:43.000Z","size":56,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-09T07:03:34.999Z","etag":null,"topics":["bcrypt","cloudinary","cors","expressjs","jwt","mongoose","multer","nodejs","nodemailer","typescript","zod"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","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/Mahmovdsayed.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-05-21T22:33:47.000Z","updated_at":"2025-05-25T03:35:46.000Z","dependencies_parsed_at":"2025-05-21T23:35:37.225Z","dependency_job_id":"a5ae93f6-a091-488c-abdf-664196863933","html_url":"https://github.com/Mahmovdsayed/blogPlatform","commit_stats":null,"previous_names":["mahmovdsayed/blogplatform"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Mahmovdsayed/blogPlatform","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mahmovdsayed%2FblogPlatform","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mahmovdsayed%2FblogPlatform/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mahmovdsayed%2FblogPlatform/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mahmovdsayed%2FblogPlatform/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Mahmovdsayed","download_url":"https://codeload.github.com/Mahmovdsayed/blogPlatform/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mahmovdsayed%2FblogPlatform/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263156677,"owners_count":23422474,"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":["bcrypt","cloudinary","cors","expressjs","jwt","mongoose","multer","nodejs","nodemailer","typescript","zod"],"created_at":"2025-06-09T07:01:13.823Z","updated_at":"2025-12-30T22:42:06.214Z","avatar_url":"https://github.com/Mahmovdsayed.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Blog Platform API\n\nA robust backend API for a modern blogging platform built with Node.js, TypeScript, and Express.\n\n![Node.js](https://img.shields.io/badge/Node.js-18+-green)\n![TypeScript](https://img.shields.io/badge/TypeScript-5+-blue)\n![Express](https://img.shields.io/badge/Express-4.x-lightgrey)\n\n## Features\n\n- **User Authentication** (JWT)\n- **Image Upload** (Cloudinary integration)\n- **Validation Middleware** (Zod schema validation)\n- **Database Models** (Mongoose)\n- **Error Handling** (Custom error responses)\n\n## Technologies Used\n\n- **Runtime:** Node.js\n- **Language:** TypeScript\n- **Framework:** Express\n- **Database:** MongoDB (Mongoose)\n- **Authentication:** JWT\n- **File Storage:** Cloudinary\n- **Validation:** Zod\n\n# Contributing\n\nPull requests are welcome. Please open an issue first to discuss what you would like to change.\n\n## Installation\n\n1. Clone the repository:\n   ```bash\n   git clone https://github.com/Mahmovdsayed/blogPlatform.git\n   cd blog-platform\n   ```\n2. Install dependencies:\n   ```bash\n    npm install\n   ```\n3. Run in development mode:\n\n   ```bash\n   npm run dev\n   ```\n\n## API Endpoints\n\n### Authentication\n\n| Method | Endpoint           | Description                                           |\n|--------|--------------------|-------------------------------------------------------|\n| POST   | `/auth/signup`      | Register a new user (sends OTP email)                 |\n| POST   | `/auth/signin`      | User login (returns JWT token)                         |\n| POST   | `/auth/verify-otp`  | Verify email using OTP                                 |\n| POST   | `/auth/resend-otp`  | Request new OTP (if expired or not received)          |\n| POST   | `/auth/forgot-password` | Request password reset (sends reset token via email) |\n| POST   | `/auth/reset-password`  | Reset password using valid token                       |\n| GET    | `/auth/user`        | Get user profile (protected by auth middleware)       |\n| PATCH  | `/auth/update`      | Update user profile (protected by auth middleware)    |\n| DELETE | `/auth/delete`      | Delete user account (protected by auth middleware)    |\n\n---\n\n### Blogs\n\n| Method | Endpoint         | Description                             |\n|--------|------------------|---------------------------------------|\n| POST   | `/blog/add`     | Add a new blog post (auth required)   |\n| PATCH  | `/blog/update`  | Update an existing blog post (auth)   |\n| DELETE | `/blog/delete`  | Delete a blog post (auth)              |\n| GET    | `/blog/`        | Get a single blog post by `blogID`    |\n| GET    | `/blog/all`     | Get all blog posts                     |\n\n---\n\n### Likes\n\n| Method | Endpoint         | Description                             |\n|--------|------------------|---------------------------------------|\n| POST   | `/like/add`     | Like a blog post (auth required)      |\n| DELETE | `/like/remove`  | Remove a like from a blog post (auth) |\n| GET    | `/like/all`     | Get all likes (optionally filtered)   |\n\n---\n\n### Comments\n\n| Method | Endpoint         | Description                             |\n|--------|------------------|---------------------------------------|\n| POST   | `/comment/add`  | Add a comment (auth required)          |\n| DELETE | `/comment/delete` | Delete a comment (auth required)       |\n| GET    | `/comment/all`  | Get all comments                      |\n\n---\n\n\n© 2025 Mahmoud Sayed. All rights reserved.  \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmahmovdsayed%2Fblogplatform","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmahmovdsayed%2Fblogplatform","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmahmovdsayed%2Fblogplatform/lists"}