{"compiledCode":"\"use strict\";Object.defineProperty(exports, \"__esModule\", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }var _react = require('react'); var _react2 = _interopRequireDefault(_react);\n\n function SecureHubPage() {\n  return (\n    _react2.default.createElement('div', { className: [\"np-kodbe\",\"kb-page\"].join(\" \"),}\n\n\n      , _react2.default.createElement('style', null, \".np-kodbe.kb-page{--ink:var(--cpuom9j-runtime-text,#151a22);--muted:var(--cpuom9j-runtime-muted,#586173);--bg:var(--cpuom9j-runtime-bg,#ffffff);--surface:var(--cpuom9j-runtime-panel,#f6f8fb);--surface2:var(--cpuom9j-runtime-accent-soft,#eef2f8);--border:var(--cpuom9j-runtime-border,#e2e8f1);--brand:var(--cpuom9j-runtime-accent,#2e5be6);--brand-ink:var(--cpuom9j-runtime-accent,#1e3fa8);--accent:var(--cpuom9j-runtime-accent-soft,#0e9f86);--infobg:var(--cpuom9j-runtime-panel,#eef3fe);--warnbg:var(--cpuom9j-runtime-panel,#fdf6e9);--warnborder:var(--cpuom9j-runtime-border,#f0e2c2);--safebg:var(--cpuom9j-runtime-panel,#eafaf5);--safeborder:var(--cpuom9j-runtime-border,#c8efe0);color:var(--ink);background:var(--bg);font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif;line-height:1.65;font-size:17px;-webkit-font-smoothing:antialiased;}\\n.np-kodbe.kb-page *{box-sizing:border-box;}\\n.np-kodbe .kb-wrap{max-width:880px;margin:0 auto;padding:36px 20px 72px;}\\n.np-kodbe .kb-wrap.kb-wide{max-width:1080px;}\\n.np-kodbe .kb-eyebrow{font-size:.8rem;letter-spacing:.09em;text-transform:uppercase;color:var(--brand-ink);font-weight:700;margin:0 0 10px;}\\n.np-kodbe .kb-h1{font-size:clamp(2rem,5vw,3rem);line-height:1.12;margin:0 0 14px;letter-spacing:-.02em;}\\n.np-kodbe .kb-lead{font-size:clamp(1.05rem,2.4vw,1.28rem);color:var(--muted);margin:0 0 6px;max-width:62ch;}\\n.np-kodbe .kb-hero{padding:4px 0 4px;}\\n.np-kodbe .kb-section{margin:44px 0 0;}\\n.np-kodbe .kb-h2{font-size:clamp(1.35rem,3vw,1.8rem);line-height:1.2;margin:0 0 12px;letter-spacing:-.01em;}\\n.np-kodbe .kb-p{margin:0 0 14px;max-width:68ch;}\\n.np-kodbe .kb-list{margin:0 0 14px;padding-left:1.2em;max-width:68ch;}\\n.np-kodbe .kb-list li{margin:0 0 9px;}\\n.np-kodbe .kb-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:16px;margin:6px 0 0;}\\n.np-kodbe .kb-card{border:1px solid var(--border);border-radius:14px;padding:18px;background:var(--bg);display:flex;flex-direction:column;gap:7px;}\\n.np-kodbe .kb-card h3{margin:0;font-size:1.06rem;}\\n.np-kodbe .kb-card p{margin:0;color:var(--muted);font-size:.97rem;}\\n.np-kodbe .kb-card .kb-link{margin-top:4px;}\\n.np-kodbe .kb-link{color:var(--brand-ink);text-decoration:underline;text-underline-offset:2px;font-weight:600;}\\n.np-kodbe .kb-link:hover{color:var(--brand);}\\n.np-kodbe .kb-cta-row{display:flex;flex-wrap:wrap;gap:12px;margin:18px 0 0;}\\n.np-kodbe .kb-btn{display:inline-block;border-radius:10px;padding:12px 18px;font-weight:700;text-decoration:none;font-size:1rem;border:1px solid transparent;cursor:pointer;}\\n.np-kodbe .kb-btn.primary{background:var(--brand);color:#fff;}\\n.np-kodbe .kb-btn.primary:hover{background:var(--brand-ink);}\\n.np-kodbe .kb-btn.secondary{background:var(--surface2);color:var(--brand-ink);border-color:var(--border);}\\n.np-kodbe .kb-btn.ghost{background:transparent;color:var(--brand-ink);border-color:var(--border);}\\n.np-kodbe .kb-summary{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:18px 20px;margin:26px 0 0;}\\n.np-kodbe .kb-summary h2{font-size:.82rem;margin:0 0 8px;text-transform:uppercase;letter-spacing:.07em;color:var(--muted);}\\n.np-kodbe .kb-summary p{margin:0;max-width:68ch;}\\n.np-kodbe .kb-callout{border-radius:12px;padding:14px 16px;margin:20px 0 0;border:1px solid var(--border);max-width:70ch;}\\n.np-kodbe .kb-callout.info{background:var(--infobg);}\\n.np-kodbe .kb-callout.caution{background:var(--warnbg);border-color:var(--warnborder);}\\n.np-kodbe .kb-callout.safety{background:var(--safebg);border-color:var(--safeborder);}\\n.np-kodbe .kb-callout strong{display:block;margin-bottom:4px;}\\n.np-kodbe .kb-callout p{margin:0;}\\n.np-kodbe .kb-faq{margin:6px 0 0;max-width:72ch;}\\n.np-kodbe .kb-faq details{border-bottom:1px solid var(--border);padding:12px 0;}\\n.np-kodbe .kb-faq summary{cursor:pointer;font-weight:700;font-size:1.05rem;list-style:none;}\\n.np-kodbe .kb-faq summary::-webkit-details-marker{display:none;}\\n.np-kodbe .kb-faq summary::after{content:'+';float:right;color:var(--muted);margin-left:12px;}\\n.np-kodbe .kb-faq details[open] summary::after{content:'\\\\2013';}\\n.np-kodbe .kb-faq p{margin:10px 0 0;color:var(--muted);}\\n.np-kodbe .kb-steps{margin:0;padding-left:1.3em;max-width:70ch;}\\n.np-kodbe .kb-steps li{margin:0 0 12px;}\\n.np-kodbe .kb-disclaimer{margin-top:52px;font-size:.85rem;color:var(--muted);border-top:1px solid var(--border);padding-top:16px;max-width:72ch;}\\n@media (max-width:640px){.np-kodbe .kb-wrap{padding:26px 16px 56px;}}\")\n      , _react2.default.createElement('div', { className: \"kb-wrap kb-wide\" ,}\n        , _react2.default.createElement('header', { className: \"kb-hero\",}\n          , _react2.default.createElement('p', { className: \"kb-eyebrow\",}, \"Guide hub\")\n          , _react2.default.createElement('h1', { className: \"kb-h1\",}, \"Is your app safe? Find out, calmly.\")\n          , _react2.default.createElement('p', { className: \"kb-lead\",}, \"Spot and reduce the security risks AI-generated code tends to introduce, using a detection-first approach and knowing when to bring in a professional.\")\n          , _react2.default.createElement('div', { className: \"kb-cta-row\",}\n            , _react2.default.createElement('a', { className: \"kb-btn primary\" , href: \"/blog/is-your-ai-built-app-secure\",}, \"Start the security self-audit\")\n            , _react2.default.createElement('a', { className: \"kb-btn secondary\" , href: \"/blog/is-your-ai-built-app-secure\",}, \"Use the self-audit checklist\")\n          )\n        )\n        , _react2.default.createElement('aside', { className: \"kb-summary\",}\n          , _react2.default.createElement('h2', null, \"In plain English\")\n          , _react2.default.createElement('p', null, \"AI and no-code tools make it easy to ship code you do not fully understand, which can hide security gaps. This hub helps you find and reduce the most common risks without breaking anything, and tells you clearly when to hire a pro.\")\n        )\n        , _react2.default.createElement('aside', { className: \"kb-callout safety\" ,}\n          , _react2.default.createElement('strong', null, \"Detection-first, not a guarantee\")\n          , _react2.default.createElement('p', null, \"This hub is educational and conservative. It helps you find and reduce risk; it contains no exploit steps and never claims your app is secure. For payments, logins, and personal data, get an independent professional review.\")\n        )\n        , _react2.default.createElement('section', { className: \"kb-section\",}\n          , _react2.default.createElement('h2', { className: \"kb-h2\",}, \"Who this is for\")\n          , _react2.default.createElement('ul', { className: \"kb-list\",}\n            , _react2.default.createElement('li', null, \"Anyone who suspects their app might be insecure but cannot check\")\n            , _react2.default.createElement('li', null, \"Builders adding payments, logins, or anything with personal data\")\n            , _react2.default.createElement('li', null, \"People who inherited an app and are now responsible for its safety\")\n          )\n        )\n        , _react2.default.createElement('section', { className: \"kb-section\",}\n          , _react2.default.createElement('h2', { className: \"kb-h2\",}, \"When to use this hub\")\n          , _react2.default.createElement('ul', { className: \"kb-list\",}\n            , _react2.default.createElement('li', null, \"Before you launch to real users\")\n            , _react2.default.createElement('li', null, \"Before you add payments, logins, or collect personal data\")\n            , _react2.default.createElement('li', null, \"Any time you are not sure whether something is a risk\")\n          )\n        )\n        , _react2.default.createElement('section', { className: \"kb-section\",}\n          , _react2.default.createElement('h2', { className: \"kb-h2\",}, \"What secure-enough looks like for a solo builder\")\n          , _react2.default.createElement('p', { className: \"kb-p\",}, \"You will not make a solo app bank-grade, and you do not need to. The goal is to remove the common, avoidable risks and get a professional to check the parts that really matter.\")\n          , _react2.default.createElement('p', { className: \"kb-p\",}, \"Everything here is detection-first: it helps you notice and reduce risk. It never asks you to attack your own app, and it never claims a checklist makes you secure.\")\n        )\n        , _react2.default.createElement('section', { className: \"kb-section\",}\n          , _react2.default.createElement('h2', { className: \"kb-h2\",}, \"Guides in this hub\")\n          , _react2.default.createElement('ul', { className: \"kb-list\",}\n            , _react2.default.createElement('li', null, _react2.default.createElement('a', { className: \"kb-link\", href: \"/blog/is-your-ai-built-app-secure\",}, \"Is Your AI-Built App Secure? A Self-Audit\"), \" \" , \"— detection-first, non-destructive\")\n            , _react2.default.createElement('li', null, _react2.default.createElement('a', { className: \"kb-link\", href: \"/blog/security-mistakes-ai-puts-in-your-code\",}, \"9 Security Mistakes AI Puts in Your Code\"), \" \" , \"— how to spot them\")\n            , _react2.default.createElement('li', null, _react2.default.createElement('a', { className: \"kb-link\", href: \"/blog/never-paste-secrets-into-a-chatbot\",}, \"Never Paste Secrets Into a Chatbot\"))\n            , _react2.default.createElement('li', null, _react2.default.createElement('a', { className: \"kb-link\", href: \"/blog/does-my-app-handle-personal-data\",}, \"Does My App Handle Personal Data?\"))\n            , _react2.default.createElement('li', null, _react2.default.createElement('a', { className: \"kb-link\", href: \"/blog/security-terms-for-ai-builders\",}, \"Security Terms Every AI Builder Should Know\"))\n            , _react2.default.createElement('li', null, _react2.default.createElement('a', { className: \"kb-link\", href: \"/blog/when-to-hire-a-security-professional\",}, \"When to Hire a Security Professional\"))\n          )\n        )\n        , _react2.default.createElement('section', { className: \"kb-section\",}\n          , _react2.default.createElement('h2', { className: \"kb-h2\",}, \"Where to go next\")\n          , _react2.default.createElement('div', { className: \"kb-grid\",}\n            , _react2.default.createElement('article', { className: \"kb-card\",}\n              , _react2.default.createElement('h3', null, \"Use the self-audit checklist\")\n              , _react2.default.createElement('p', null, \"A detection-first checklist you can work through safely.\")\n              , _react2.default.createElement('a', { className: \"kb-link\", href: \"/blog/is-your-ai-built-app-secure\",}, \"Open the self-audit\")\n            )\n            , _react2.default.createElement('article', { className: \"kb-card\",}\n              , _react2.default.createElement('h3', null, \"Ship responsibly\")\n              , _react2.default.createElement('p', null, \"Privacy, payments, and policy basics for going live.\")\n              , _react2.default.createElement('a', { className: \"kb-link\", href: \"/ship-responsibly\",}, \"Go to Ship Responsibly\")\n            )\n            , _react2.default.createElement('article', { className: \"kb-card\",}\n              , _react2.default.createElement('h3', null, \"Keep it running\")\n              , _react2.default.createElement('p', null, \"Backups and updates are part of staying secure.\")\n              , _react2.default.createElement('a', { className: \"kb-link\", href: \"/maintain\",}, \"Go to Maintain\")\n            )\n          )\n        )\n        , _react2.default.createElement('section', { className: \"kb-section\",}\n          , _react2.default.createElement('h2', { className: \"kb-h2\",}, \"Start with a safe self-audit\")\n          , _react2.default.createElement('p', { className: \"kb-p\",}, \"Spot the common risks first, then get professional review for anything that touches money, logins, or personal data.\")\n          , _react2.default.createElement('div', { className: \"kb-cta-row\",}\n            , _react2.default.createElement('a', { className: \"kb-btn primary\" , href: \"/blog/is-your-ai-built-app-secure\",}, \"Do the security self-audit\")\n            , _react2.default.createElement('a', { className: \"kb-btn secondary\" , href: \"/newsletter\",}, \"Read the reading map\")\n          )\n        )\n        , _react2.default.createElement('section', { className: \"kb-section\",}\n          , _react2.default.createElement('h2', { className: \"kb-h2\",}, \"Secure FAQ\")\n          , _react2.default.createElement('div', { className: \"kb-faq\",}\n            , _react2.default.createElement('details', null\n              , _react2.default.createElement('summary', null, \"Can I make my app secure by myself?\")\n              , _react2.default.createElement('p', null, \"You can remove many common risks yourself using detection-first checklists. For payments, logins, and personal data, get an independent professional review; those are the parts most worth expert eyes.\")\n            )\n            , _react2.default.createElement('details', null\n              , _react2.default.createElement('summary', null, \"Is AI-generated code less secure?\")\n              , _react2.default.createElement('p', null, \"In one controlled study, participants given an AI coding assistant wrote significantly less secure code than those without one, and were more confident that their code was secure (\", _react2.default.createElement('a', { className: \"kb-link\", href: \"https://arxiv.org/abs/2211.03622\",}, \"Perry et al., ACM CCS 2023\"), \"). That is one study using one older model, not a universal rate, but it is why detection and review matter.\")\n            )\n            , _react2.default.createElement('details', null\n              , _react2.default.createElement('summary', null, \"What is the single most important thing?\")\n              , _react2.default.createElement('p', null, \"Keep your secrets (like API keys) out of your code and out of chatbots, and use proven providers for payments and logins instead of building your own.\")\n            )\n            , _react2.default.createElement('details', null\n              , _react2.default.createElement('summary', null, \"Does passing the self-audit mean I am secure?\")\n              , _react2.default.createElement('p', null, \"No. A self-audit reduces risk and raises your awareness; it is not a certificate. Treat a clean pass as \\\"fewer obvious problems,\\\" not \\\"safe.\\\"\")\n            )\n            , _react2.default.createElement('details', null\n              , _react2.default.createElement('summary', null, \"When should I hire a security professional?\")\n              , _react2.default.createElement('p', null, \"When you handle payments, store personal or health/finance data, suspect a breach, or simply cannot tell if something is safe. The \\\"when to hire\\\" guide gives concrete thresholds.\")\n            )\n          )\n        )\n        , _react2.default.createElement('p', { className: \"kb-disclaimer\",}, \"Kodbe is an independent publication about maintaining and owning software you built with AI or no-code tools. It is not affiliated with, endorsed by, or connected to Kodbe Inc (the Albany, GA educational nonprofit), Kodobe, Kodable, or Kodu.\")\n      )\n\n, _react2.default.createElement('style', null, \"\\n.np-kodbe{--np-paper:var(--cpuom9j-runtime-bg,#edf1eb);--np-ink:var(--cpuom9j-runtime-text,#21382e);--np-accent:var(--cpuom9j-runtime-accent-soft,#cae0b4);box-sizing:border-box;max-width:100%!important;width:100%;min-height:100vh;background:var(--np-paper)!important;color:var(--np-ink)!important;margin:0!important;padding:0 clamp(20px,5vw,72px) 72px!important;font-family:var(--cpuom9j-font-body,Arial,sans-serif)!important;font-size:17px!important;line-height:1.75!important;overflow-wrap:anywhere}\\n.np-kodbe *{box-sizing:border-box;min-width:0}.np-kodbe>*{max-width:1080px;margin-left:auto;margin-right:auto}.np-kodbe .np-topbar{display:flex;justify-content:space-between;align-items:center;gap:24px;padding:24px 0;margin-bottom:52px;border-bottom:1px solid var(--np-ink)}.np-kodbe .np-brand{font-family:var(--cpuom9j-font-heading,Georgia,serif);font-size:22px;letter-spacing:-.5px;text-decoration:none}.np-kodbe .np-topbar nav{display:flex;flex-wrap:wrap;gap:10px 22px}.np-kodbe .np-topbar nav a{display:inline-flex;align-items:center;min-height:44px;font-size:13px;text-decoration:none;border-bottom:1px solid transparent}.np-kodbe .np-topbar nav a:hover{border-bottom-color:currentColor}\\n.np-kodbe h1{font-family:Georgia,'Times New Roman',serif!important;font-weight:400!important;font-size:clamp(36px,5.2vw,66px)!important;line-height:1.08!important;letter-spacing:-1.8px!important;max-width:960px;margin-top:0!important;margin-bottom:28px!important;text-wrap:balance;color:var(--np-ink)!important}.np-kodbe h2{font-family:Georgia,'Times New Roman',serif!important;font-weight:400!important;font-size:clamp(25px,3vw,35px)!important;line-height:1.25!important;letter-spacing:-.5px!important;color:var(--np-ink)!important;margin-top:38px!important;margin-bottom:18px!important;text-wrap:balance}.np-kodbe h3{font-size:19px!important;line-height:1.4!important;color:var(--np-ink)!important;margin-top:24px!important;margin-bottom:10px!important}.np-kodbe p,.np-kodbe li{line-height:1.8!important;max-width:78ch}.np-kodbe p{margin-bottom:18px!important}.np-kodbe p,.np-kodbe li,.np-kodbe label{color:var(--np-ink)!important}.np-kodbe main,.np-kodbe article,.np-kodbe section{max-width:100%}.np-kodbe section{padding-top:8px!important;padding-bottom:24px!important;background:transparent!important}.np-kodbe section+section{border-top:1px solid color-mix(in srgb,var(--np-ink) 22%,transparent);margin-top:32px!important}.np-kodbe ul,.np-kodbe ol{padding-left:24px;max-width:78ch}.np-kodbe li{margin-bottom:10px!important}\\n.np-kodbe a{color:var(--np-ink);text-underline-offset:4px;text-decoration-thickness:1px}.np-kodbe a:hover{text-decoration:underline}.np-kodbe a:focus-visible,.np-kodbe button:focus-visible,.np-kodbe input:focus-visible,.np-kodbe select:focus-visible,.np-kodbe textarea:focus-visible,.np-kodbe summary:focus-visible{outline:3px solid var(--np-ink);outline-offset:5px}.np-kodbe button,.np-kodbe input,.np-kodbe select,.np-kodbe textarea{font:inherit;max-width:100%;min-height:44px;border-radius:3px!important}.np-kodbe button{cursor:pointer}.np-kodbe [class*=\\\"cta\\\"] a,.np-kodbe [class*=\\\"button\\\"]{min-height:44px;display:inline-flex;align-items:center;justify-content:center;padding:12px 20px!important;background:var(--np-ink)!important;color:var(--np-paper)!important;border:1px solid var(--np-ink)!important;border-radius:3px!important;text-decoration:none!important;font-size:14px!important;font-weight:600!important;white-space:normal;line-height:1.45!important}.np-kodbe details{border:1px solid color-mix(in srgb,var(--np-ink) 28%,transparent)!important;border-radius:3px!important;padding:0 18px!important;background:transparent!important;margin-bottom:12px!important}.np-kodbe summary{min-height:48px;padding:14px 0;cursor:pointer;font-weight:600;line-height:1.5}.np-kodbe details>p{padding-bottom:12px}.np-kodbe blockquote{border-left:3px solid var(--np-ink)!important;background:var(--np-accent)!important;color:var(--np-ink)!important;padding:18px 22px!important;margin:24px 0!important;max-width:78ch}.np-kodbe .np-table{width:100%;max-width:100%;overflow-x:auto;overscroll-behavior-x:contain;margin:24px 0;outline-offset:4px}.np-kodbe table{width:100%;border-collapse:collapse;font-size:15px;line-height:1.65;display:table!important;overflow:visible!important}.np-kodbe th{background:var(--np-accent)!important;color:var(--np-ink)!important;text-align:left;padding:15px!important;font-weight:600}.np-kodbe td{color:var(--np-ink)!important;background:transparent!important;padding:15px!important;border-bottom:1px solid color-mix(in srgb,var(--np-ink) 22%,transparent)!important;vertical-align:top}.np-kodbe pre{max-width:100%;overflow-x:auto;padding:20px;background:var(--np-ink)!important;color:var(--np-paper)!important;line-height:1.6;font-size:14px}.np-kodbe pre code{color:inherit!important;background:transparent!important}.np-kodbe img,.np-kodbe svg{max-width:100%;height:auto}\\n@media(max-width:680px){.np-kodbe{font-size:16px!important;padding-left:20px!important;padding-right:20px!important}.np-kodbe .np-topbar{display:block;margin-bottom:36px;padding-top:20px}.np-kodbe .np-topbar nav{margin-top:12px;gap:4px 18px}.np-kodbe h1{letter-spacing:-1px!important}.np-kodbe [style*=\\\"grid-template-columns\\\"]{grid-template-columns:minmax(0,1fr)!important}.np-kodbe [class*=\\\"cta\\\"]{flex-wrap:wrap!important;gap:12px!important}.np-kodbe .np-table table{min-width:580px}.np-kodbe th,.np-kodbe td{padding:12px!important}.np-kodbe blockquote{padding:16px!important}}\\n@media(prefers-reduced-motion:reduce){.np-kodbe *{scroll-behavior:auto!important;transition:none!important}}\\n\")\n)\n  );\n} exports.default = SecureHubPage;"}