{"id":20172431,"url":"https://github.com/princeinscripts/blog-app","last_synced_at":"2026-04-08T23:32:46.501Z","repository":{"id":215874552,"uuid":"739952991","full_name":"PrinceInScripts/Blog-App","owner":"PrinceInScripts","description":"A Full-Featured Blogging Web Application built with the MERN stack, enabling users to create, read, update, and delete blog posts, along with user authentication, image uploading, liking, commenting, and responsive design.","archived":false,"fork":false,"pushed_at":"2024-06-01T15:02:01.000Z","size":2772,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-03T04:41:19.509Z","etag":null,"topics":["axios","bcrypt","ckeditor","cloudinary","daisyui","express","jsonwebtoken","mongodb","mongoose","morgan","multer","nodemailer","react","react-dom","react-hot-toast","react-icons","react-redux","redux-persist","slugify"],"latest_commit_sha":null,"homepage":"https://write-wave.vercel.app/","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/PrinceInScripts.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}},"created_at":"2024-01-07T03:42:22.000Z","updated_at":"2024-06-01T15:02:04.000Z","dependencies_parsed_at":"2024-06-01T11:54:56.344Z","dependency_job_id":"d8b6036a-a29b-4a93-892a-311855ab7f54","html_url":"https://github.com/PrinceInScripts/Blog-App","commit_stats":null,"previous_names":["princeinscripts/blog-app"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/PrinceInScripts/Blog-App","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PrinceInScripts%2FBlog-App","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PrinceInScripts%2FBlog-App/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PrinceInScripts%2FBlog-App/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PrinceInScripts%2FBlog-App/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/PrinceInScripts","download_url":"https://codeload.github.com/PrinceInScripts/Blog-App/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PrinceInScripts%2FBlog-App/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31579053,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-08T14:31:17.711Z","status":"ssl_error","status_checked_at":"2026-04-08T14:31:17.202Z","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","bcrypt","ckeditor","cloudinary","daisyui","express","jsonwebtoken","mongodb","mongoose","morgan","multer","nodemailer","react","react-dom","react-hot-toast","react-icons","react-redux","redux-persist","slugify"],"created_at":"2024-11-14T01:30:36.052Z","updated_at":"2026-04-08T23:32:46.485Z","avatar_url":"https://github.com/PrinceInScripts.png","language":"JavaScript","readme":"\u003cH1 align =\"center\" \u003e A Blogging WriteWave Web App  \u003c/h1\u003e\n\n  * [Configuration and Setup](#configuration-and-setup)\n  * [Key Features](#key-features)\n  * [Technologies used](#technologies-used)\n      - [Frontend](#frontend)\n      - [Backend](#backend)\n      - [Database](#database)\n  * [📸 Screenshots](#screenshots)\n\n\n## Configuration and Setup\n\nIn order to run this project locally, simply fork and clone the repository or download as zip and unzip on your machine.\n\n- Open the project in your prefered code editor.\n- Go to terminal -\u003e New terminal (If you are using VS code)\n- Split your terminal into two (run the Frontend on one terminal and the Backend on the other terminal)\n\nIn the first terminal\n\n```\n$ cd Frontend\n$ npm install (to install frontend-side dependencies)\n$ npm run  start (to start the frontend)\n```\n\nIn the second terminal\n\n- cd Backend and Set environment variables in config.env under ./config\n- Create your mongoDB connection url, which you'll use as your MONGO_URI\n- Supply the following credentials\n\n```\n#  ---  Config.env  ---\nNODE_ENV = production\nPORT =5000\nURI =http://localhost:3000\nMONGO_URI =\nACCESS_TOKEN_SECRET=\nACCESS_TOKEN_EXPIRY=1d\nREFRESH_TOKEN_SECRET=\nREFRESH_TOKEN_EXPIRY=10d\nRESET_PASSWORD_EXPIRE =  \nSMTP_HOST = \"smtp.gmail.com\"\nSMTP_PORT = \nSMTP_USERNAME = \nSMTP_PASSWORD =\nSMTP_FROM_EMAIL = \nCONTACT_US_EMAIL =\nFRONTEND_URL=http://localhost:5173\n```\n\n\n```\n# --- Terminal ---\n$ npm install (to install backend-side dependencies)\n$ npm start (to start the backend)\n```\n\n##  Key Features\n\n- User registration and login\n- Authentication using JWT Tokens\n- CRUD operations (Blog create, read, update and delete)\n- Upload user ımages and blog ımages  to the server\n- Liking  blog and Comment on blog\n- Toast loading effect\n- Responsive Design\n\n\u003cbr/\u003e\n\n##  Technologies used\n\nThis project was created using the following technologies.\n\n####  Frontend \n\n- [React js ](https://www.npmjs.com/package/react) - JavaScript library that is used for building user interfaces specifically for single-page applications\n- [React Hooks  ](https://reactjs.org/docs/hooks-intro.html) - For managing and centralizing application state\n- [react-router-dom](https://www.npmjs.com/package/react-router-dom) - To handle routing\n- [axios](https://www.npmjs.com/package/axios) - For making Api calls\n- [Tailwind CSS](https://developer.mozilla.org/en-US/docs/Web/CSS) - For User Interface\n- [CK-Editor](https://ckeditor.com/docs/ckeditor5/latest/builds/guides/integration/frameworks/react.html) - Rich Text Editor \n- [React icons](https://react-icons.github.io/react-icons/) -\n Small library that helps you add icons  to your react apps.\n\n####  Backend \n\n- [Node js](https://nodejs.org/en/) -A runtime environment to help build fast server applications using JS\n- [Express js](https://www.npmjs.com/package/express) -The server for handling and routing HTTP requests\n- [Mongoose](https://mongoosejs.com/) - For modeling and mapping MongoDB data to JavaScript\n- [express-async-handler](https://www.npmjs.com/package/express-async-handler) - Simple middleware for handling exceptions inside of async express routes and passing them to your express error handlers \n- [jsonwebtoken](https://www.npmjs.com/package/jsonwebtoken) - For authentication\n- [Bcryptjs](https://www.npmjs.com/package/bcryptjs) - For data encryption\n- [Nodemailer](https://nodemailer.com/about/) - Send e-mails from Node.js\n- [Dotenv](https://www.npmjs.com/package/dotenv) - Zero Dependency module that loads environment variables\n- [multer](https://www.npmjs.com/package/multer) - Node.js middleware for uploading files \n- [slugify](https://www.npmjs.com/package/slugify) - For encoding titles into a URL-friendly format\n- [cors](https://www.npmjs.com/package/cors) - Provides a Connect/Express middleware\n\n\n####  Database \n\n - [MongoDB ](https://www.mongodb.com/) - It provides a free cloud service to store MongoDB collections.\n\n ##  Screenshots \n\n![1](https://github.com/PrinceInScripts/Blog-App/assets/124567410/7796d939-5447-458e-95f0-914f2847a883)\n![2](https://github.com/PrinceInScripts/Blog-App/assets/124567410/05008552-d641-44b3-ae38-f4c0987ea5e7)\n![3](https://github.com/PrinceInScripts/Blog-App/assets/124567410/e8fbfaec-eb69-4c1f-a76d-3b9b51229bb0)\n![4](https://github.com/PrinceInScripts/Blog-App/assets/124567410/6c199423-3bae-4031-b77b-67ace93dcd70)\n![5](https://github.com/PrinceInScripts/Blog-App/assets/124567410/3fb4e5ed-ced5-4af2-81d9-497e7d933c27)\n![6](https://github.com/PrinceInScripts/Blog-App/assets/124567410/f5b61c2a-7b8a-482e-929c-99b99cd0aa41)\n![7](https://github.com/PrinceInScripts/Blog-App/assets/124567410/6fe66d3b-31a3-4ed0-9c47-9a0973b36a9c)\n![8](https://github.com/PrinceInScripts/Blog-App/assets/124567410/86ed789d-5455-4c7c-810d-f1e01202b761)\n![9](https://github.com/PrinceInScripts/Blog-App/assets/124567410/3f4aa329-9442-4950-928c-450870470120)\n![10](https://github.com/PrinceInScripts/Blog-App/assets/124567410/ca9c6a1a-e7ac-4d39-bf9c-05f2c1e1dd6f)\n![11](https://github.com/PrinceInScripts/Blog-App/assets/124567410/9384dca3-952f-440f-95e4-8f87987b58e0)\n![12](https://github.com/PrinceInScripts/Blog-App/assets/124567410/40116980-f610-4045-b34c-4c7ec2b7c7c6)\n![13](https://github.com/PrinceInScripts/Blog-App/assets/124567410/03c125ba-73ad-4694-be11-32b9ad442121)\n![14](https://github.com/PrinceInScripts/Blog-App/assets/124567410/48f3dfbe-142e-4a93-a89f-362ad64cd21c)\n![15](https://github.com/PrinceInScripts/Blog-App/assets/124567410/33da439e-7c6f-4b64-8a66-d4613ffb8be8)\n![16](https://github.com/PrinceInScripts/Blog-App/assets/124567410/6c72f9ea-cc57-49b4-bce2-5caba50a583f)\n![17](https://github.com/PrinceInScripts/Blog-App/assets/124567410/45b75924-4075-47fc-a1e6-cd0b9e3d7f4a)\n![18](https://github.com/PrinceInScripts/Blog-App/assets/124567410/33cfe765-8c1b-4ab4-81b2-887f7891cd90)\n![19](https://github.com/PrinceInScripts/Blog-App/assets/124567410/3b6cffa9-d84e-418a-bcc2-7fd1442d5b5e)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprinceinscripts%2Fblog-app","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fprinceinscripts%2Fblog-app","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprinceinscripts%2Fblog-app/lists"}