PageSourceSearch

https://godfreylebo.vercel.app/_next/static/chunks/pages/projects/advanced-env-manager-cdd4887df128a94e.js

js godfreylebo.vercel.app collected 2026-10-03 07:01:48 UTC 11,654 bytes, 1 lines download raw bytes

1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[4592],{344:function(e,n,s){(window.__NEXT_P=window.__NEXT_P||[]).push(["/projects/advanced-env-manager",function(){return s(9851)}])},8785:function(e,n){"use strict";n.Z={src:"/_next/static/media/advanced_env_manager_logo_1765605351055.0a1154f3.png",height:1024,width:1024,blurDataURL:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAMAAADz0U65AAAAG1BMVEV4oqB2oJ5rjpFxnJtjhopYeH01UF9KZXAdNk01736rAAAACXBIWXMAAC4jAAAuIwF4pT92AAAAMUlEQVR4nC2KQQ4AIAzCKNvU/7/YYLyQ0lQgpCzYOcg9DtB7DUg16+xK9g0qd71G0VwRsgCFwEchvwAAAABJRU5ErkJggg==",blurWidth:8,blurHeight:8}},9095:function(e,n,s){"use strict";s.d(n,{B:function(){return h}});var t=s(5893),a=s(9008),r=s.n(a),c=s(1163),i=s(2962),o=s(5649),l=s(3652),d=s(3621),p=s(4163);function m(e){return(0,t.jsx)("svg",{viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",...e,children:(0,t.jsx)("path",{d:"M7.25 11.25 3.75 8m0 0 3.5-3.25M3.75 8h8.5",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})})}function h(e){let{children:n,meta:s,isRssFeed:a=!1,previousPathname:h}=e,u=(0,c.useRouter)();if(a)return n;let x=`${p.J.url}${u.asPath.split("?")[0]}`,j=s.date?new Date(s.date).toISOString():void 0;return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(r(),{children:[(0,t.jsx)("title",{children:`${s.title} - ${p.J.name}`}),(0,t.jsx)("meta",{name:"description",content:s.description}),(0,t.jsx)("link",{rel:"canonical",href:x}),(0,t.jsx)("meta",{property:"og:type",content:"article"}),(0,t.jsx)("meta",{property:"og:title",content:s.title}),(0,t.jsx)("meta",{property:"og:description",content:s.description}),(0,t.jsx)("meta",{property:"og:url",content:x}),(0,t.jsx)("meta",{property:"og:image",content:p.J.ogImage}),j&&(0,t.jsx)("meta",{property:"article:published_time",content:j}),(0,t.jsx)("meta",{name:"twitter:card",content:"summary_large_image"}),(0,t.jsx)("meta",{name:"twitter:title",content:s.title}),(0,t.jsx)("meta",{name:"twitter:description",content:s.description}),(0,t.jsx)("meta",{name:"twitter:image",content:p.J.ogImage})]}),(0,t.jsx)(i.dX,{url:x,title:s.title,description:s.description,images:[p.J.ogImage],datePublished:j,authorName:[{name:s.author||p.J.name,url:p.J.url}
1],publisherName:p.J.name,publisherLogo:p.J.ogImage,isAccessibleForFree:!0}),(0,t.jsx)(o.W,{className:"mt-16 lg:mt-32",children:(0,t.jsx)("div",{className:"xl:relative",children:(0,t.jsxs)("div",{className:"mx-auto max-w-2xl",children:[h&&(0,t.jsx)("a",{href:h,"aria-label":"Go back to articles",className:"group mb-8 flex h-10 w-10 items-center justify-center rounded-full bg-white shadow-md shadow-zinc-800/5 ring-1 ring-zinc-900/5 transition dark:border dark:border-zinc-700/50 dark:bg-zinc-800 dark:ring-0 dark:ring-white/10 dark:hover:border-zinc-700 dark:hover:ring-white/20 lg:absolute lg:-left-5 lg:mb-0 lg:-mt-2 xl:-top-1.5 xl:left-0 xl:mt-0",children:(0,t.jsx)(m,{className:"h-4 w-4 stroke-zinc-500 transition group-hover:stroke-zinc-700 dark:stroke-zinc-500 dark:group-hover:stroke-zinc-400"})}),(0,t.jsxs)("article",{children:[(0,t.jsxs)("header",{className:"flex flex-col",children:[(0,t.jsx)("h1",{className:"mt-6 text-4xl font-bold tracking-tight text-zinc-800 dark:text-zinc-100 sm:text-5xl",children:s.title}),(0,t.jsxs)("time",{dateTime:s.date,className:"order-first flex items-center text-base text-zinc-400 dark:text-zinc-500",children:[(0,t.jsx)("span",{className:"h-4 w-0.5 rounded-full bg-zinc-200 dark:bg-zinc-500"}),(0,t.jsx)("span",{className:"ml-3",children:(0,l.p)(s.date)})]})]}),(0,t.jsx)(d.M,{className:"mt-8",children:n})]})]})})})]})}},3621:function(e,n,s){"use strict";s.d(n,{M:function(){return r}});var t=s(5893),a=s(6010);function r(e){let{children:n,className:s}=e;return(0,t.jsx)("div",{className:(0,a.Z)(s,"prose dark:prose-invert"),children:n})}},3652:function(e,n,s){"use strict";function t(e){return new Date(`${e}T00:00:00Z`).toLocaleDateString("en-US",{day:"numeric",month:"long",year:"numeric",timeZone:"UTC"})}s.d(n,{p:function(){return t}})},9851:function(e,n,s){"use strict";s.r(n),s.d(n,{meta:function(){return l}});var t=s(5893),a=s(1151),r=s(9095),c=s(5675),i=s.n(c),o=s(8785);let l={author:"Godfrey Lebo",date:"2025-10-15",title:"Advanced Env Manager",description:"Secure environment variable management for Node.js with AES-256 encryption and AWS Secrets Manager integration."},d=e=>(0,t.jsx)(r.B,Object.assign({meta:l},e));function p(e){let n=Object.assign({h2:"h2",p:"p",strong:"strong",code:"code",ul:"ul",li:"li",pre:"pre",span:"span"},(0,a.ah)(),e.components);return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("div",{className:"flex justify-center my-8",children:(0,t.jsx)(i(),{src:o.Z,alt:"Advanced Env Manager Logo",width:120,height:120,unoptimized:!0})}),"\n",(0,t.jsx)(n.h2,{children:"Overview"}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Advanced Env Manager"})," elevates environment variable handling in Node.js applications from simple text files to a secure, type-safe, and integrated system. It supports local encryption of ",(0,t.jsx)(n.code,{children:".env"})," files and seamless fetching of secrets from cloud providers like AWS Secrets Manager."]}),"\n",(0,t.jsx)(n.h2,{children:"The Status Quo"}),"\n",(0,t.jsxs)(n.p,{children:["The industry standard ",(0,t.jsx)(n.code,{children:"dotenv"})," is great for simplicity but lacks security controls. Developers often accidentally commit ",(0,t.jsx)(n.code,{children:".env"})," files or share secrets over insecure channels. Managing secrets across development, staging, and production requires manual effort and is prone to human error."]}),"\n",(0,t.jsx)(n.h2,{children:"Market Proposition"}),"\n",(0,t.jsx)(n.p,{children:"Advanced Env Manager brings enterprise-grade secret management to standard Node.js projects."}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Encryption at Rest"}),": Local ",(0,t.jsx)(n.code,{children:".env"})," files can be encrypted (AES-256), allowing them to be safely committed to version control."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Cloud Integration"}),": Fetch production secrets directly from AWS/GCP/Azure at runtime, eliminating static files in production."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Schema Validation"}),": Enforce types and required fields using Joi or Zod schemas to prevent startup crashes."]}),"\n"]}),"\n",(0,t.jsx)(n.h2,{children:"Usage"}),"\n",(0,t.jsx)(n.pre,{className:"language-javascript",children:(0,t.jsxs)(n.code,{className:"language-javascript",children:[(0,t.jsx)(n.span,{className:"token keyword module",children:"import"})," ",(0,t.jsxs)(n.span,{className:"token imports",children:[(0,t.jsx)(n.span,{className:"token punctuation",children:"{"})," ",(0,t.jsx)(n.span,{className:"token maybe-class-name",children:"EnvManager"})," ",(0,t.jsx)(n.span,{className:"token punctuation",children:"}"})]})," ",(0,t.jsx)(n.span,{className:"token keyword module",children:"from"})," ",(0,t.jsx)(n.span,{className:"token string",children:"'advanced-env-manager'"}),(0,t.jsx)(n.span,{className:"token punctuation",children:";"}),"\n\n",(0,t.jsx)(n.span,{className:"token keyword",children:"const"})," manager ",(0,t.jsx)(n.span,{className:"token operator",children:"="})," ",(0,t.jsx)(n.span,{className:"token keyword",children:"new"})," ",(0,t.jsx)(n.span,{className:"token class-name",children:"EnvManager"}),(0,t.jsx)(n.span,{className:"token punctuation",children:"("}),(0,t.jsx)(n.span,{className:"token punctuation",children:"{"}),"\n  ",(0,t.jsx)(n.span,{className:"token literal-property property",children:"schema"}),(0,t.jsx)(n.span,{className:"token operator",children:":"})," ",(0,t.jsx)(n.span,{className:"token punctuation",children:"{"}),"\n    ",(0,t.jsx)(n.span,{className:"token constant",children:"DB_HOST"}),(0,t.jsx)(n.span,{className:"token operator",children:":"})," ",(0,t.jsx)(n.span,{className:"token punctuation",children:"{"})," ",(0,t.jsx)(n.span,{className:"token literal-property property",children:"type"}),(0,t.jsx)(n.span,{className:"token operator",children:":"})," ",(0,t.jsx)(n.span,{className:"token string",children:"'string'"}),(0,t.jsx)(n.span,{className:"token punctuation",children:","})," ",(0,t.jsx)(n.span,{className:"token literal-property property",children:"required"}),(0,t.jsx)(n.span,{className:"token operator",children:":"})," ",(0,t.jsx)(n.span,{className:"token boolean",children:"true"})," ",(0,t.jsx)(n.span,{className:"token punctuation",children:"}"}),(0,t.jsx)(n.span,{className:"token punctuation",children:","}),"\n    ",(0,t.jsx)(n.span,{className:"token constant",children:"API_KEY"}),(0,t.jsx)(n.span,{className:"token operator",children:":"})," ",(0,t.jsx)(n.span,{className:"token punctuation",children:"{"})," ",(0,t.jsx)(n.span,{className:"token literal-property property",children:"type"}),(0,t.jsx)(n.span,{className:"token operator",children:":"})," ",(0,t.jsx)(n.span,{className:"token string",children:"'string'"}),(0,t.jsx)(n.span,{className:"token punctuation",children:","})," ",(0,t.jsx)(n.span,{className:"token literal-property property",children:"sensitive"}),(0,t.jsx)(n.span,{className:"token operator",children:":"})," ",(0,t.jsx)(n.span,{className:"token boolean",children:"true"})," ",(0,t.jsx)(n.span,{className:"token punctuation",children:"}"}),"\n  ",(0,t.jsx)(n.span,{className:"token punctuation",children:"}"}),(0,t.jsx)(n.span,{className:"token punctuation",children:","}),"\n  ",(0,t.jsx)(n.span,{className:"token literal-property property",children:"encryptionKey"}),(0,t.jsx)(n.span,{className:"token operator",children:":"})," process",(0,t.jsx)(n.span,{className:"token punctuation",children:"."}),(0,t.jsx)(n.span,{className:"token property-access",children:"env"}),(0,t.jsx)(n.span,{className:"token punctuation",children:"."}),(0,t.jsx)(n.span,{className:"token constant",children:"MASTER_KEY"}),"\n",(0,t.jsx)(n.span,{className:"token punctuation",children:"}"}),(0,t.jsx)(n.span,{className:"token punctuation",children:")"}),(0,t.jsx)(n.span,{className:"token punctuation",children:";"}),"\n\n",(0,t.jsx)(n.span,{className:"token keyword control-flow",children:"await"})," manager",(0,t.jsx)(n.span,{className:"token punctuation",children:"."}),(0,t.jsx)(n.span,{className:"token method function property-access",children:"load"}),(0,t.jsx)(n.span,{className:"token punctuation",children:"("}),(0,t.jsx)(n.span,{className:"token punctuation",children:")"}),(0,t.jsx)(n.span,{className:"token punctuation",children:";"}),"\n",(0,t.jsx)(n.span,{className:"token keyword",children:"const"})," dbHost ",(0,t.jsx)(n.span,{className:"token operator",children:"="})," manager",(0,t.jsx)(n.span,{className:"token punctuation",children:"."}),(0,t.jsx)(n.span,{className:"token method function property-access",children:"get"}),(0,t.jsx)(n.span,{className:"token punctuation",children:"("}),(0,t.jsx)(n.span,{className:"token string",children:"'DB_HOST'"}),(0,t.jsx)(n.span,{className:"token punctuation",children:")"}),(0,t.jsx)(n.span,{className:"token punctuation",children:";"}),"\n"]})}),"\n",(0,t.jsx)(n.h2,{children:"Hashtags"}),"\n",(0,t.jsx)(n.p,{children:"#NodeJS #DevOps #Security #Encryption #Backend"})]})}n.default=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return(0,t.jsx)(d,Object.assign({},e,{children:(0,t.jsx)(p,e)}))}},1151:function(e,n,s){"use strict";s.d(n,{ah:function(){return r}});var t=s(7294);let a=t.createContext({});function r(e){let n=t.useContext(a);return t.useMemo(()=>"function"==typeof e?e(n):{...n,...e},[n,e])}}},function(e){e.O(0,[9774,2888,179],function(){return e(e.s=344)}),_N_E=e.O()}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.