{"id":29190599,"url":"https://github.com/keertyverma/blogsphere","last_synced_at":"2025-08-06T15:15:55.111Z","repository":{"id":235201194,"uuid":"790283030","full_name":"keertyverma/blogsphere","owner":"keertyverma","description":"A Modern Blogging Platform for reading, creating, sharing blogs and building a community.","archived":false,"fork":false,"pushed_at":"2025-06-26T12:23:18.000Z","size":2374,"stargazers_count":1,"open_issues_count":1,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-26T13:27:50.598Z","etag":null,"topics":["cloudinary","editorjs","express","firebase-auth","github-actions","google-cloud","jest","mailgun","mongo-db","node-js","react","tailwind-css","tanstack-react-query","typescipt","vercel","zustand-state-management"],"latest_commit_sha":null,"homepage":"https://blogsphere.360verse.co/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/keertyverma.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2024-04-22T15:44:30.000Z","updated_at":"2025-05-17T06:57:22.000Z","dependencies_parsed_at":"2024-04-22T17:15:59.618Z","dependency_job_id":"cc3ccf53-95bb-47ed-8d85-e10ade6eb63a","html_url":"https://github.com/keertyverma/blogsphere","commit_stats":null,"previous_names":["keertyverma/blogsphere"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/keertyverma/blogsphere","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keertyverma%2Fblogsphere","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keertyverma%2Fblogsphere/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keertyverma%2Fblogsphere/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keertyverma%2Fblogsphere/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/keertyverma","download_url":"https://codeload.github.com/keertyverma/blogsphere/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keertyverma%2Fblogsphere/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263052430,"owners_count":23406106,"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":["cloudinary","editorjs","express","firebase-auth","github-actions","google-cloud","jest","mailgun","mongo-db","node-js","react","tailwind-css","tanstack-react-query","typescipt","vercel","zustand-state-management"],"created_at":"2025-07-02T00:10:23.865Z","updated_at":"2025-08-06T15:15:55.098Z","avatar_url":"https://github.com/keertyverma.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# \u003cimg src=\"https://raw.githubusercontent.com/keertyverma/blogsphere/refs/heads/main/client/public/assets/images/logo.svg\" width=\"35\" alt=\"Logo\" /\u003e Blogsphere\n\n[![CI/CD Pipeline](https://img.shields.io/github/actions/workflow/status/keertyverma/blogsphere/backend-ci-cd.yml?label=Backend%20CI/CD%20Pipeline)](https://github.com/keertyverma/blogsphere/actions/workflows/backend-ci-cd.yml)\n\n🔗 **Live App**: [https://blogsphere.sooprr.com](https://blogsphere.sooprr.com)\n\n\u003chr /\u003e\n\n👋 Welcome to Blogsphere, \u003cstrong\u003ea modern blogging platform built to empower creators and engage curious readers.\u003c/strong\u003e\n\n- 🌐 **Create, Discover, and Engage** — with seamless social and engagement features.\n- ✨ **AI-powered publishing workflow** — instantly generate titles, summaries, and tags.\n- 📱 **Responsive, accessible design** — sleek on mobile, tablet, and desktop.\n\n### 📽️ App Demo\n\n- \u003cdiv\u003e\n    \u003ca href=\"https://www.loom.com/share/f5f402acfd96478a8e4653dffb2eea9d\"\u003e\n      \u003cp\u003eBlogSphere - Quick Demo\u003c/p\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://www.loom.com/share/f5f402acfd96478a8e4653dffb2eea9d\"\u003e\n      \u003cimg style=\"max-width:400px;\" src=\"https://cdn.loom.com/sessions/thumbnails/f5f402acfd96478a8e4653dffb2eea9d-562337a6286acfb7-full-play.gif\"\u003e\n    \u003c/a\u003e\n  \u003c/div\u003e\n- For a more in-depth walkthrough, explore these detailed videos:\n  - [Part 1 - Discover Blogs, Sign Up \u0026 Interact ](https://www.youtube.com/watch?v=SgRE1Oa-Jgc)\n  - [Part 2 - Create, Edit \u0026 Publish Blogs | Profile Settings](https://www.youtube.com/watch?v=Q6PeqZPGLbk)\n\n## 🚀 Features\n\n### 🔍 Blog Discovery\n\n- **Blog Feed**: Discover recent and trending blogs with infinite scrolling and a curated list of the top 10 most engaging posts.\n- **Search**: Quickly find blogs by title, description, tags, or author name. You can also search for users by their full name.\n- **Filter by Categories**: Browse blogs by specific categories to focus on the topics that interest you most.\n\n### 👤 User Management\n\n- **🔐 User Authentication**\n\n  - Sign up / Log in with Email-password or Google.\n  - Email Verification: Verify your account via email for trusted access, with the option to resend the verification if needed.\n  - Password Recovery: Securely reset your password with the easy forgot password process.\n  - Session Management: Automatic session expiration and secure token handling for enhanced security.\n\n- **User Profile**\n  - View and edit your profile, including name, bio, profile image, and social links.\n  - Bookmarks: Access and manage all the blogs you've bookmarked for quick and easy reference.\n- **Account Settings**\n  - Change Password: Easily update your login password from the settings.\n  - Change Username: Users have a one-time option to change their username, which is initially generated from their name or email.\n\n### ✍️ Blog Management\n\n- **Full Blog Control**: Effortlessly create, edit, and delete both draft and published blogs through a clean, user-friendly dashboard.\n- **Rich Text Editor**: Create beautifully structured blogs using a block-style editor powered by [Editor.js](https://editorjs.io/).\u003cbr\u003eAdd headings, paragraphs, lists, images, quotes, code blocks, and more with ease. Need help? Access the dedicated [Editor Guide](https://blogsphere.sooprr.com/editor-guide) to assist content creation.\n- **✨ AI Blog Metadata Generator**: Speed up your publishing workflow with **one-click AI-generated metadata** - including a compelling title, concise summary, and relevant tags, based on your blog content. Easily review, refine, or undo AI suggestions to stay in control.\n- **Draft \u0026 Publish Modes**:\n  - Save blogs as drafts and continue editing anytime.\n  - Preview your draft to see exactly how the blog page will look before publishing.\n  - Privacy \u0026 Access Control: Draft blogs are private and visible only to their authors. Unauthorized users attempting to access them are automatically redirected.\n\n### 🗨️ Blog Engagement\n\n- **Like \u0026 Comment**:\n  - Engage with content by liking blogs and participating in discussions through comments.\n  - The nested comment system supports threaded replies for more meaningful conversations.\n- **Bookmark**: Save your favorite blogs for quick access and later reading.\n- **Share Options**: Easily share blogs via X (Twitter) and LinkedIn, or copy the link to your clipboard for effortless sharing anywhere.\n\n### 🌗 User Experience\n\n- **Dark/Light Theme**: Toggle between light and dark mode for a personalized reading experience.\n- **Responsive Design**: Optimized for mobile, tablet, and desktop devices\n- Minimal, Modern UI: Built for readability and ease of use\n\n## 🛠️ Tech Stack\n\n**Frontend**\n\n- [React](https://react.dev/) — A JavaScript library for building fast, interactive, and reusable user interfaces.\n- [TypeScript](https://www.typescriptlang.org/) — Strongly typed JavaScript for safer code.\n- [Tailwind CSS](https://tailwindcss.com/) with [shadcn/ui](https://ui.shadcn.com/) — Utility-first styling with customizable UI components.\n- [Zustand](https://zustand-demo.pmnd.rs/) — Lightweight state management for React apps.\n- [Tanstack Query](https://tanstack.com/query/latest) — Manage server state, caching, and API data fetching efficiently in React.\n- [Editor.js](https://editorjs.io/) — Block-style rich text editor used for blog content creation.\n\n**Backend \u0026 Database**\n\n- [Node.js](https://nodejs.org/) - JavaScript runtime environment\n- [Express](https://expressjs.com/) — API framework.\n- [MongoDB](https://www.mongodb.com/) — Document-based NoSQL database to store users, blogs, and comments.\u003cbr\u003e Fully managed via [MongoDB Atlas](https://www.mongodb.com/atlas) for data storage and scalability.\n- [Google Gemini AI](\u003c(https://gemini.google/about/?hl=en-IN)\u003e) (GenAI) — Powers the AI Blog Metadata Generator by generating titles, summaries, and tags based on blog content.\n- [Cloudinary](https://cloudinary.com/) — Manage and deliver blog images and user profile pictures with fast, cloud-based storage and CDN delivery.\n- [Firebase](https://firebase.google.com/) — Used for Google authentication integration.\n- [Mailgun](https://www.mailgun.com/) — Transactional email service used for account verification and password recovery emails.\n- [Jest](https://jestjs.io/) — JavaScript testing framework used for unit and integration tests.\n\n**Deployment**\n\n- **Backend**: Deployed on [Google Cloud](https://cloud.google.com/) with an automated CI/CD pipeline using [GitHub Actions](https://github.com/features/actions) for continuous integration and deployment. \u003cbr\u003eEvery push to the repository triggers build, test, and deployment processes.\n- **Frontend**: Deployed on [Vercel](https://vercel.com/) with an automatic CI/CD pipeline for continuous updates.\n\n## ✨ Contributing\n\nContributions from the community are always welcome to make **BlogSphere** even better.\n\nTo contribute, please follow these steps\n\n1. Fork the repository on GitHub.\n2. Clone your forked repository:\n3. Create a new branch from the `main` branch.\n4. Make the necessary changes and commit them with descriptive commit messages.\n5. Push your changes to your forked repository and raise PR on this repository\n\n## 💖👩‍💻 Support\n\nSupport the project by giving it a star ⭐.\n\u003cbr\u003e Feel free to reach out if you have any questions or suggestions.\n\n[![Twitter Follow](https://img.shields.io/twitter/follow/KeertyVerma?style=social)](https://twitter.com/KeertyVerma)\n[![Linkedin: Keerty Verma](https://img.shields.io/badge/-Keerty%20Verma-blue?style=flat-square\u0026logo=Linkedin\u0026logoColor=white\u0026link=https://www.linkedin.com/in/keertyverma/)](https://www.linkedin.com/in/keertyverma/)\n[![GitHub followers](https://img.shields.io/github/followers/keertyverma?style=social)](https://github.com/keertyverma)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkeertyverma%2Fblogsphere","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkeertyverma%2Fblogsphere","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkeertyverma%2Fblogsphere/lists"}