[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"navigation":3,"url-settings":86,"blog-\u002Fblog\u002F10-nodejs-boilerplate-code-snippets-every-developer-needs":671,"blog-author-\u002Fblog\u002F10-nodejs-boilerplate-code-snippets-every-developer-needs":1014,"i-material-symbols:arrow-back-rounded":1026},{"id":4,"extension":5,"footer":6,"header":73,"meta":83,"stem":84,"__hash__":85},"navigation\u002Fdata\u002Fshared\u002Fnavigation.yml","yml",{"brand":7,"columns":13,"legal":63},{"name":8,"tagline":9,"downloadCta":10},"Pieces","The memory layer for modern work.",{"label":11,"href":12},"All downloads","\u002Fdownloads",[14,26,39,51],{"title":15,"links":16},"Product",[17,20,23],{"label":18,"href":19},"Pieces Desktop","\u002F",{"label":21,"href":22},"Pieces Enterprise","\u002Fenterprise",{"label":24,"href":25},"Pieces MCP","\u002Fmcp",{"title":27,"links":28},"Resources",[29,33,36],{"label":30,"href":31,"external":32},"Documentation","url:docs.home",true,{"label":34,"href":35},"Blog","\u002Fblog",{"label":37,"href":38,"external":32},"GitHub","url:github.org",{"title":40,"links":41},"Community",[42,45,48],{"label":43,"href":44,"external":32},"Discord","url:social.discord",{"label":46,"href":47,"external":32},"X \u002F Twitter","url:social.x",{"label":49,"href":50,"external":32},"LinkedIn","url:social.linkedin",{"title":52,"links":53},"Company",[54,57,60],{"label":55,"href":56},"About","\u002Fabout",{"label":58,"href":59},"Updates","\u002Fupdates",{"label":61,"href":62},"Contact","\u002Fcontact",[64,67,70],{"label":65,"href":66},"Privacy Policy","\u002Flegal\u002Fprivacy",{"label":68,"href":69},"Refund Policy","\u002Flegal\u002Frefund",{"label":71,"href":72},"Terms of Service","\u002Flegal\u002Fterms",{"links":74,"signIn":75,"contact":78,"cta":80},[],{"label":76,"href":77},"Manage account","url:portal.home",{"label":79,"href":62},"Get in touch",{"label":81,"href":82},"Download","url:routes.downloads",{},"data\u002Fshared\u002Fnavigation","XlSALC7vYCXHcmcXnjJViwIZKsqnQWF4bn4o9RrcSBE",{"id":87,"extension":5,"links":88,"meta":668,"stem":669,"__hash__":670},"urlSettings\u002Fdata\u002Fshared\u002Furls.yml",[89,93,97,101,105,109,113,117,121,125,129,133,137,141,145,149,153,157,161,165,169,173,177,181,185,189,192,196,200,204,208,212,216,220,224,228,232,236,240,244,248,252,256,260,264,268,272,276,280,284,288,292,296,300,303,307,311,314,318,322,326,330,334,338,342,346,350,354,358,362,366,370,374,378,382,386,390,394,398,402,406,410,414,418,422,426,430,434,438,442,446,450,454,458,461,465,469,473,477,481,485,488,491,494,497,501,505,508,512,516,520,524,528,532,536,540,544,548,552,556,559,563,567,571,575,579,582,585,588,592,595,599,603,607,611,614,618,622,625,628,631,635,639,643,646,649,652,656,660,664],{"key":90,"label":91,"href":92},"downloads.desktop","Desktop download page","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fdesktop\u002Fdownload",{"key":94,"label":95,"href":96},"downloads.macOS.dmgArm64","macOS DMG Apple Silicon","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fpieces_for_x\u002Fdmg-arm64\u002Fdownload",{"key":98,"label":99,"href":100},"downloads.macOS.dmgIntel","macOS DMG Intel","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fpieces_for_x\u002Fdmg\u002Fdownload",{"key":102,"label":103,"href":104},"downloads.macOS.pkg","macOS PKG","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fmacos_packaging\u002Fpkg\u002Fdownload",{"key":106,"label":107,"href":108},"downloads.macOS.universal","Desktop macOS Universal","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fpieces_for_x\u002Fmacos-universal\u002Fdownload",{"key":110,"label":111,"href":112},"downloads.macOS.pkgArm64","Desktop macOS PKG Apple Silicon","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fmacos_packaging\u002Fpkg-pfd-arm64\u002Fdownload",{"key":114,"label":115,"href":116},"downloads.macOS.pkgIntel","Desktop macOS PKG Intel","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fmacos_packaging\u002Fpkg-pfd\u002Fdownload",{"key":118,"label":119,"href":120},"downloads.windows.appinstaller","Windows App Installer","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fappinstaller\u002Fpieces_for_x.appinstaller",{"key":122,"label":123,"href":124},"downloads.windows.exe","Windows EXE","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fpieces_for_x\u002Fwindows-exe\u002Fdownload",{"key":126,"label":127,"href":128},"downloads.windows.msix","Windows MSIX","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fpieces_for_x\u002Fwindows-msix\u002Fdownload",{"key":130,"label":131,"href":132},"downloads.windows.suiteManager","Windows Suite Manager","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fpieces_suite_windows\u002Fappinstaller\u002Fdownload",{"key":134,"label":135,"href":136},"downloads.linux.flatpakRepo","Linux Flatpak repository","https:\u002F\u002Fbuilds.pieces.app\u002Fpieces-flatpak-repo\u002Fpieces-flatpak.flatpakrepo",{"key":138,"label":139,"href":140},"downloads.linux.snapDesktop","Linux Snap Desktop","https:\u002F\u002Fsnapcraft.io\u002Fpieces-for-developers",{"key":142,"label":143,"href":144},"downloads.linux.snapPiecesOS","Linux Snap PiecesOS","https:\u002F\u002Fsnapcraft.io\u002Fpieces-os",{"key":146,"label":147,"href":148},"downloads.linux.snap","Desktop Linux Snap package","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fpieces_for_x\u002Fsnap\u002Fdownload",{"key":150,"label":151,"href":152},"downloads.piecesOS.macOS.dmgArm64","PiecesOS macOS DMG Apple Silicon","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fos_server\u002Fdmg-arm64\u002Fdownload",{"key":154,"label":155,"href":156},"downloads.piecesOS.macOS.dmgIntel","PiecesOS macOS DMG Intel","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fos_server\u002Fdmg\u002Fdownload",{"key":158,"label":159,"href":160},"downloads.piecesOS.macOS.universal","PiecesOS macOS Universal","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fos_server\u002Fmacos-universal\u002Fdownload",{"key":162,"label":163,"href":164},"downloads.piecesOS.macOS.pkgArm64","PiecesOS macOS PKG Apple Silicon","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fmacos_packaging\u002Fpkg-pos-launch-only-arm64\u002Fdownload",{"key":166,"label":167,"href":168},"downloads.piecesOS.macOS.pkgIntel","PiecesOS macOS PKG Intel","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fmacos_packaging\u002Fpkg-pos-launch-only\u002Fdownload",{"key":170,"label":171,"href":172},"downloads.piecesOS.windows.appinstaller","PiecesOS Windows App Installer","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fappinstaller\u002Fos_server.appinstaller",{"key":174,"label":175,"href":176},"downloads.piecesOS.windows.exe","PiecesOS Windows EXE","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fos_server\u002Fwindows-exe\u002Fdownload",{"key":178,"label":179,"href":180},"downloads.piecesOS.windows.msix","PiecesOS Windows MSIX","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fos_server\u002Fwindows-msix\u002Fdownload",{"key":182,"label":183,"href":184},"downloads.piecesOS.linux.snap","PiecesOS Linux Snap package","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fos_server\u002Fsnap\u002Fdownload",{"key":186,"label":187,"href":188},"downloads.combined.macOS.appleSilicon","Combined macOS installer Apple Silicon","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fmacos_packaging\u002Fpkg-arm64\u002Fdownload",{"key":190,"label":191,"href":104},"downloads.combined.macOS.intel","Combined macOS installer Intel",{"key":193,"label":194,"href":195},"downloads.guides.macOS","macOS installation guide","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmeet-pieces\u002Fmacos-installation-guide",{"key":197,"label":198,"href":199},"downloads.guides.windows","Windows installation guide","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmeet-pieces\u002Fwindows-installation-guide",{"key":201,"label":202,"href":203},"downloads.guides.linux","Linux installation guide","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmeet-pieces\u002Flinux-installation-guide",{"key":205,"label":206,"href":207},"downloads.guides.linuxFlatpak","Linux Flatpak installation guide","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmeet-pieces\u002Flinux-installation-guide\u002Fflatpak",{"key":209,"label":210,"href":211},"downloads.guides.linuxSnap","Linux Snap installation guide","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmeet-pieces\u002Flinux-installation-guide\u002Fsnap",{"key":213,"label":214,"href":215},"downloads.guides.piecesOS","PiecesOS manual installation","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fcore-dependencies\u002Fpieces-os\u002Fmanual-installation",{"key":217,"label":218,"href":219},"extensions.chrome","Chrome extension","https:\u002F\u002Fchrome.google.com\u002Fwebstore\u002Fdetail\u002Fpieces-save-code-snippets\u002Figbgibhbfonhmjlechmeefimncpekepm",{"key":221,"label":222,"href":223},"extensions.firefox","Firefox add-on","https:\u002F\u002Faddons.mozilla.org\u002Fen-US\u002Ffirefox\u002Faddon\u002Fpieces-save-code-from-the-web\u002F",{"key":225,"label":226,"href":227},"extensions.edge","Edge add-on","https:\u002F\u002Fmicrosoftedge.microsoft.com\u002Faddons\u002Fdetail\u002Fpieces-save-code-snippet\u002Fhglfimcdgonaeeobjckfdabcldfidmim",{"key":229,"label":230,"href":231},"extensions.vscode","VS Code extension","https:\u002F\u002Fmarketplace.visualstudio.com\u002Fitems?itemName=MeshIntelligentTechnologiesInc.pieces-vscode",{"key":233,"label":234,"href":235},"extensions.visualStudio","Visual Studio extension","https:\u002F\u002Fmarketplace.visualstudio.com\u002Fitems?itemName=MeshIntelligentTechnologiesInc.PiecesVisualStudio",{"key":237,"label":238,"href":239},"extensions.jetbrains","JetBrains plugin","https:\u002F\u002Fplugins.jetbrains.com\u002Fplugin\u002F17328-pieces--save-search-share--reuse-code-snippets",{"key":241,"label":242,"href":243},"extensions.obsidian","Obsidian plugin","https:\u002F\u002Fobsidian.md\u002Fplugins?id=pieces-for-developers",{"key":245,"label":246,"href":247},"extensions.sublime","Sublime package","https:\u002F\u002Fpackagecontrol.io\u002Fpackages\u002FPieces",{"key":249,"label":250,"href":251},"extensions.neovim","Neovim plugin","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fplugin_neo_vim",{"key":253,"label":254,"href":255},"extensions.jupyterlab","JupyterLab plugin","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fjupyterlab-pieces",{"key":257,"label":258,"href":259},"extensions.cli","Pieces CLI","https:\u002F\u002Fpypi.org\u002Fproject\u002Fpieces-cli\u002F",{"key":261,"label":262,"href":263},"docs.home","Documentation home","https:\u002F\u002Fdocs.pieces.app",{"key":265,"label":266,"href":267},"docs.getStarted","Get started docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmeet-pieces",{"key":269,"label":270,"href":271},"docs.api","API docs","https:\u002F\u002Fdocs.pieces.app\u002Fapi",{"key":273,"label":274,"href":275},"docs.desktop.overview","Desktop overview","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fdesktop",{"key":277,"label":278,"href":279},"docs.desktop.onboarding","Desktop onboarding","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fdesktop\u002Fonboarding",{"key":281,"label":282,"href":283},"docs.desktop.timeline","Desktop timeline docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fdesktop\u002Ftimeline",{"key":285,"label":286,"href":287},"docs.desktop.summaries","Desktop summaries docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fdesktop\u002Fsingle-click-summaries",{"key":289,"label":290,"href":291},"docs.desktop.search","Desktop conversational search docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fdesktop\u002Fconversational-search",{"key":293,"label":294,"href":295},"docs.desktop.drive","Desktop drive docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fdesktop\u002Fdrive",{"key":297,"label":298,"href":299},"docs.desktop.account","Desktop account settings docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fdesktop\u002Fconfiguration\u002Faccount",{"key":301,"label":302,"href":92},"docs.desktop.download","Desktop download docs",{"key":304,"label":305,"href":306},"docs.piecesOS.overview","PiecesOS overview docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fcore-dependencies",{"key":308,"label":309,"href":310},"docs.piecesOS.details","PiecesOS details docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fcore-dependencies\u002Fpieces-os",{"key":312,"label":313,"href":215},"docs.piecesOS.install","PiecesOS install docs",{"key":315,"label":316,"href":317},"docs.piecesOS.quickMenu","PiecesOS quick menu docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fcore-dependencies\u002Fpieces-os\u002Fquick-menu",{"key":319,"label":320,"href":321},"docs.piecesOS.storage","On-device storage docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fcore-dependencies\u002Fon-device-storage",{"key":323,"label":324,"href":325},"docs.piecesOS.troubleshooting","PiecesOS troubleshooting docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fcore-dependencies\u002Fpieces-os\u002Ftroubleshooting",{"key":327,"label":328,"href":329},"docs.mcp.overview","MCP overview docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp",{"key":331,"label":332,"href":333},"docs.mcp.cursor","MCP Cursor docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fcursor",{"key":335,"label":336,"href":337},"docs.mcp.vscode","MCP VS Code docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fvs-code",{"key":339,"label":340,"href":341},"docs.mcp.claudeDesktop","MCP Claude Desktop docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fclaude-desktop",{"key":343,"label":344,"href":345},"docs.mcp.claudeCode","MCP Claude Code docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fclaude-code",{"key":347,"label":348,"href":349},"docs.mcp.claudeCowork","MCP Claude Cowork docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fclaude-cowork",{"key":351,"label":352,"href":353},"docs.mcp.githubCopilot","MCP GitHub Copilot docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fgithub-copilot",{"key":355,"label":356,"href":357},"docs.mcp.goose","MCP Goose docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fgoose",{"key":359,"label":360,"href":361},"docs.mcp.windsurf","MCP Windsurf docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fwindsurf",{"key":363,"label":364,"href":365},"docs.mcp.zed","MCP Zed docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fzed",{"key":367,"label":368,"href":369},"docs.mcp.jetbrains","MCP JetBrains docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fjetbrains-ides",{"key":371,"label":372,"href":373},"docs.mcp.continueDev","MCP Continue docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fcontinue-dev",{"key":375,"label":376,"href":377},"docs.mcp.cline","MCP Cline docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fcline",{"key":379,"label":380,"href":381},"docs.mcp.raycast","MCP Raycast docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fraycast",{"key":383,"label":384,"href":385},"docs.mcp.rovoDevCli","MCP Rovo Dev CLI docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Frovo-dev-cli",{"key":387,"label":388,"href":389},"docs.mcp.openaiCodexCli","MCP OpenAI Codex CLI docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fopenai-codex-cli",{"key":391,"label":392,"href":393},"docs.mcp.googleGeminiCli","MCP Google Gemini CLI docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fgoogle-gemini-cli",{"key":395,"label":396,"href":397},"docs.mcp.amazonQ","MCP Amazon Q docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Famazon-q-developer",{"key":399,"label":400,"href":401},"docs.mcp.chatgptDev","MCP ChatGPT Developer Mode docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fchatgpt-developer-mode",{"key":403,"label":404,"href":405},"docs.mcp.openclaw","MCP OpenClaw docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fopenclaw",{"key":407,"label":408,"href":409},"docs.mcp.mcpRemote","MCP Remote docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fmcp-remote",{"key":411,"label":412,"href":413},"docs.mcp.ngrok","MCP ngrok docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fngrok-setup",{"key":415,"label":416,"href":417},"docs.troubleshooting.macOS","macOS troubleshooting docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmeet-pieces\u002Ftroubleshooting\u002Fmacos",{"key":419,"label":420,"href":421},"docs.troubleshooting.windows","Windows troubleshooting docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmeet-pieces\u002Ftroubleshooting\u002Fwindows",{"key":423,"label":424,"href":425},"docs.troubleshooting.linux","Linux troubleshooting docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmeet-pieces\u002Ftroubleshooting\u002Flinux",{"key":427,"label":428,"href":429},"docs.privacy","Privacy and security docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fprivacy-security-your-data",{"key":431,"label":432,"href":433},"docs.support","Support docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fsupport",{"key":435,"label":436,"href":437},"portal.home","Pieces portal","https:\u002F\u002Fportal.pieces.app",{"key":439,"label":440,"href":441},"site.home","Website home","https:\u002F\u002Fpieces.app",{"key":443,"label":444,"href":445},"site.about","About page","https:\u002F\u002Fpieces.app\u002Fabout",{"key":447,"label":448,"href":449},"site.features","Features page","https:\u002F\u002Fpieces.app\u002Ffeatures",{"key":451,"label":452,"href":453},"site.plugins","Plugins page","https:\u002F\u002Fpieces.app\u002Fplugins",{"key":455,"label":456,"href":457},"site.contact","Contact page","https:\u002F\u002Fpieces.app\u002Fcontact",{"key":459,"label":58,"href":460},"site.updates","https:\u002F\u002Fpieces.app\u002Fupdates",{"key":462,"label":463,"href":464},"site.news","News","https:\u002F\u002Fpieces.app\u002Fnews",{"key":466,"label":467,"href":468},"site.events","Community events","https:\u002F\u002Fpieces.app\u002Fcommunity\u002Fevents",{"key":470,"label":471,"href":472},"site.userStories","User stories","https:\u002F\u002Fpieces.app\u002Fuser-stories",{"key":474,"label":475,"href":476},"site.academy","Academy","https:\u002F\u002Fpieces.app\u002Flearn\u002Facademy",{"key":478,"label":479,"href":480},"site.support","Website support","https:\u002F\u002Fpieces.app\u002Fsupport",{"key":482,"label":483,"href":484},"site.standup","Standup","https:\u002F\u002Fpieces.app\u002Fstandup",{"key":486,"label":34,"href":487},"site.blog","https:\u002F\u002Fcode.pieces.app\u002Fblog",{"key":489,"label":43,"href":490},"social.discord","https:\u002F\u002Fdiscord.gg\u002Fgetpieces",{"key":492,"label":46,"href":493},"social.x","https:\u002F\u002Fx.com\u002Fgetpieces",{"key":495,"label":496,"href":493},"social.twitter","Twitter",{"key":498,"label":499,"href":500},"social.instagram","Instagram","https:\u002F\u002Fwww.instagram.com\u002Fgetpieces\u002F",{"key":502,"label":503,"href":504},"social.tiktok","TikTok","https:\u002F\u002Fwww.tiktok.com\u002F@getpieces",{"key":506,"label":49,"href":507},"social.linkedin","https:\u002F\u002Fwww.linkedin.com\u002Fcompany\u002Fgetpieces\u002F",{"key":509,"label":510,"href":511},"social.youtube","YouTube","https:\u002F\u002Fyoutube.com\u002F@getpieces",{"key":513,"label":514,"href":515},"github.org","GitHub organization","https:\u002F\u002Fgithub.com\u002Fpieces-app",{"key":517,"label":518,"href":519},"github.support","GitHub support","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fsupport",{"key":521,"label":522,"href":523},"github.issues","GitHub issues","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fsupport\u002Fissues",{"key":525,"label":526,"href":527},"github.discussions","GitHub discussions","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fsupport\u002Fdiscussions",{"key":529,"label":530,"href":531},"github.documentation","GitHub documentation","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fdocumentation",{"key":533,"label":534,"href":535},"github.opensource","GitHub open source","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fopensource",{"key":537,"label":538,"href":539},"github.sdks.python","Python SDK","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fpieces-os-client-sdk-for-python",{"key":541,"label":542,"href":543},"github.sdks.typescript","TypeScript SDK","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fpieces-os-client-sdk-for-typescript",{"key":545,"label":546,"href":547},"github.sdks.dart","Dart SDK","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fpieces-os-client-sdk-for-dart",{"key":549,"label":550,"href":551},"github.sdks.kotlin","Kotlin SDK","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fpieces-os-client-sdk-for-kotlin",{"key":553,"label":554,"href":555},"github.plugins.obsidian","Obsidian plugin repository","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fobsidian-pieces",{"key":557,"label":558,"href":255},"github.plugins.jupyterlab","JupyterLab plugin repository",{"key":560,"label":561,"href":562},"github.plugins.sublime","Sublime plugin repository","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fplugin_sublime",{"key":564,"label":565,"href":566},"github.plugins.neovim","Neovim plugin repository","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fplugin_neovim",{"key":568,"label":569,"href":570},"github.cliAgent","CLI agent repository","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fcli-agent",{"key":572,"label":573,"href":574},"github.mcpDart","MCP Dart repository","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fmcp_dart",{"key":576,"label":577,"href":578},"github.awesomePieces","Awesome Pieces repository","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fawesome-pieces",{"key":580,"label":581,"href":66},"legal.privacyPolicy","Privacy policy",{"key":583,"label":584,"href":69},"legal.refundPolicy","Refund policy",{"key":586,"label":587,"href":72},"legal.terms","Terms",{"key":589,"label":590,"href":591},"legal.security","Legal security","https:\u002F\u002Fpieces.app\u002Flegal\u002Fsecurity",{"key":593,"label":594,"href":511},"videos.youtubeChannel","YouTube channel",{"key":596,"label":597,"href":598},"videos.gettingStartedDesktop","Getting started desktop video","https:\u002F\u002Fyoutu.be\u002FdUr1lRM_TYk",{"key":600,"label":601,"href":602},"videos.snippetDiscoveryxR","Snippet discovery video","https:\u002F\u002Fyoutu.be\u002FG6vb1USw-30",{"key":604,"label":605,"href":606},"sales.bookACall","Book a sales call","https:\u002F\u002Fcalendar.app.google\u002FWVUDtUfNy5Vst3sH7",{"key":608,"label":609,"href":610},"sales.enterprise","Enterprise form","https:\u002F\u002Fgetpieces.typeform.com\u002Fto\u002FaVQFTvpE",{"key":612,"label":613,"href":527},"sales.feedback","Feedback discussions",{"key":615,"label":616,"href":617},"sales.earlyAccess","Early access form","https:\u002F\u002Fgetpieces.typeform.com\u002Fearlyaccess",{"key":619,"label":620,"href":621},"sales.supportEmail","Support email","mailto:support@pieces.app",{"key":623,"label":624,"href":19},"routes.home","Home route",{"key":626,"label":627,"href":56},"routes.about","About route",{"key":629,"label":630,"href":12},"routes.downloads","Downloads route",{"key":632,"label":633,"href":634},"routes.thanks","Post-install thanks route","\u002Finstall\u002Fthanks",{"key":636,"label":637,"href":638},"routes.pricing","Pricing route","\u002Fpricing",{"key":640,"label":641,"href":642},"cta.freeTrial","Start free trial CTA (Pieces Pro) — used by \u002Fcampaigns\u002F* landing pages","https:\u002F\u002Fcampaigns.pieces.app\u002F",{"key":644,"label":645,"href":22},"routes.enterprise","Enterprise route",{"key":647,"label":648,"href":62},"routes.contact","Contact route",{"key":650,"label":651,"href":59},"routes.updates","Updates route",{"key":653,"label":654,"href":655},"routes.migrationError","Migration error route","\u002Fmigration\u002Ferror",{"key":657,"label":658,"href":659},"routes.authenticated","Post-login authenticated route","\u002Fauth\u002Fsigned-in",{"key":661,"label":662,"href":663},"routes.signed-out","Signed out route","\u002Fauth\u002Fsigned-out",{"key":665,"label":666,"href":667},"routes.authentication-error","Authentication error route","\u002Fauth\u002Ferror",{},"data\u002Fshared\u002Furls","2AvfSWI6bZACH5Kr1ZS3txMLjteRjCjbDR_ul1uRZ9Q",{"id":672,"title":673,"author":674,"authorPhoto":675,"authorPhotoAlt":674,"authorSlug":676,"body":677,"buttonText":1001,"buttonUrl":1001,"category":1002,"date":1003,"description":1004,"draft":1005,"editorsPick":1005,"extension":1006,"featured":1005,"image":1007,"imageAlt":1008,"meta":1009,"navigation":32,"ogImage":1001,"ogImageAlt":1001,"path":1010,"seo":1011,"stem":1012,"tags":1001,"__hash__":1013},"blog\u002Fblog\u002F10-nodejs-boilerplate-code-snippets-every-developer-needs.md","10 Node.js Boilerplate Code Snippets Every Developer Needs","Anushka Gupta","https:\u002F\u002Fstorage.googleapis.com\u002Fpieces-marketing-website\u002Fimages\u002Fblog\u002Ftop-10-kotlin-code-snippets-to-keep-handy\u002Fauthor.png","anushka-gupta",{"type":678,"value":679,"toc":987},"minimark",[680,684,695,698,701,709,712,717,720,723,734,741,745,751,757,763,767,770,773,779,785,789,800,814,817,823,829,833,844,847,853,861,867,871,874,880,886,890,893,899,905,909,912,918,924,928,931,937,943,947,950,956,962,966,969,972,979],[681,682,683],"p",{},"Node.js is a game-changer in web development. It lets developers use JavaScript seamlessly from the browser to the server. Its event-driven setup is like a multitasking superhero, making it perfect for applications with simultaneous tasks, such as chat apps and online games.",[681,685,686,687,694],{},"It excels as a web server superhero, effortlessly handling multiple users and creating snappy APIs for real-time applications like chats and gaming. It's not just for the web; Node.js fits into microservices architectures and even tackles desktop applications with frameworks like ",[688,689,693],"a",{"href":690,"rel":691},"https:\u002F\u002Fpieces.app\u002Fblog\u002Fflutter-vs-electron-whats-the-difference",[692],"nofollow","Flutter or Electron",".",[681,696,697],{},"Node.js is your trusty sidekick, making web development more enjoyable and efficient. In this article, we are going to dive into some super useful Node.js boilerplate snippets that will become an indispensable part of your workflow.",[681,699,700],{},"As you add them to your workflow, you’ll need to go back to these snippets over and over again. We will help you overcome this tedious task!",[681,702,703,704,694],{},"Rather than searching your notes endlessly, you can use Pieces for Developersto organize these Node.js code snippetsalong with the useful links, tags, helpful descriptions, anchors, and titles for each snippet, making it a \u003C1-second task to retrieve one whenever you need it. Ready to get started? ",[688,705,708],{"href":706,"rel":707},"https:\u002F\u002Fdocs.pieces.app\u002Finstallation-getting-started\u002Fwhat-am-i-installing",[692],"Install the Pieces Desktop App for free",[681,710,711],{},"Let's dive in!",[713,714,716],"h2",{"id":715},"_1-cors-in-nodejs-express-boilerplate","1. CORS in Node.js Express Boilerplate",[681,718,719],{},"Using Node.js CORS is a mechanism that allows a web server to specify which domains are allowed to access its resources. When a client makes a request to a server, the server includes a special header called Access-Control-Allow-Origin in its response. This header specifies which domain is allowed to access the resources. If the requesting domain is not in the allowed list, the browser will block the request.",[681,721,722],{},"Here is a boilerplate Node.js snippet to enable all CORS requests:",[724,725,731],"pre",{"className":726,"code":728,"language":729,"meta":730},[727],"language-text","var express = require('express')\nvar cors = require('cors')\nvar app = express()\napp.use(cors())\napp.get('\u002Fproducts\u002F:id', function (req, res, next) {\n  res.json({msg: 'This is CORS-enabled for all origins!'})\n})\napp.listen(80, function () {\n  console.log('CORS-enabled web server listening on port 80')\n})\n","text","",[732,733,728],"code",{"__ignoreMap":730},[681,735,736],{},[688,737,740],{"href":738,"rel":739},"https:\u002F\u002F3a8988d1-09a6-40d8-90cc-e92f99f2d888.pieces.cloud\u002F?p=b5fb42a6da",[692],"Save this code",[713,742,744],{"id":743},"_2-enable-cors-for-a-single-route","2. Enable CORS for a Single Route",[681,746,747,748,750],{},"If you need a certain route to be accessible and not other routes, you can configure CORS as a middleware instead of configuring it to the whole app. This will allow a certain route to be accessible by any domain. In this case, only the ",[732,749,19],{}," route will be accessible for every domain. Here's a Node.js express boilerplate for enabling CORS:",[724,752,755],{"className":753,"code":754,"language":729,"meta":730},[727],"var express = require('express')\nvar cors = require('cors')\nvar app = express()\napp.get('\u002Fproducts\u002F:id', cors(), function (req, res, next) {\n  res.json({msg: 'This is CORS-enabled for a Single Route'})\n})\napp.listen(80, function () {\n  console.log('CORS-enabled web server listening on port 80')\n})\n",[732,756,754],{"__ignoreMap":730},[681,758,759],{},[688,760,740],{"href":761,"rel":762},"https:\u002F\u002F3a8988d1-09a6-40d8-90cc-e92f99f2d888.pieces.cloud\u002F?p=5a414cbcb9",[692],[713,764,766],{"id":765},"_3-basic-morgan-usage","3. Basic Morgan Usage",[681,768,769],{},"Adding Morgan to middlewares in Express is enough to get you started. The below setup will start logging requests in the console.",[681,771,772],{},"Here's a simple Node.js boilerplate for basic Morgan usage:",[724,774,777],{"className":775,"code":776,"language":729,"meta":730},[727],"const express = require('express');\nconst morgan = require('morgan'); \u002F\u002F import morgan\nconst app = express();\n\u002F\u002F setup morgan\napp.use(morgan(\"dev\"));\napp.listen(3000, () => {\n    console.debug('App listening on :3000');\n})\n",[732,778,776],{"__ignoreMap":730},[681,780,781],{},[688,782,740],{"href":783,"rel":784},"https:\u002F\u002F3a8988d1-09a6-40d8-90cc-e92f99f2d888.pieces.cloud\u002F?p=65ec4c8ea9",[692],[713,786,788],{"id":787},"_4-customize-log-formats-by-creating-our-own-tokens","4. Customize Log Formats by Creating Our Own Tokens",[681,790,791,792,795,796,799],{},"Tokens in Morgan are functions identified following the ",[732,793,794],{},":"," symbol. Morgan allows you to create your own tokens with the ",[732,797,798],{},".token()"," method.",[681,801,802,803,805,806,809,810,813],{},"The ",[732,804,798],{}," method accepts a type or the name of the token as the first argument, following a callback function. Morgan will run the callback function each time a log occurs using the token. As a middleware, Morgan applies the ",[732,807,808],{},"req"," and ",[732,811,812],{},"res"," objects as arguments.",[681,815,816],{},"Here's a boilerplate Node.js snippet for creating custom logs:",[724,818,821],{"className":819,"code":820,"language":729,"meta":730},[727],"import express from 'express';\nimport morgan from 'morgan';\nconst app=express();\nmorgan.token('host', function(req, res) {\nreturn req.hostname;\n});\n\u002F\u002F we are using the host parameter\napp.use(morgan(':method :host :status :res[content-length] - :response-time ms'))\napp.get(\"\u002F\", (req, res) => {\nres.send(\"\u003Ch1>Hello world!\u003C\u002Fh1>\n\");\n});\napp.listen(3000,()=>{\nconsole.log('Listening on port 3000...')\n})\n",[732,822,820],{"__ignoreMap":730},[681,824,825],{},[688,826,740],{"href":827,"rel":828},"https:\u002F\u002F3a8988d1-09a6-40d8-90cc-e92f99f2d888.pieces.cloud\u002F?p=3f8f40a8ae",[692],[713,830,832],{"id":831},"_5-design-tokens-with-custom-arguments","5. Design Tokens with Custom Arguments",[681,834,835,836,839,840,843],{},"To denote custom arguments, you can use square brackets to define arguments passed to a token. This will allow your tokens to accept additional arguments. In your ",[732,837,838],{},"index.js"," file, apply a custom argument to the Morgan format string in the ",[732,841,842],{},":param"," token.",[681,845,846],{},"Here's a simple boilerplate Node.js snippet:",[724,848,851],{"className":849,"code":850,"language":729,"meta":730},[727],"app.use(morgan(':method :host :status :param[id]:res[content-length] - :response-time ms')); \nmorgan.token('param', function(req, res, param) { \nreturn req.params[param]; });\n",[732,852,850],{"__ignoreMap":730},[681,854,855,856,858,859,799],{},"The custom argument ID on the ",[732,857,842],{}," token in the Morgan invocation will include the ID in the parameter following the ",[732,860,798],{},[681,862,863],{},[688,864,740],{"href":865,"rel":866},"https:\u002F\u002F3a8988d1-09a6-40d8-90cc-e92f99f2d888.pieces.cloud\u002F?p=8c7d449350",[692],[713,868,870],{"id":869},"_6-create-a-simple-http-server-in-nodejs-to-serve-a-string","6. Create a Simple HTTP Server in Node.js to Serve a String",[681,872,873],{},"A simple HTTP server listens at port 3000 and is used to serve a string. Here's a simple boilerplate Node.js code snippet:",[724,875,878],{"className":876,"code":877,"language":729,"meta":730},[727],"\u002F\u002F Load the 'http' module\nconst http = require('http');\n\u002F\u002F Create an HTTP server that responds with a string\nconst server = http.createServer((req, res) => {\n  \u002F\u002F Set the content type to plain text\n  res.setHeader('Content-Type', 'text\u002Fplain');\n  \u002F\u002F Send the string as the response\n  res.end('Hello, this is a simple HTTP server in Node.js!');\n});\n\u002F\u002F Specify the port number on which the server should listen\nconst port = 3000;\n\u002F\u002F Start the server and listen on the specified port\nserver.listen(port, () => {\n  console.log(`Server running at http:\u002F\u002Flocalhost:${port}\u002F`);\n});\n",[732,879,877],{"__ignoreMap":730},[681,881,882],{},[688,883,740],{"href":884,"rel":885},"https:\u002F\u002F3a8988d1-09a6-40d8-90cc-e92f99f2d888.pieces.cloud\u002F?p=2610458158",[692],[713,887,889],{"id":888},"_7-create-a-simple-http-server-in-nodejs-to-serve-html","7. Create a Simple HTTP Server in Node.js to serve HTML",[681,891,892],{},"This code snippet creates a simple HTTP server that listens at port 3000 and is used to serve HTML:",[724,894,897],{"className":895,"code":896,"language":729,"meta":730},[727],"\u002F\u002Fserve-html.js\nvar http = require('http');\nvar fs = require('fs');\nhttp.createServer(function (req, res) {\n    console.log(\"Port Number : 3000\");\n    \u002F\u002F change the MIME type from 'text\u002Fplain' to 'text\u002Fhtml'\n    res.writeHead(200, {'Content-Type': 'text\u002Fhtml'});\n    \u002F\u002Freading the content file\n    fs.readFile('index.html', (err, data) => {\n        \u002F\u002Fchecking for errors\n        if (err) \n            throw err;\n        console.log(\"Operation Success\");\n        \u002F\u002Fsending the response\n        res.end(data);\n    });\n}).listen(3000);\n",[732,898,896],{"__ignoreMap":730},[681,900,901],{},[688,902,740],{"href":903,"rel":904},"https:\u002F\u002F3a8988d1-09a6-40d8-90cc-e92f99f2d888.pieces.cloud\u002F?p=4d7a4c9cf0",[692],[713,906,908],{"id":907},"_8-create-a-simple-http-server-in-nodejs-to-serve-a-pdf","8. Create a Simple HTTP Server in Node.js to Serve a PDF",[681,910,911],{},"Here is the boilerplate Node.js code to create a simple HTTP server that listens at port 3000 and is used to serve a PDF:",[724,913,916],{"className":914,"code":915,"language":729,"meta":730},[727],"\u002F\u002Fserve-pdf.js\nvar http = require('http');\nvar fs = require('fs');\nconsole.log('Server will listen at :  127.0.0.1:3000 ');\nhttp.createServer( (req, res)=> {\n    console.log(\"Port Number : 3000\");\n    \u002F\u002F Change the MIME type to application\u002Fpdf\n    res.writeHead(200, {\"Content-Type\": \"application\u002Fpdf\"});\n    fs.readFile('index.pdf', (error,data) => {\n        if(error){\n            res.json({'status':'error',msg:err});\n        }else{          \n            res.write(data);\n            res.end();       \n        }\n    });\n}).listen(3000);\n",[732,917,915],{"__ignoreMap":730},[681,919,920],{},[688,921,740],{"href":922,"rel":923},"https:\u002F\u002F3a8988d1-09a6-40d8-90cc-e92f99f2d888.pieces.cloud\u002F?p=840e4aa731",[692],[713,925,927],{"id":926},"_9-create-a-simple-http-server-in-nodejs-to-serve-audio","9. Create a Simple HTTP Server in Node.js to Serve Audio",[681,929,930],{},"Here is the boilerplate Node.js code to create a simple HTTP server that listens at port 3000 and is used to serve audio:",[724,932,935],{"className":933,"code":934,"language":729,"meta":730},[727],"\u002F\u002Fserve-audio.js\nvar http = require('http');\nvar fs = require('fs');\nhttp.createServer(function (req, res) {\n    console.log(\"Port Number : 3000\");\n    \u002F\u002F change MIME type to 'audio\u002Fmp3'\n    res.writeHead(200, {'Content-Type': 'audio\u002Fmp3'});\n    fs.exists('audio.mp3',function(exists){\n        if(exists)\n        {\n            var rstream = fs.createReadStream('audio.mp3');\n            rstream.pipe(res);\n        }\n        else\n        {\n            res.end(\"Its a 404\");\n        }\n    });\n}).listen(3000);\n",[732,936,934],{"__ignoreMap":730},[681,938,939],{},[688,940,740],{"href":941,"rel":942},"https:\u002F\u002F3a8988d1-09a6-40d8-90cc-e92f99f2d888.pieces.cloud\u002F?p=afaa4ea852",[692],[713,944,946],{"id":945},"_10-create-a-simple-http-server-in-nodejs-to-serve-video","10. Create a Simple HTTP Server in Node.js to Serve Video",[681,948,949],{},"Here is the boilerplate Node.js to create a simple HTTP server that listens at port 3000 and is used to serve video:",[724,951,954],{"className":952,"code":953,"language":729,"meta":730},[727],"\u002F\u002Fserve-video.js\nvar http = require('http');\nvar fs = require('fs');\nhttp.createServer(function (req, res) {\n    console.log(\"Port Number : 3000\");\n    \u002F\u002F change the MIME type to 'video\u002Fmp4'\n    res.writeHead(200, {'Content-Type': 'video\u002Fmp4'});\n    fs.exists('video.mp4',function(exists){\n        if(exists)\n        {\n            var rstream = fs.createReadStream('video.mp4');\n            rstream.pipe(res);\n        }\n        else\n        {\n            res.send(\"Its a 404\");\n            res.end();\n        }\n    });\n}).listen(3000);\n",[732,955,953],{"__ignoreMap":730},[681,957,958],{},[688,959,740],{"href":960,"rel":961},"https:\u002F\u002F3a8988d1-09a6-40d8-90cc-e92f99f2d888.pieces.cloud\u002F?p=011a438d9e",[692],[713,963,965],{"id":964},"conclusion","Conclusion",[681,967,968],{},"That wraps up our handpicked collection of the best Node.js boilerplate code snippets —a valuable resource for both seasoned Node.js developers and those just starting out.",[681,970,971],{},"For a seamless coding experience and accelerated learning, the Pieces Web Extension offers a nifty feature. You can effortlessly copy and save any of these Node.js boilerplate codes from our list, making them instantly accessible whenever you need them.",[681,973,974,975,694],{},"What's even more fascinating is that as you save a snippet in Pieces, you'll gain insight into those boilerplate Node.js snippets, including tags, context, and relevant links. Sounds intriguing, right? Give it a shot! Try saving one of the code snippets above with just a single click, enriched with tags and all the context you need, and ",[688,976,978],{"href":706,"rel":977},[692],"install the Pieces Desktop App",[681,980,981,982,694],{},"We hope this article has helped you get comfortable with some handy Node.js boilerplate snippets and when to use them. If you're keen on discovering more useful code snippets, make sure to check out the ",[688,983,986],{"href":984,"rel":985},"https:\u002F\u002Fcode.pieces.app\u002Fcollections\u002Fnode-js",[692],"Pieces Node.js code snippets collection",{"title":730,"searchDepth":988,"depth":988,"links":989},2,[990,991,992,993,994,995,996,997,998,999,1000],{"id":715,"depth":988,"text":716},{"id":743,"depth":988,"text":744},{"id":765,"depth":988,"text":766},{"id":787,"depth":988,"text":788},{"id":831,"depth":988,"text":832},{"id":869,"depth":988,"text":870},{"id":888,"depth":988,"text":889},{"id":907,"depth":988,"text":908},{"id":926,"depth":988,"text":927},{"id":945,"depth":988,"text":946},{"id":964,"depth":988,"text":965},null,"Software Development","2024-02-06T00:00:00.000Z","Explore essential Node.js boilerplate code snippets for web development, including CORS setup, Morgan usage, custom logs, and more.",false,"md","https:\u002F\u002Fstorage.googleapis.com\u002Fpieces-marketing-website\u002Fimages\u002Fblog\u002F10-nodejs-boilerplate-code-snippets-every-developer-needs\u002Fhero.jpeg","Node.js boilerplate code snippets.",{},"\u002Fblog\u002F10-nodejs-boilerplate-code-snippets-every-developer-needs",{"title":673,"description":1004},"blog\u002F10-nodejs-boilerplate-code-snippets-every-developer-needs","Lv652jscrsEQTX97Fpp31F4Rq913RPnx3XY_6By6lRI",{"id":1015,"title":674,"body":1016,"description":730,"draft":1005,"extension":1006,"meta":1020,"navigation":32,"path":1021,"photo":1022,"photoAlt":1001,"seo":1023,"stem":1024,"__hash__":1025},"authors\u002Fauthors\u002Fanushka-gupta.md",{"type":678,"value":1017,"toc":1018},[],{"title":730,"searchDepth":988,"depth":988,"links":1019},[],{},"\u002Fauthors\u002Fanushka-gupta","https:\u002F\u002Fstorage.googleapis.com\u002Fpieces-marketing-website\u002Fimages\u002Fauthors\u002Fanushka-gupta.jpg",{"title":674,"description":730},"authors\u002Fanushka-gupta","UcF5flqZticXI-AuzPLD712Nundphrh1oBKLtw4NSa4",{"left":1027,"top":1027,"width":1028,"height":1028,"rotate":1027,"vFlip":1005,"hFlip":1005,"body":1029},0,24,"\u003Cpath fill=\"currentColor\" d=\"m7.825 13l4.9 4.9q.3.3.288.7t-.313.7q-.3.275-.7.288t-.7-.288l-6.6-6.6q-.15-.15-.213-.325T4.426 12t.063-.375t.212-.325l6.6-6.6q.275-.275.688-.275t.712.275q.3.3.3.713t-.3.712L7.825 11H19q.425 0 .713.288T20 12t-.288.713T19 13z\"\u002F>"]