{"info":{"_postman_id":"419a2268-f360-4665-b899-e4c5ea21f06e","name":"DevHub Blog API","description":"<html><head></head><body><p>This is the official API collection for the DevHub Blog platform (authentication, posts, users, etc.).</p>\n</body></html>","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[],"owner":"41735525","collectionId":"419a2268-f360-4665-b899-e4c5ea21f06e","publishedId":"2sB2ca5ed5","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"},"publishDate":"2025-04-13T19:36:44.000Z"},"item":[{"name":"Auth Routes","item":[{"name":"Register User","id":"456f135c-54be-4631-bf64-44e2e5ec0522","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"username\":\"hari\",\r\n    \"email\":\"hari@gmail.com\",\r\n    \"password\":\"123456789\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://blog-app-backend-77mk.onrender.com/api/auth/register-user","description":"<p>Registers a new user using username, email, and password. Returns the created user data excluding the password. Passwords are securely hashed before saving.</p>\n","urlObject":{"protocol":"https","path":["api","auth","register-user"],"host":["blog-app-backend-77mk","onrender","com"],"query":[],"variable":[]}},"response":[{"id":"06b3e349-0dab-4659-8282-7a6cfa42c59f","name":"Register User","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"username\":\"hari\",\r\n    \"email\":\"hari@gmail.com\",\r\n    \"password\":\"123456789\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://blog-app-backend-77mk.onrender.com/api/auth/register-user"},"status":"Created","code":201,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Sun, 13 Apr 2025 18:02:07 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"307"},{"key":"Connection","value":"keep-alive"},{"key":"access-control-allow-credentials","value":"true"},{"key":"access-control-allow-origin","value":"https://devhub-blogapp.netlify.app"},{"key":"Content-Encoding","value":"br"},{"key":"etag","value":"W/\"1ac-kKqL8/cFR8d+ugGBn4a+bM1FoXE\""},{"key":"rndr-id","value":"4597d8df-7186-4df7"},{"key":"vary","value":"Origin"},{"key":"vary","value":"Accept-Encoding"},{"key":"x-powered-by","value":"Express"},{"key":"x-render-origin-server","value":"Render"},{"key":"cf-cache-status","value":"DYNAMIC"},{"key":"Server","value":"cloudflare"},{"key":"CF-RAY","value":"92fcdf5fae39c3f1-WAW"},{"key":"alt-svc","value":"h3=\":443\"; ma=86400"}],"cookie":[],"responseTime":null,"body":"{\n    \"message\": \"User registered successfully\",\n    \"result\": {\n        \"username\": \"hari\",\n        \"email\": \"hari@gmail.com\",\n        \"password\": \"$2b$10$ir6HB4nnyzvdrxJ5BoljK.pVXp6YSmNwRJH.tug.iTwF/f5MTXht6\",\n        \"profilePicture\": \"https://upload.wikimedia.org/wikipedia/commons/7/7c/Profile_avatar_placeholder_large.png?20150327203541\",\n        \"isAdmin\": false,\n        \"_id\": \"67fbfc1f65daab401a44bc42\",\n        \"createdAt\": \"2025-04-13T18:02:07.581Z\",\n        \"updatedAt\": \"2025-04-13T18:02:07.581Z\",\n        \"__v\": 0\n    }\n}"}],"_postman_id":"456f135c-54be-4631-bf64-44e2e5ec0522"},{"name":"Signin User","id":"e4941c9e-3976-4957-b599-e3c59654f0fa","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"email\":\"hari@gmail.com\",\r\n    \"password\":\"123456789\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://blog-app-backend-77mk.onrender.com/api/auth/signin-user","description":"<p>Authenticates a user using email and password. Returns user data (excluding password) and a JWT token for accessing protected routes.</p>\n","urlObject":{"protocol":"https","path":["api","auth","signin-user"],"host":["blog-app-backend-77mk","onrender","com"],"query":[],"variable":[]}},"response":[{"id":"dc444332-143d-43b8-9b41-e1d7c96398b5","name":"Signin User","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"email\":\"hari@gmail.com\",\r\n    \"password\":\"123456789\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://blog-app-backend-77mk.onrender.com/api/auth/signin-user"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Sun, 13 Apr 2025 18:02:21 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"422"},{"key":"Connection","value":"keep-alive"},{"key":"access-control-allow-credentials","value":"true"},{"key":"access-control-allow-origin","value":"https://devhub-blogapp.netlify.app"},{"key":"Content-Encoding","value":"br"},{"key":"etag","value":"W/\"22c-iTvuRipAJsVb++qoXB0NgThvwzE\""},{"key":"rndr-id","value":"85e9f8b5-d8c6-4efd"},{"key":"vary","value":"Origin"},{"key":"vary","value":"Accept-Encoding"},{"key":"x-powered-by","value":"Express"},{"key":"x-render-origin-server","value":"Render"},{"key":"cf-cache-status","value":"DYNAMIC"},{"key":"Server","value":"cloudflare"},{"key":"CF-RAY","value":"92fcdfba3feec3f1-WAW"},{"key":"alt-svc","value":"h3=\":443\"; ma=86400"}],"cookie":[],"responseTime":null,"body":"{\n    \"message\": \"User logged in successfully\",\n    \"result\": {\n        \"_id\": \"67fbfc1f65daab401a44bc42\",\n        \"username\": \"hari\",\n        \"email\": \"hari@gmail.com\",\n        \"profilePicture\": \"https://upload.wikimedia.org/wikipedia/commons/7/7c/Profile_avatar_placeholder_large.png?20150327203541\",\n        \"isAdmin\": false,\n        \"createdAt\": \"2025-04-13T18:02:07.581Z\",\n        \"updatedAt\": \"2025-04-13T18:02:07.581Z\",\n        \"__v\": 0\n    },\n    \"token\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjY3ZmJmYzFmNjVkYWFiNDAxYTQ0YmM0MiIsImlzQWRtaW4iOmZhbHNlLCJpYXQiOjE3NDQ1NjczNDEsImV4cCI6MTc0NDY1Mzc0MX0.D7hS-5PG-tx9o7laiWmO692ESg1CRM3X7Qp0eYQEAr4\"\n}"}],"_postman_id":"e4941c9e-3976-4957-b599-e3c59654f0fa"},{"name":"GoogleAuth Signin","id":"79c37ad4-809b-45c4-812d-e9935a4a7950","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"username\":\"harikrishnan\",\r\n    \"email\":\"harikrish61@gmail.com\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://blog-app-backend-77mk.onrender.com/api/auth/googleauth","description":"<p>Signs in or registers a user using Google OAuth credentials. Accepts name, email, and profile picture, and returns user info and JWT token.</p>\n","urlObject":{"protocol":"https","path":["api","auth","googleauth"],"host":["blog-app-backend-77mk","onrender","com"],"query":[],"variable":[]}},"response":[{"id":"6a20be89-251a-4a73-8249-7e700fce955d","name":"GoogleAuth Signin","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"username\":\"harikrishnan\",\r\n    \"email\":\"harikrish61@gmail.com\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://blog-app-backend-77mk.onrender.com/api/auth/googleauth"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Sun, 13 Apr 2025 18:25:27 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"440"},{"key":"Connection","value":"keep-alive"},{"key":"access-control-allow-credentials","value":"true"},{"key":"access-control-allow-origin","value":"https://devhub-blogapp.netlify.app"},{"key":"Content-Encoding","value":"br"},{"key":"etag","value":"W/\"239-p8hPW6Aer9uG9RfGIXTF3E4rNU0\""},{"key":"rndr-id","value":"bc51d439-a5de-4697"},{"key":"vary","value":"Origin"},{"key":"vary","value":"Accept-Encoding"},{"key":"x-powered-by","value":"Express"},{"key":"x-render-origin-server","value":"Render"},{"key":"cf-cache-status","value":"DYNAMIC"},{"key":"Server","value":"cloudflare"},{"key":"CF-RAY","value":"92fd01948976465d-WAW"},{"key":"alt-svc","value":"h3=\":443\"; ma=86400"}],"cookie":[],"responseTime":null,"body":"{\n    \"message\": \"User logged in successfully\",\n    \"result\": {\n        \"_id\": \"67fbd716858298c843c8bff2\",\n        \"username\": \"harikrishnan.n3215\",\n        \"email\": \"harikrish61@gmail.com\",\n        \"profilePicture\": \"https://lh3.googleusercontent.com/a/ACg8ocII5ZwYD8uQQn-fNENDNfxZNFKzhPH2tI7ObF1drbJv3e2rQsE=s96-c\",\n        \"isAdmin\": true,\n        \"createdAt\": \"2025-04-13T15:24:06.553Z\",\n        \"updatedAt\": \"2025-04-13T15:24:06.553Z\",\n        \"__v\": 0\n    },\n    \"token\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjY3ZmJkNzE2ODU4Mjk4Yzg0M2M4YmZmMiIsImlzQWRtaW4iOnRydWUsImlhdCI6MTc0NDU2ODcyNywiZXhwIjoxNzQ0NjU1MTI3fQ.Rf0lT1XUGVVUr388eBLMniwyVzSt20CoKCxmu3_iwzQ\"\n}"}],"_postman_id":"79c37ad4-809b-45c4-812d-e9935a4a7950"}],"id":"bd89ddc0-dadc-42e1-9b23-4fb8c2fc1233","description":"<p>Handles all authentication processes including user registration, email/password login, and Google OAuth login. Returns a JWT token and user data upon successful authentication.</p>\n","_postman_id":"bd89ddc0-dadc-42e1-9b23-4fb8c2fc1233"},{"name":"User Routes","item":[{"name":"Update user","id":"7302c519-6a4d-4322-95c9-0033dfc16d3d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\r\n    \"username\":\"harikrishnan.n\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://blog-app-backend-77mk.onrender.com/api/user/update/67fbd716858298c843c8bff2","description":"<p>Updates the authenticated user’s profile (username, email, password, profile picture). Validates fields like username (no spaces, lowercase, alphanumeric) and password (min 6 characters).</p>\n","urlObject":{"protocol":"https","path":["api","user","update","67fbd716858298c843c8bff2"],"host":["blog-app-backend-77mk","onrender","com"],"query":[],"variable":[]}},"response":[{"id":"d3f4026a-c38e-44f6-97e6-b1949a7dc1d0","name":"Update user","originalRequest":{"method":"PUT","header":[{"key":"token","value":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjY3ZmJkNzE2ODU4Mjk4Yzg0M2M4YmZmMiIsImlzQWRtaW4iOnRydWUsImlhdCI6MTc0NDU2ODcyNywiZXhwIjoxNzQ0NjU1MTI3fQ.Rf0lT1XUGVVUr388eBLMniwyVzSt20CoKCxmu3_iwzQ","type":"text","disabled":true}],"body":{"mode":"raw","raw":"{\r\n    \"username\":\"harikrishnan.n\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://blog-app-backend-77mk.onrender.com/api/user/update/67fbd716858298c843c8bff2"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Sun, 13 Apr 2025 19:08:29 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"272"},{"key":"Connection","value":"keep-alive"},{"key":"access-control-allow-credentials","value":"true"},{"key":"access-control-allow-origin","value":"https://devhub-blogapp.netlify.app"},{"key":"Content-Encoding","value":"br"},{"key":"etag","value":"W/\"169-wg0u+LVRH1eanKui/YSsUNgkie4\""},{"key":"rndr-id","value":"ad7a4bfa-a8ff-4c45"},{"key":"vary","value":"Origin"},{"key":"vary","value":"Accept-Encoding"},{"key":"x-powered-by","value":"Express"},{"key":"x-render-origin-server","value":"Render"},{"key":"cf-cache-status","value":"DYNAMIC"},{"key":"Server","value":"cloudflare"},{"key":"CF-RAY","value":"92fd409c58aef9da-WAW"},{"key":"alt-svc","value":"h3=\":443\"; ma=86400"}],"cookie":[],"responseTime":null,"body":"{\n    \"message\": \"User updated successfully\",\n    \"result\": {\n        \"_id\": \"67fbd716858298c843c8bff2\",\n        \"username\": \"harikrishnan.n\",\n        \"email\": \"harikrish61@gmail.com\",\n        \"profilePicture\": \"https://lh3.googleusercontent.com/a/ACg8ocII5ZwYD8uQQn-fNENDNfxZNFKzhPH2tI7ObF1drbJv3e2rQsE=s96-c\",\n        \"isAdmin\": true,\n        \"createdAt\": \"2025-04-13T15:24:06.553Z\",\n        \"updatedAt\": \"2025-04-13T19:08:29.535Z\",\n        \"__v\": 0\n    }\n}"}],"_postman_id":"7302c519-6a4d-4322-95c9-0033dfc16d3d"},{"name":"Delete user","id":"bd479a8b-ffc7-4b4f-b438-9a56bd92cbc4","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"DELETE","header":[],"body":{"mode":"raw","raw":"","options":{"raw":{"language":"json"}}},"url":"https://blog-app-backend-77mk.onrender.com/api/user/delete/67fbfc1f65daab401a44bc42","description":"<p>Deletes the authenticated user account. Only the owner of the account can delete.</p>\n","urlObject":{"protocol":"https","path":["api","user","delete","67fbfc1f65daab401a44bc42"],"host":["blog-app-backend-77mk","onrender","com"],"query":[],"variable":[]}},"response":[{"id":"b537c938-70df-4eea-854d-6fee68764b72","name":"Delete user","originalRequest":{"method":"DELETE","header":[{"key":"token","value":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjY3ZmJhZDBmMmJiMGM5ZWY5NTIzYWM3NSIsImlzQWRtaW4iOmZhbHNlLCJpYXQiOjE3NDQ1NDgwNjgsImV4cCI6MTc0NDYzNDQ2OH0.hIiwyKlp8iFtGhEyECchb1DKnQ2OgvzQrTgwlosAMeQ","type":"text","disabled":true}],"body":{"mode":"raw","raw":"","options":{"raw":{"language":"json"}}},"url":"https://blog-app-backend-77mk.onrender.com/api/user/delete/67fbfc1f65daab401a44bc42"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Sun, 13 Apr 2025 19:09:27 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"41"},{"key":"Connection","value":"keep-alive"},{"key":"access-control-allow-credentials","value":"true"},{"key":"access-control-allow-origin","value":"https://devhub-blogapp.netlify.app"},{"key":"Content-Encoding","value":"br"},{"key":"etag","value":"W/\"27-27o4zzUjhHNmthTJyia4gBCjpos\""},{"key":"rndr-id","value":"0ea8a89c-44d2-481a"},{"key":"vary","value":"Origin"},{"key":"vary","value":"Accept-Encoding"},{"key":"x-powered-by","value":"Express"},{"key":"x-render-origin-server","value":"Render"},{"key":"cf-cache-status","value":"DYNAMIC"},{"key":"Server","value":"cloudflare"},{"key":"CF-RAY","value":"92fd4208acf2f9da-WAW"},{"key":"alt-svc","value":"h3=\":443\"; ma=86400"}],"cookie":[],"responseTime":null,"body":"{\n    \"message\": \"User deleted successfully\"\n}"}],"_postman_id":"bd479a8b-ffc7-4b4f-b438-9a56bd92cbc4"}],"id":"b6ebb0d4-237b-45d5-8e76-d39dfd4113db","description":"<p>Provides functionality for authenticated users to update their profile information (username, email, password, profile picture) or delete their account.</p>\n","_postman_id":"b6ebb0d4-237b-45d5-8e76-d39dfd4113db"},{"name":"Post Routes","item":[{"name":"Create post","id":"05f196d7-466e-4393-aa91-fb7e62176fde","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n  \"title\": \"Beyond the Basics: Leveraging Bootstrap's Advanced Features in 2025\",\r\n  \"content\": \"Bootstrap remains a foundational front-end framework in 2025, prized for its ease of use and rapid development capabilities. Its pre-built components and responsive grid system allow developers to quickly construct visually appealing and adaptable websites for various screen sizes. This makes it a go-to solution for projects needing a solid and consistent foundation.\",\r\n  \"image\": \"https://localo.com/assets/img/definitions/what-is-bootstrap.webp\",\r\n  \"category\": \"Technology\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://blog-app-backend-77mk.onrender.com/api/post/createpost","description":"<p>Creates a new blog post. Only accessible by admin users. Requires title, content, category, and optional image.</p>\n","urlObject":{"protocol":"https","path":["api","post","createpost"],"host":["blog-app-backend-77mk","onrender","com"],"query":[],"variable":[]}},"response":[{"id":"e178a2fd-7132-4234-bf9d-6580dc322aee","name":"Create post","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n  \"title\": \"Beyond the Basics: Leveraging Bootstrap's Advanced Features in 2025\",\r\n  \"content\": \"Bootstrap remains a foundational front-end framework in 2025, prized for its ease of use and rapid development capabilities. Its pre-built components and responsive grid system allow developers to quickly construct visually appealing and adaptable websites for various screen sizes. This makes it a go-to solution for projects needing a solid and consistent foundation.\",\r\n  \"image\": \"https://localo.com/assets/img/definitions/what-is-bootstrap.webp\",\r\n  \"category\": \"Technology\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://blog-app-backend-77mk.onrender.com/api/post/createpost"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"X-Powered-By","value":"Express"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Access-Control-Allow-Credentials","value":"true"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"728"},{"key":"ETag","value":"W/\"2d8-MozBuk9qflOlGoCU6t+vvMqw70c\""},{"key":"Date","value":"Sun, 13 Apr 2025 12:58:05 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"message\": \"Post created successfully\",\n    \"result\": {\n        \"content\": \"Bootstrap remains a foundational front-end framework in 2025, prized for its ease of use and rapid development capabilities. Its pre-built components and responsive grid system allow developers to quickly construct visually appealing and adaptable websites for various screen sizes. This makes it a go-to solution for projects needing a solid and consistent foundation.\",\n        \"title\": \"Beyond the Basics: Leveraging Bootstrap's Advanced Features in 2025\",\n        \"image\": \"https://localo.com/assets/img/definitions/what-is-bootstrap.webp\",\n        \"category\": \"Technology\",\n        \"_id\": \"67fbb4ddb4cf887a359ece28\",\n        \"createdAt\": \"2025-04-13T12:58:05.007Z\",\n        \"updatedAt\": \"2025-04-13T12:58:05.007Z\",\n        \"__v\": 0\n    }\n}"}],"_postman_id":"05f196d7-466e-4393-aa91-fb7e62176fde"},{"name":"Get All Post","id":"9fc0f4d7-ad76-4405-85ae-89dffc690a04","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"GET","header":[],"url":"https://blog-app-backend-77mk.onrender.com/api/post/getallposts","description":"<p>Fetches all blog posts. Optional <code>search</code> query allows filtering by title, content, or category. Results are sorted by creation date (newest first).</p>\n","urlObject":{"protocol":"https","path":["api","post","getallposts"],"host":["blog-app-backend-77mk","onrender","com"],"query":[],"variable":[]}},"response":[{"id":"442fc09f-ce55-48ad-bbc9-3200544354a0","name":"Get All Post","originalRequest":{"method":"GET","header":[],"url":"https://blog-app-backend-77mk.onrender.com/api/post/getallposts"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Sun, 13 Apr 2025 18:42:59 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"access-control-allow-credentials","value":"true"},{"key":"access-control-allow-origin","value":"https://devhub-blogapp.netlify.app"},{"key":"Content-Encoding","value":"br"},{"key":"etag","value":"W/\"508f-0aFyBS54zizolNjmpB/Z8Gam0bQ\""},{"key":"rndr-id","value":"bc6eedd1-fc85-4f2d"},{"key":"vary","value":"Origin"},{"key":"vary","value":"Accept-Encoding"},{"key":"x-powered-by","value":"Express"},{"key":"x-render-origin-server","value":"Render"},{"key":"cf-cache-status","value":"DYNAMIC"},{"key":"Server","value":"cloudflare"},{"key":"CF-RAY","value":"92fd1b41cdb9c3ce-WAW"},{"key":"alt-svc","value":"h3=\":443\"; ma=86400"}],"cookie":[],"responseTime":null,"body":"{\n    \"message\": \"Posts fetched successfully\",\n    \"result\": [\n        {\n            \"_id\": \"67fc0595727a007cb1c9daa4\",\n            \"content\": \"Bootstrap remains a foundational front-end framework in 2025, prized for its ease of use and rapid development capabilities. Its pre-built components and responsive grid system allow developers to quickly construct visually appealing and adaptable websites for various screen sizes. This makes it a go-to solution for projects needing a solid and consistent foundation.\",\n            \"title\": \"Beyond the Basics: Leveraging Bootstrap's Advanced Features in 2025\",\n            \"image\": \"https://localo.com/assets/img/definitions/what-is-bootstrap.webp\",\n            \"category\": \"Technology\",\n            \"createdAt\": \"2025-04-13T18:42:29.013Z\",\n            \"updatedAt\": \"2025-04-13T18:42:29.013Z\",\n            \"__v\": 0\n        },\n        {\n            \"_id\": \"67fc058c727a007cb1c9daa2\",\n            \"content\": \"Bootstrap remains a foundational front-end framework in 2025, prized for its ease of use and rapid development capabilities. Its pre-built components and responsive grid system allow developers to quickly construct visually appealing and adaptable websites for various screen sizes. This makes it a go-to solution for projects needing a solid and consistent foundation.\",\n            \"title\": \"Beyond the Basics: Leveraging Bootstrap's Advanced Features in 2025\",\n            \"image\": \"https://localo.com/assets/img/definitions/what-is-bootstrap.webp\",\n            \"category\": \"Technology\",\n            \"createdAt\": \"2025-04-13T18:42:20.244Z\",\n            \"updatedAt\": \"2025-04-13T18:42:20.244Z\",\n            \"__v\": 0\n        },\n        {\n            \"_id\": \"67fbb480b4cf887a359ece25\",\n            \"content\": \"Bootstrap remains a foundational front-end framework in 2025, prized for its ease of use and rapid development capabilities. Its pre-built components and responsive grid system allow developers to quickly construct visually appealing and adaptable websites for various screen sizes. This makes it a go-to solution for projects needing a solid and consistent foundation.\",\n            \"title\": \"Beyond the Basics: Leveraging Bootstrap's Advanced Features in 2025.\",\n            \"image\": \"https://localo.com/assets/img/definitions/what-is-bootstrap.webp\",\n            \"category\": \"Technology\",\n            \"createdAt\": \"2025-04-13T12:56:32.832Z\",\n            \"updatedAt\": \"2025-04-13T12:56:32.832Z\",\n            \"__v\": 0\n        },\n        {\n            \"_id\": \"67fb64041fb0070f59cf9e34\",\n            \"content\": \"<p>Flowbite is an open-source library of UI components, built on top of the popular Tailwind CSS framework. It provides a collection of pre-designed and interactive components like navigation bars, buttons, cards, modals, and more, which can significantly accelerate your frontend development. By combining the utility-first approach of Tailwind CSS with the pre-built components of Flowbite, you can quickly assemble professional-looking and functional user interfaces without writing extensive custom CSS or JavaScript. Flowbite components are designed to be responsive and customizable, allowing you to adapt them to your specific project needs by leveraging Tailwind's utility classes. The library also includes JavaScript-powered interactive elements like dropdowns, carousels, and tooltips. For developers who appreciate the speed and flexibility of Tailwind CSS but want a head start with common UI patterns, Flowbite offers a valuable set of ready-to-use components, making it an excellent choice for rapid prototyping and efficient frontend development. #Flowbite #TailwindCSS #UIComponents #Frontend #WebDevelopment</p>\",\n            \"title\": \"UI Components Made Easy: Leveraging Flowbite with Tailwind CSS\",\n            \"image\": \"https://firebasestorage.googleapis.com/v0/b/devhub-5386c.firebasestorage.app/o/images%2F1744528373690-original-3faf74424407b341ee34db992111f2d5.webp?alt=media&token=a4638d0c-c9b8-4dc1-9076-47b32ac018f9\",\n            \"category\": \"Technology\",\n            \"createdAt\": \"2025-04-13T07:13:08.730Z\",\n            \"updatedAt\": \"2025-04-13T07:13:08.730Z\",\n            \"__v\": 0\n        },\n        {\n            \"_id\": \"67fb63d81fb0070f59cf9e31\",\n            \"content\": \"<p>Tailwind CSS is a utility-first CSS framework that allows you to rapidly style your web applications directly in your HTML. Instead of writing custom CSS rules, you apply pre-designed utility classes to your elements. The utility-first approach means you have classes for everything from margins and paddings to colors and fonts. This can significantly speed up the development process, especially in the initial stages of building a UI. Despite being utility-first, Tailwind CSS is highly customizable. You can configure the framework to match your project's specific design requirements by editing the \\\\`tailwind.config.js\\\\` file. This allows you to define your own color palettes, spacing scales, font families, and more. Tailwind CSS promotes consistency in your styling by providing a standardized set of utility classes. It also encourages a more component-based approach to UI development. For developers looking for a fast and flexible way to style modern web applications without the overhead of writing a lot of custom CSS, Tailwind CSS is a powerful and increasingly popular choice. #TailwindCSS #CSSFramework #Frontend #UtilityFirst #Styling</p>\",\n            \"title\": \"Rapid Styling: Building Modern UIs with Tailwind CSS\",\n            \"image\": \"https://firebasestorage.googleapis.com/v0/b/devhub-5386c.firebasestorage.app/o/images%2F1744528342120-images%20(1).png?alt=media&token=3ab040e0-7684-4cfd-a844-777e9b31bd82\",\n            \"category\": \"Technology\",\n            \"createdAt\": \"2025-04-13T07:12:24.400Z\",\n            \"updatedAt\": \"2025-04-13T07:12:24.400Z\",\n            \"__v\": 0\n        },\n        {\n            \"_id\": \"67fb63bd1fb0070f59cf9e2e\",\n            \"content\": \"<p>TypeScript is a superset of JavaScript that adds optional static typing to the language. Developed by Microsoft, it aims to make JavaScript more robust and easier to manage, especially for large-scale applications. Static typing allows you to define the types of variables, function parameters, and return values. This helps catch potential errors during development rather than at runtime, leading to more reliable and maintainable code. TypeScript provides excellent tooling and editor support, including features like autocompletion, type checking, and refactoring, which can significantly improve developer productivity. One of the key advantages of TypeScript is its gradual adoption. You can start using TypeScript in existing JavaScript projects, gradually adding types to your codebase. It compiles down to plain JavaScript, so it's compatible with all JavaScript environments. For teams working on large and complex frontend applications, TypeScript can bring significant benefits in terms of code quality, maintainability, and collaboration. While there's a slight learning curve, the long-term advantages often outweigh the initial investment. #TypeScript #JavaScript #WebDevelopment #Frontend #StaticTyping</p>\",\n            \"title\": \"Scaling JavaScript: The Benefits of TypeScript\",\n            \"image\": \"https://firebasestorage.googleapis.com/v0/b/devhub-5386c.firebasestorage.app/o/images%2F1744528307364-ts_logo.BstCNrTU_1Dbxpr.webp?alt=media&token=a0de1e15-baed-436b-a3a0-59770e6e46e4\",\n            \"category\": \"Technology\",\n            \"createdAt\": \"2025-04-13T07:11:57.216Z\",\n            \"updatedAt\": \"2025-04-13T07:11:57.216Z\",\n            \"__v\": 0\n        },\n        {\n            \"_id\": \"67fb639b1fb0070f59cf9e2a\",\n            \"content\": \"<p>JavaScript (JS) is a versatile and powerful scripting language that brings interactivity to web pages. While HTML provides the structure and CSS handles the styling, JavaScript enables dynamic behavior, making websites feel alive.</p><p><br></p><p>  With JavaScript, you can manipulate the DOM (Document Object Model) to change the content, structure, and style of a web page in response to user actions or other events. This allows for features like form validation, interactive maps, animations, and dynamic content updates.</p><p><br></p><p>  JavaScript has evolved significantly over the years, with modern ECMAScript standards introducing new features and syntax that make the language more powerful and easier to work with. Concepts like asynchronous programming (using Promises and async/await) are essential for handling tasks that might take time without blocking the main thread.</p><p><br></p><p>  Beyond the browser, Node.js allows you to run JavaScript on the server-side, making it a full-stack language. This is a key component of the MERN stack and many other modern web development architectures.</p><p><br></p><p>  A deep understanding of JavaScript fundamentals, including DOM manipulation, asynchronous programming, and modern language features, is crucial for any web developer looking to build interactive and engaging user experiences. #JavaScript #WebDevelopment #Frontend #Interactivity #Dynamic`</p>\",\n            \"title\": \"Adding Interactivity: The Dynamic World of JavaScript\",\n            \"image\": \"https://firebasestorage.googleapis.com/v0/b/devhub-5386c.firebasestorage.app/o/images%2F1744528280002-167072911-dc31eac8-6885-4a05-9c25-279ecce22a79.png?alt=media&token=84a4fbb9-8c29-48eb-9e8e-c52d598d8e34\",\n            \"category\": \"Technology\",\n            \"createdAt\": \"2025-04-13T07:11:23.780Z\",\n            \"updatedAt\": \"2025-04-13T07:11:23.780Z\",\n            \"__v\": 0\n        },\n        {\n            \"_id\": \"67fb62f31fb0070f59cf9e23\",\n            \"content\": \"<p>CSS (Cascading Style Sheets) is the language used to style the visual presentation of HTML documents. It allows you to control everything from colors and fonts to layout and animations, separating the design from the content.</p><p><br></p><p>  CSS works by applying rules to HTML elements. These rules consist of selectors (targeting specific HTML elements) and declarations (specifying the styles to apply). The \\\"cascading\\\" aspect refers to how styles are applied based on their origin, specificity, and order.</p><p><br></p><p>  Layout techniques like Flexbox and CSS Grid have revolutionized web design, making it easier to create complex and responsive layouts that adapt to different screen sizes. Understanding these layout models is essential for building modern web applications.</p><p><br></p><p>  CSS preprocessors like Sass and Less extend the capabilities of plain CSS by adding features like variables, nesting, and mixins, which can make styling more organized and efficient.</p><p><br></p><p>  From basic styling to intricate animations and responsive designs, CSS is the key to creating visually appealing and user-friendly websites. A strong grasp of CSS fundamentals and modern techniques is crucial for any frontend developer. #CSS #WebDevelopment #Frontend #Styling #Layout</p>\",\n            \"title\": \"Styling the Web: Mastering CSS for Beautiful Layouts\",\n            \"image\": \"https://firebasestorage.googleapis.com/v0/b/devhub-5386c.firebasestorage.app/o/images%2F1744528107203-CSS-_-Begrippenlijst.webp?alt=media&token=52aa7181-8064-42a2-a513-75c73aa5e7d7\",\n            \"category\": \"Technology\",\n            \"createdAt\": \"2025-04-13T07:08:35.015Z\",\n            \"updatedAt\": \"2025-04-13T07:08:35.015Z\",\n            \"__v\": 0\n        },\n        {\n            \"_id\": \"67fb62931fb0070f59cf9e20\",\n            \"content\": \"<p>HTML (HyperText Markup Language) is the standard markup language for creating web pages. It provides the structural foundation of every website you see online. Think of it as the skeleton that holds all the content together.</p><p><br></p><p>  HTML uses a system of tags and elements to define the different parts of a web page, such as headings, paragraphs, images, links, lists, and more. These tags tell the browser how to display the content. For example, the \\\\`&lt;h1&gt;\\\\` tag defines a main heading, while the \\\\`&lt;p&gt;\\\\` tag defines a paragraph.</p><p><br></p><p>  Semantic HTML is a crucial aspect of writing good HTML. It involves using tags that accurately describe the meaning of the content they enclose. For instance, using \\\\`&lt;article&gt;\\\\` for a self-contained piece of content or \\\\`&lt;nav&gt;\\\\` for navigation menus not only helps search engines understand your content better but also improves accessibility for users with assistive technologies.</p><p><br></p><p>  While HTML provides the structure, it's the combination of HTML with CSS and JavaScript that brings web pages to life with styling and interactivity. Understanding the fundamentals of HTML is the first and most important step in any web development journey. #HTML #WebDevelopment #Frontend #Markup</p>\",\n            \"title\": \"The Foundation: Understanding HTML for Web Development\",\n            \"image\": \"https://firebasestorage.googleapis.com/v0/b/devhub-5386c.firebasestorage.app/o/images%2F1744528016301-sta-je-html.jpg?alt=media&token=2e541f06-43dd-4fee-a1ca-ee6f06885ed5\",\n            \"category\": \"Technology\",\n            \"createdAt\": \"2025-04-13T07:06:59.472Z\",\n            \"updatedAt\": \"2025-04-13T07:06:59.472Z\",\n            \"__v\": 0\n        },\n        {\n            \"_id\": \"67fb61a01fb0070f59cf9e1d\",\n            \"content\": \"<p>Node.js is an open-source, cross-platform JavaScript runtime environment that executes JavaScript code outside of a web browser. It forms the 'N' in the MERN stack and provides the server-side environment for your Express.js application.</p><p><br></p><p>  One of the key strengths of Node.js is its event-driven, non-blocking I/O model. This architecture allows Node.js to handle a large number of concurrent connections efficiently without getting bogged down by waiting for I/O operations to complete. This makes it ideal for building real-time applications and scalable network services.</p><p><br></p><p>  Built on Google's V8 JavaScript engine, Node.js benefits from the speed and performance of this highly optimized runtime. Its ability to use JavaScript on both the frontend and the backend allows for code sharing and a more consistent development experience within the MERN stack.</p><p><br></p><p>  Node Package Manager (npm) is the world's largest software registry and comes bundled with Node.js. npm provides access to a vast ecosystem of open-source libraries and tools, making it easy to add functionality to your MERN backend.</p><p><br></p><p>  In a MERN application, Node.js provides the environment where your Express.js server runs. It handles incoming requests, executes your backend logic, interacts with the MongoDB database (through Mongoose), and sends responses back to the React frontend.</p><p><br></p><p>  Understanding Node.js is fundamental to building MERN applications. Its non-blocking architecture and rich ecosystem make it a powerful and versatile choice for server-side development. #NodeJS #JavaScript #Backend #Runtime #MERN`</p>\",\n            \"title\": \"Node.js: The JavaScript Runtime Powering Your MERN Backend\",\n            \"image\": \"https://firebasestorage.googleapis.com/v0/b/devhub-5386c.firebasestorage.app/o/images%2F1744527774202-nodejs.webp?alt=media&token=c304a0da-e151-42aa-89fb-c2c627c6857a\",\n            \"category\": \"Technology\",\n            \"createdAt\": \"2025-04-13T07:02:56.833Z\",\n            \"updatedAt\": \"2025-04-13T07:02:56.833Z\",\n            \"__v\": 0\n        },\n        {\n            \"_id\": \"67fb61771fb0070f59cf9e18\",\n            \"content\": \"<p>React is a declarative, efficient, and flexible JavaScript library for building user interfaces (UIs) or UI components. It's the 'R' in the MERN stack and is responsible for creating the interactive and engaging frontend of your application.</p><p><br></p><p>  React's component-based architecture allows you to break down complex UIs into smaller, reusable pieces. This promotes code organization, maintainability, and testability. Components manage their own state and can be composed together to build intricate user experiences.</p><p><br></p><p>  The virtual DOM is a key innovation in React. Instead of directly manipulating the browser's DOM (which can be slow), React creates an in-memory representation of the DOM. When changes occur, React first updates the virtual DOM and then efficiently calculates the minimal changes needed to update the actual browser DOM. This leads to significant performance improvements.</p><p><br></p><p>  React embraces a unidirectional data flow. Data typically flows down from parent components to child components. When a child component needs to update data, it communicates back to its parent using callbacks. This predictable data flow makes it easier to understand how data changes in your application.</p><p><br></p><p>  In a MERN application, React interacts with the Express.js backend through API calls (often using libraries like Axios or Fetch). It fetches data from the server and dynamically renders the UI based on that data. User interactions in the React frontend can trigger API requests to update the backend.</p><p><br></p><p>  Mastering React is crucial for building modern, interactive web applications with the MERN stack. Its component model, virtual DOM, and strong ecosystem make it a powerful tool for frontend development. #ReactJS #Frontend #UI #JavaScript #MERN`</p>\",\n            \"title\": \"The Power of React: Crafting Dynamic User Interfaces in MERN\",\n            \"image\": \"https://firebasestorage.googleapis.com/v0/b/devhub-5386c.firebasestorage.app/o/images%2F1744527733499-ReactJS.jpg?alt=media&token=72d66b66-a965-4dff-be79-43fdfb31efc4\",\n            \"category\": \"Technology\",\n            \"createdAt\": \"2025-04-13T07:02:15.434Z\",\n            \"updatedAt\": \"2025-04-13T07:02:15.434Z\",\n            \"__v\": 0\n        },\n        {\n            \"_id\": \"67fb61531fb0070f59cf9e15\",\n            \"content\": \"<p>Express.js is a minimalist and flexible Node.js web application framework that provides a robust set of features for web and mobile applications. It forms the 'E' in the MERN stack and acts as the backbone for building your application's server-side logic and APIs.</p><p><br></p><p>  Express.js simplifies the process of routing HTTP requests, handling middleware, and rendering dynamic HTML. Its lightweight nature allows developers to build fast and scalable applications without unnecessary bloat.</p><p><br></p><p>  Middleware is a core concept in Express.js. These are functions that have access to the request object (req), the response object (res), and the next middleware function in the application’s request-response cycle. Middleware can perform various tasks, from authentication and logging to data validation and error handling.</p><p><br></p><p>  Building RESTful APIs with Express.js is straightforward. Its clear and concise syntax makes it easy to define routes (endpoints) and handle different HTTP methods (GET, POST, PUT, DELETE). This allows your React frontend to communicate with your backend to fetch and manipulate data.</p><p><br></p><p>  In a MERN application, Express.js typically connects with MongoDB using Mongoose to perform database operations. It receives requests from the React frontend, interacts with the database, and sends back responses in formats like JSON.</p><p><br></p><p>  A solid understanding of Express.js is essential for any MERN developer. It empowers you to create well-structured, secure, and efficient backend APIs that drive your modern web applications. #ExpressJS #NodeJS #Backend #API #MERN`</p>\",\n            \"title\": \"Mastering Express.js: Building Robust APIs for Your MERN Stack\",\n            \"image\": \"https://firebasestorage.googleapis.com/v0/b/devhub-5386c.firebasestorage.app/o/images%2F1744527696622-our-express-js-webapp-development.webp?alt=media&token=5305b960-444a-4d03-9236-182a3f5fe7a2\",\n            \"category\": \"Technology\",\n            \"createdAt\": \"2025-04-13T07:01:39.773Z\",\n            \"updatedAt\": \"2025-04-13T07:01:39.773Z\",\n            \"__v\": 0\n        },\n        {\n            \"_id\": \"67fb60ba1fb0070f59cf9e11\",\n            \"content\": \"<p>MongoDB is a powerful, flexible, and scalable NoSQL database that forms the 'M' in the popular MERN stack. Unlike traditional relational databases, MongoDB stores data in flexible, JSON-like documents, making it incredibly adaptable to evolving application requirements.</p><p><br></p><p>  One of the key advantages of MongoDB is its schema-less nature. This doesn't mean there's no structure, but rather that each document within a collection can have its own unique structure. This flexibility is a game-changer for agile development, allowing you to iterate quickly without being bogged down by rigid schema migrations.</p><p><br></p><p>  Beyond flexibility, MongoDB shines in its scalability. It's designed to handle large volumes of data and high traffic loads through features like sharding (horizontal scaling) and replication (data redundancy and high availability). This makes it an excellent choice for modern web applications that expect growth.</p><p><br></p><p>  In the context of a MERN application, MongoDB seamlessly integrates with Node.js through drivers like Mongoose. Mongoose provides a higher-level, object-based way to interact with MongoDB, simplifying data modeling and validation.</p><p><br></p><p>  Whether you're building a real-time chat application, an e-commerce platform, or a social networking site, MongoDB's document-based model, scalability, and ease of use make it a compelling choice for managing your application's data. Understanding its core concepts and how it interacts with the rest of the MERN stack is crucial for any aspiring full-stack developer. #MongoDB #NoSQL #Database #MERN #Backend`</p>\",\n            \"title\": \"Diving Deep into MongoDB: The Foundation of Your MERN Application\",\n            \"image\": \"https://firebasestorage.googleapis.com/v0/b/devhub-5386c.firebasestorage.app/o/images%2F1744527543318-unnamed.png?alt=media&token=6c85510c-cfd1-494d-a963-fa709470da58\",\n            \"category\": \"Technology\",\n            \"createdAt\": \"2025-04-13T06:59:06.226Z\",\n            \"updatedAt\": \"2025-04-13T06:59:06.226Z\",\n            \"__v\": 0\n        }\n    ]\n}"}],"_postman_id":"9fc0f4d7-ad76-4405-85ae-89dffc690a04"},{"name":"Get All Post by Search","id":"28474beb-1adf-4046-916e-609125d113e0","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"GET","header":[],"url":"https://blog-app-backend-77mk.onrender.com/api/post/getallposts?search=javascript","description":"<p>Fetch blog posts based on a search keyword.<br />This endpoint searches the <strong>title</strong>, <strong>content</strong>, and <strong>category</strong> fields using case-insensitive partial matching.</p>\n","urlObject":{"protocol":"https","path":["api","post","getallposts"],"host":["blog-app-backend-77mk","onrender","com"],"query":[{"key":"search","value":"javascript"}],"variable":[]}},"response":[{"id":"5f20233f-8ad1-4f8e-99e0-054cfa3377e7","name":"GetAllPost by Search","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://blog-app-backend-77mk.onrender.com/api/post/getallposts?search=javascript","protocol":"https","host":["blog-app-backend-77mk","onrender","com"],"path":["api","post","getallposts"],"query":[{"key":"search","value":"javascript"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Sun, 13 Apr 2025 18:43:40 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"access-control-allow-credentials","value":"true"},{"key":"access-control-allow-origin","value":"https://devhub-blogapp.netlify.app"},{"key":"Content-Encoding","value":"br"},{"key":"etag","value":"W/\"2b8f-ZVx/bYBGglE7+wVUfAXslXHNxbc\""},{"key":"rndr-id","value":"bb168d4e-0fff-4b1b"},{"key":"vary","value":"Origin"},{"key":"vary","value":"Accept-Encoding"},{"key":"x-powered-by","value":"Express"},{"key":"x-render-origin-server","value":"Render"},{"key":"cf-cache-status","value":"DYNAMIC"},{"key":"Server","value":"cloudflare"},{"key":"CF-RAY","value":"92fd1c3f7beac3ce-WAW"},{"key":"alt-svc","value":"h3=\":443\"; ma=86400"}],"cookie":[],"responseTime":null,"body":"{\n    \"message\": \"Posts fetched successfully\",\n    \"result\": [\n        {\n            \"_id\": \"67fb64041fb0070f59cf9e34\",\n            \"content\": \"<p>Flowbite is an open-source library of UI components, built on top of the popular Tailwind CSS framework. It provides a collection of pre-designed and interactive components like navigation bars, buttons, cards, modals, and more, which can significantly accelerate your frontend development. By combining the utility-first approach of Tailwind CSS with the pre-built components of Flowbite, you can quickly assemble professional-looking and functional user interfaces without writing extensive custom CSS or JavaScript. Flowbite components are designed to be responsive and customizable, allowing you to adapt them to your specific project needs by leveraging Tailwind's utility classes. The library also includes JavaScript-powered interactive elements like dropdowns, carousels, and tooltips. For developers who appreciate the speed and flexibility of Tailwind CSS but want a head start with common UI patterns, Flowbite offers a valuable set of ready-to-use components, making it an excellent choice for rapid prototyping and efficient frontend development. #Flowbite #TailwindCSS #UIComponents #Frontend #WebDevelopment</p>\",\n            \"title\": \"UI Components Made Easy: Leveraging Flowbite with Tailwind CSS\",\n            \"image\": \"https://firebasestorage.googleapis.com/v0/b/devhub-5386c.firebasestorage.app/o/images%2F1744528373690-original-3faf74424407b341ee34db992111f2d5.webp?alt=media&token=a4638d0c-c9b8-4dc1-9076-47b32ac018f9\",\n            \"category\": \"Technology\",\n            \"createdAt\": \"2025-04-13T07:13:08.730Z\",\n            \"updatedAt\": \"2025-04-13T07:13:08.730Z\",\n            \"__v\": 0\n        },\n        {\n            \"_id\": \"67fb63bd1fb0070f59cf9e2e\",\n            \"content\": \"<p>TypeScript is a superset of JavaScript that adds optional static typing to the language. Developed by Microsoft, it aims to make JavaScript more robust and easier to manage, especially for large-scale applications. Static typing allows you to define the types of variables, function parameters, and return values. This helps catch potential errors during development rather than at runtime, leading to more reliable and maintainable code. TypeScript provides excellent tooling and editor support, including features like autocompletion, type checking, and refactoring, which can significantly improve developer productivity. One of the key advantages of TypeScript is its gradual adoption. You can start using TypeScript in existing JavaScript projects, gradually adding types to your codebase. It compiles down to plain JavaScript, so it's compatible with all JavaScript environments. For teams working on large and complex frontend applications, TypeScript can bring significant benefits in terms of code quality, maintainability, and collaboration. While there's a slight learning curve, the long-term advantages often outweigh the initial investment. #TypeScript #JavaScript #WebDevelopment #Frontend #StaticTyping</p>\",\n            \"title\": \"Scaling JavaScript: The Benefits of TypeScript\",\n            \"image\": \"https://firebasestorage.googleapis.com/v0/b/devhub-5386c.firebasestorage.app/o/images%2F1744528307364-ts_logo.BstCNrTU_1Dbxpr.webp?alt=media&token=a0de1e15-baed-436b-a3a0-59770e6e46e4\",\n            \"category\": \"Technology\",\n            \"createdAt\": \"2025-04-13T07:11:57.216Z\",\n            \"updatedAt\": \"2025-04-13T07:11:57.216Z\",\n            \"__v\": 0\n        },\n        {\n            \"_id\": \"67fb639b1fb0070f59cf9e2a\",\n            \"content\": \"<p>JavaScript (JS) is a versatile and powerful scripting language that brings interactivity to web pages. While HTML provides the structure and CSS handles the styling, JavaScript enables dynamic behavior, making websites feel alive.</p><p><br></p><p>  With JavaScript, you can manipulate the DOM (Document Object Model) to change the content, structure, and style of a web page in response to user actions or other events. This allows for features like form validation, interactive maps, animations, and dynamic content updates.</p><p><br></p><p>  JavaScript has evolved significantly over the years, with modern ECMAScript standards introducing new features and syntax that make the language more powerful and easier to work with. Concepts like asynchronous programming (using Promises and async/await) are essential for handling tasks that might take time without blocking the main thread.</p><p><br></p><p>  Beyond the browser, Node.js allows you to run JavaScript on the server-side, making it a full-stack language. This is a key component of the MERN stack and many other modern web development architectures.</p><p><br></p><p>  A deep understanding of JavaScript fundamentals, including DOM manipulation, asynchronous programming, and modern language features, is crucial for any web developer looking to build interactive and engaging user experiences. #JavaScript #WebDevelopment #Frontend #Interactivity #Dynamic`</p>\",\n            \"title\": \"Adding Interactivity: The Dynamic World of JavaScript\",\n            \"image\": \"https://firebasestorage.googleapis.com/v0/b/devhub-5386c.firebasestorage.app/o/images%2F1744528280002-167072911-dc31eac8-6885-4a05-9c25-279ecce22a79.png?alt=media&token=84a4fbb9-8c29-48eb-9e8e-c52d598d8e34\",\n            \"category\": \"Technology\",\n            \"createdAt\": \"2025-04-13T07:11:23.780Z\",\n            \"updatedAt\": \"2025-04-13T07:11:23.780Z\",\n            \"__v\": 0\n        },\n        {\n            \"_id\": \"67fb62931fb0070f59cf9e20\",\n            \"content\": \"<p>HTML (HyperText Markup Language) is the standard markup language for creating web pages. It provides the structural foundation of every website you see online. Think of it as the skeleton that holds all the content together.</p><p><br></p><p>  HTML uses a system of tags and elements to define the different parts of a web page, such as headings, paragraphs, images, links, lists, and more. These tags tell the browser how to display the content. For example, the \\\\`&lt;h1&gt;\\\\` tag defines a main heading, while the \\\\`&lt;p&gt;\\\\` tag defines a paragraph.</p><p><br></p><p>  Semantic HTML is a crucial aspect of writing good HTML. It involves using tags that accurately describe the meaning of the content they enclose. For instance, using \\\\`&lt;article&gt;\\\\` for a self-contained piece of content or \\\\`&lt;nav&gt;\\\\` for navigation menus not only helps search engines understand your content better but also improves accessibility for users with assistive technologies.</p><p><br></p><p>  While HTML provides the structure, it's the combination of HTML with CSS and JavaScript that brings web pages to life with styling and interactivity. Understanding the fundamentals of HTML is the first and most important step in any web development journey. #HTML #WebDevelopment #Frontend #Markup</p>\",\n            \"title\": \"The Foundation: Understanding HTML for Web Development\",\n            \"image\": \"https://firebasestorage.googleapis.com/v0/b/devhub-5386c.firebasestorage.app/o/images%2F1744528016301-sta-je-html.jpg?alt=media&token=2e541f06-43dd-4fee-a1ca-ee6f06885ed5\",\n            \"category\": \"Technology\",\n            \"createdAt\": \"2025-04-13T07:06:59.472Z\",\n            \"updatedAt\": \"2025-04-13T07:06:59.472Z\",\n            \"__v\": 0\n        },\n        {\n            \"_id\": \"67fb61a01fb0070f59cf9e1d\",\n            \"content\": \"<p>Node.js is an open-source, cross-platform JavaScript runtime environment that executes JavaScript code outside of a web browser. It forms the 'N' in the MERN stack and provides the server-side environment for your Express.js application.</p><p><br></p><p>  One of the key strengths of Node.js is its event-driven, non-blocking I/O model. This architecture allows Node.js to handle a large number of concurrent connections efficiently without getting bogged down by waiting for I/O operations to complete. This makes it ideal for building real-time applications and scalable network services.</p><p><br></p><p>  Built on Google's V8 JavaScript engine, Node.js benefits from the speed and performance of this highly optimized runtime. Its ability to use JavaScript on both the frontend and the backend allows for code sharing and a more consistent development experience within the MERN stack.</p><p><br></p><p>  Node Package Manager (npm) is the world's largest software registry and comes bundled with Node.js. npm provides access to a vast ecosystem of open-source libraries and tools, making it easy to add functionality to your MERN backend.</p><p><br></p><p>  In a MERN application, Node.js provides the environment where your Express.js server runs. It handles incoming requests, executes your backend logic, interacts with the MongoDB database (through Mongoose), and sends responses back to the React frontend.</p><p><br></p><p>  Understanding Node.js is fundamental to building MERN applications. Its non-blocking architecture and rich ecosystem make it a powerful and versatile choice for server-side development. #NodeJS #JavaScript #Backend #Runtime #MERN`</p>\",\n            \"title\": \"Node.js: The JavaScript Runtime Powering Your MERN Backend\",\n            \"image\": \"https://firebasestorage.googleapis.com/v0/b/devhub-5386c.firebasestorage.app/o/images%2F1744527774202-nodejs.webp?alt=media&token=c304a0da-e151-42aa-89fb-c2c627c6857a\",\n            \"category\": \"Technology\",\n            \"createdAt\": \"2025-04-13T07:02:56.833Z\",\n            \"updatedAt\": \"2025-04-13T07:02:56.833Z\",\n            \"__v\": 0\n        },\n        {\n            \"_id\": \"67fb61771fb0070f59cf9e18\",\n            \"content\": \"<p>React is a declarative, efficient, and flexible JavaScript library for building user interfaces (UIs) or UI components. It's the 'R' in the MERN stack and is responsible for creating the interactive and engaging frontend of your application.</p><p><br></p><p>  React's component-based architecture allows you to break down complex UIs into smaller, reusable pieces. This promotes code organization, maintainability, and testability. Components manage their own state and can be composed together to build intricate user experiences.</p><p><br></p><p>  The virtual DOM is a key innovation in React. Instead of directly manipulating the browser's DOM (which can be slow), React creates an in-memory representation of the DOM. When changes occur, React first updates the virtual DOM and then efficiently calculates the minimal changes needed to update the actual browser DOM. This leads to significant performance improvements.</p><p><br></p><p>  React embraces a unidirectional data flow. Data typically flows down from parent components to child components. When a child component needs to update data, it communicates back to its parent using callbacks. This predictable data flow makes it easier to understand how data changes in your application.</p><p><br></p><p>  In a MERN application, React interacts with the Express.js backend through API calls (often using libraries like Axios or Fetch). It fetches data from the server and dynamically renders the UI based on that data. User interactions in the React frontend can trigger API requests to update the backend.</p><p><br></p><p>  Mastering React is crucial for building modern, interactive web applications with the MERN stack. Its component model, virtual DOM, and strong ecosystem make it a powerful tool for frontend development. #ReactJS #Frontend #UI #JavaScript #MERN`</p>\",\n            \"title\": \"The Power of React: Crafting Dynamic User Interfaces in MERN\",\n            \"image\": \"https://firebasestorage.googleapis.com/v0/b/devhub-5386c.firebasestorage.app/o/images%2F1744527733499-ReactJS.jpg?alt=media&token=72d66b66-a965-4dff-be79-43fdfb31efc4\",\n            \"category\": \"Technology\",\n            \"createdAt\": \"2025-04-13T07:02:15.434Z\",\n            \"updatedAt\": \"2025-04-13T07:02:15.434Z\",\n            \"__v\": 0\n        }\n    ]\n}"}],"_postman_id":"28474beb-1adf-4046-916e-609125d113e0"},{"name":"Get Post by ID","id":"d78fe37f-c76c-48ab-a0bf-1436005b7c4d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"GET","header":[],"url":"https://blog-app-backend-77mk.onrender.com/api/post/getpost/67fb61771fb0070f59cf9e18","description":"<p>Fetches a single blog post by its unique ID.</p>\n","urlObject":{"protocol":"https","path":["api","post","getpost","67fb61771fb0070f59cf9e18"],"host":["blog-app-backend-77mk","onrender","com"],"query":[],"variable":[]}},"response":[{"id":"416a3518-a8a2-4088-8efe-a51782a4aa61","name":"Get Post by ID","originalRequest":{"method":"GET","header":[],"url":"https://blog-app-backend-77mk.onrender.com/api/post/getpost/67fb61771fb0070f59cf9e18"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Sun, 13 Apr 2025 18:43:50 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"1152"},{"key":"Connection","value":"keep-alive"},{"key":"access-control-allow-credentials","value":"true"},{"key":"access-control-allow-origin","value":"https://devhub-blogapp.netlify.app"},{"key":"Content-Encoding","value":"br"},{"key":"etag","value":"W/\"8f5-pfp8wnMrE9oT2VyRNTeS2aOwwjg\""},{"key":"rndr-id","value":"ed5f3e8a-e708-4d29"},{"key":"vary","value":"Origin"},{"key":"vary","value":"Accept-Encoding"},{"key":"x-powered-by","value":"Express"},{"key":"x-render-origin-server","value":"Render"},{"key":"cf-cache-status","value":"DYNAMIC"},{"key":"Server","value":"cloudflare"},{"key":"CF-RAY","value":"92fd1c82bed6c3ce-WAW"},{"key":"alt-svc","value":"h3=\":443\"; ma=86400"}],"cookie":[],"responseTime":null,"body":"{\n    \"message\": \"Post fetched successfully\",\n    \"result\": {\n        \"_id\": \"67fb61771fb0070f59cf9e18\",\n        \"content\": \"<p>React is a declarative, efficient, and flexible JavaScript library for building user interfaces (UIs) or UI components. It's the 'R' in the MERN stack and is responsible for creating the interactive and engaging frontend of your application.</p><p><br></p><p>  React's component-based architecture allows you to break down complex UIs into smaller, reusable pieces. This promotes code organization, maintainability, and testability. Components manage their own state and can be composed together to build intricate user experiences.</p><p><br></p><p>  The virtual DOM is a key innovation in React. Instead of directly manipulating the browser's DOM (which can be slow), React creates an in-memory representation of the DOM. When changes occur, React first updates the virtual DOM and then efficiently calculates the minimal changes needed to update the actual browser DOM. This leads to significant performance improvements.</p><p><br></p><p>  React embraces a unidirectional data flow. Data typically flows down from parent components to child components. When a child component needs to update data, it communicates back to its parent using callbacks. This predictable data flow makes it easier to understand how data changes in your application.</p><p><br></p><p>  In a MERN application, React interacts with the Express.js backend through API calls (often using libraries like Axios or Fetch). It fetches data from the server and dynamically renders the UI based on that data. User interactions in the React frontend can trigger API requests to update the backend.</p><p><br></p><p>  Mastering React is crucial for building modern, interactive web applications with the MERN stack. Its component model, virtual DOM, and strong ecosystem make it a powerful tool for frontend development. #ReactJS #Frontend #UI #JavaScript #MERN`</p>\",\n        \"title\": \"The Power of React: Crafting Dynamic User Interfaces in MERN\",\n        \"image\": \"https://firebasestorage.googleapis.com/v0/b/devhub-5386c.firebasestorage.app/o/images%2F1744527733499-ReactJS.jpg?alt=media&token=72d66b66-a965-4dff-be79-43fdfb31efc4\",\n        \"category\": \"Technology\",\n        \"createdAt\": \"2025-04-13T07:02:15.434Z\",\n        \"updatedAt\": \"2025-04-13T07:02:15.434Z\",\n        \"__v\": 0\n    }\n}"}],"_postman_id":"d78fe37f-c76c-48ab-a0bf-1436005b7c4d"}],"id":"b263fbb9-d085-4b51-a77e-f9f55b1665db","description":"<p>Allows admins to create blog posts and authenticated users to view all posts, search posts by keyword, or fetch a specific post by its ID.</p>\n","_postman_id":"b263fbb9-d085-4b51-a77e-f9f55b1665db"}]}