[{"data":1,"prerenderedAt":529},["ShallowReactive",2],{"navigation_docs":3,"-introduction-what-is-go":218,"-introduction-what-is-go-surround":526},[4,20,45,75,95,105,140,168,198],{"title":5,"path":6,"stem":7,"children":8,"page":19},"Introduction","\u002Fintroduction","1.introduction",[9,14],{"title":10,"path":11,"stem":12,"icon":13},"What is GO?","\u002Fintroduction\u002Fwhat-is-go","1.introduction\u002F1.what-is-go","i-lucide-info",{"title":15,"path":16,"stem":17,"icon":18},"Features","\u002Fintroduction\u002Ffeatures","1.introduction\u002F2.features","i-lucide-sparkles",false,{"title":21,"path":22,"stem":23,"children":24,"page":19},"Getting Started","\u002Fgetting-started","2.getting-started",[25,30,35,40],{"title":26,"path":27,"stem":28,"icon":29},"Installation","\u002Fgetting-started\u002Finstallation","2.getting-started\u002F1.installation","i-lucide-download",{"title":31,"path":32,"stem":33,"icon":34},"Configuration","\u002Fgetting-started\u002Fconfiguration","2.getting-started\u002F2.configuration","i-lucide-settings",{"title":36,"path":37,"stem":38,"icon":39},"First Setup","\u002Fgetting-started\u002Ffirst-setup","2.getting-started\u002F3.first-setup","i-lucide-rocket",{"title":41,"path":42,"stem":43,"icon":44},"Updating","\u002Fgetting-started\u002Fupdating","2.getting-started\u002F4.updating","i-lucide-refresh-cw",{"title":46,"icon":19,"path":47,"stem":48,"children":49,"page":19},"User Guide","\u002Fuser-guide","3.user-guide",[50,55,60,65,70],{"title":51,"path":52,"stem":53,"icon":54},"Creating a Short Link","\u002Fuser-guide\u002Fcreating-a-short-link","3.user-guide\u002F1.creating-a-short-link","i-lucide-link",{"title":56,"path":57,"stem":58,"icon":59},"Expiration","\u002Fuser-guide\u002Fexpiration","3.user-guide\u002F2.expiration","i-lucide-clock",{"title":61,"path":62,"stem":63,"icon":64},"Renewing Links","\u002Fuser-guide\u002Frenewing-links","3.user-guide\u002F3.renewing-links","i-lucide-repeat",{"title":66,"path":67,"stem":68,"icon":69},"Dashboard","\u002Fuser-guide\u002Fdashboard","3.user-guide\u002F4.dashboard","i-lucide-layout-dashboard",{"title":71,"path":72,"stem":73,"icon":74},"Analytics","\u002Fuser-guide\u002Fanalytics","3.user-guide\u002F5.analytics","i-lucide-bar-chart-3",{"title":76,"path":77,"stem":78,"children":79,"page":19},"Authentication","\u002Fauthentication","4.authentication",[80,85,90],{"title":81,"path":82,"stem":83,"icon":84},"Email Login","\u002Fauthentication\u002Femail-login","4.authentication\u002F1.email-login","i-lucide-mail",{"title":86,"path":87,"stem":88,"icon":89},"Google Login","\u002Fauthentication\u002Fgoogle-login","4.authentication\u002F2.google-login","i-lucide-globe",{"title":91,"path":92,"stem":93,"icon":94},"Firebase Setup","\u002Fauthentication\u002Ffirebase-setup","4.authentication\u002F3.firebase-setup","i-simple-icons-firebase",{"title":96,"path":97,"stem":98,"children":99,"page":19},"Captcha","\u002Fcaptcha","5.captcha",[100],{"title":101,"path":102,"stem":103,"icon":104},"Cloudflare Turnstile","\u002Fcaptcha\u002Fcloudflare-turnstile","5.captcha\u002F1.cloudflare-turnstile","i-simple-icons-cloudflare",{"title":106,"path":107,"stem":108,"children":109,"page":19},"Administration","\u002Fadministration","6.administration",[110,115,120,125,130,135],{"title":111,"path":112,"stem":113,"icon":114},"Admin Panel","\u002Fadministration\u002Fadmin-panel","6.administration\u002F1.admin-panel","i-lucide-shield",{"title":116,"path":117,"stem":118,"icon":119},"Users","\u002Fadministration\u002Fusers","6.administration\u002F2.users","i-lucide-users",{"title":121,"path":122,"stem":123,"icon":124},"Links","\u002Fadministration\u002Flinks","6.administration\u002F3.links","i-lucide-link-2",{"title":126,"path":127,"stem":128,"icon":129},"Reports","\u002Fadministration\u002Freports","6.administration\u002F4.reports","i-lucide-flag",{"title":131,"path":132,"stem":133,"icon":134},"Bans & Timeouts","\u002Fadministration\u002Fbans-and-timeouts","6.administration\u002F5.bans-and-timeouts","i-lucide-user-x",{"title":136,"path":137,"stem":138,"icon":139},"Audit Logs","\u002Fadministration\u002Faudit-logs","6.administration\u002F6.audit-logs","i-lucide-scroll",{"title":141,"path":142,"stem":143,"children":144,"page":19},"Deployment","\u002Fdeployment","7.deployment",[145,150,155,160,165],{"title":146,"path":147,"stem":148,"icon":149},"VPS Installation","\u002Fdeployment\u002Fvps-installation","7.deployment\u002F1.vps-installation","i-lucide-server",{"title":151,"path":152,"stem":153,"icon":154},"Environment Variables","\u002Fdeployment\u002Fenvironment-variables","7.deployment\u002F2.environment-variables","i-lucide-sliders",{"title":156,"path":157,"stem":158,"icon":159},"Cloudflare Tunnel","\u002Fdeployment\u002Fcloudflare-tunnel","7.deployment\u002F3.cloudflare-tunnel","i-lucide-network",{"title":161,"path":162,"stem":163,"icon":164},"Systemd","\u002Fdeployment\u002Fsystemd","7.deployment\u002F4.systemd","i-lucide-cpu",{"title":41,"path":166,"stem":167,"icon":44},"\u002Fdeployment\u002Fupdating","7.deployment\u002F5.updating",{"title":169,"path":170,"stem":171,"children":172,"page":19},"Developer","\u002Fdeveloper","8.developer",[173,178,183,188,193],{"title":174,"path":175,"stem":176,"icon":177},"Architecture","\u002Fdeveloper\u002Farchitecture","8.developer\u002F1.architecture","i-lucide-box",{"title":179,"path":180,"stem":181,"icon":182},"API Architecture","\u002Fdeveloper\u002Fapi","8.developer\u002F2.api","i-lucide-code-xml",{"title":184,"path":185,"stem":186,"icon":187},"Database","\u002Fdeveloper\u002Fdatabase","8.developer\u002F3.database","i-lucide-database",{"title":189,"path":190,"stem":191,"icon":192},"Development","\u002Fdeveloper\u002Fdevelopment","8.developer\u002F4.development","i-lucide-terminal",{"title":194,"path":195,"stem":196,"icon":197},"Building Releases","\u002Fdeveloper\u002Fbuilding-releases","8.developer\u002F5.building-releases","i-lucide-package-check",{"title":199,"path":200,"stem":201,"children":202,"page":19},"Reference","\u002Freference","9.reference",[203,208,213],{"title":204,"path":205,"stem":206,"icon":207},"Configuration Reference","\u002Freference\u002Fconfiguration","9.reference\u002F1.configuration","i-lucide-file-cog",{"title":209,"path":210,"stem":211,"icon":212},"API Reference","\u002Freference\u002Fapi-reference","9.reference\u002F2.api-reference","i-lucide-webhook",{"title":214,"path":215,"stem":216,"icon":217},"Changelog","\u002Freference\u002Fchangelog","9.reference\u002F3.changelog","i-lucide-history",{"id":219,"title":10,"body":220,"description":517,"extension":518,"links":519,"meta":520,"navigation":521,"path":11,"seo":522,"stem":12,"__hash__":525},"docs\u002F1.introduction\u002F1.what-is-go.md",{"type":221,"value":222,"toc":506},"minimark",[223,227,235,243,246,251,259,262,303,305,309,324,328,333,357,359,363,477,479,483],[224,225,10],"h1",{"id":226},"what-is-go",[228,229,230,234],"p",{},[231,232,233],"strong",{},"GO Shortener"," is a high-performance, ultra-lightweight, and fully self-contained public URL shortening service built in pure Go. Engineered specifically for resource-constrained environments—such as a small 1 GB RAM Ubuntu VPS hosting multiple services concurrently—GO compiles into a single standalone binary with zero external runtime dependencies.",[236,237,238,239,242],"tip",{},"GO operates with a runtime memory footprint of ",[231,240,241],{},"less than 0.5 MB RAM",", making it virtually unnoticeable on low-spec cloud instances.",[244,245],"hr",{},[247,248,250],"h2",{"id":249},"core-philosophy","Core Philosophy",[252,253,254],"blockquote",{},[228,255,256],{},[231,257,258],{},"\"Simple to use for normal visitors, powerful for registered users, and controllable by administrators.\"",[228,260,261],{},"GO eschews bloat, complex microservices, container orchestrators, and heavyweight database engines in favor of simplicity, reliability, and security:",[263,264,265,272,287,293],"ol",{},[266,267,268,271],"li",{},[231,269,270],{},"Zero External Dependencies",": No Docker daemon required, no Node.js runtime, no external Redis instances, and no system C library dependencies.",[266,273,274,277,278,282,283,286],{},[231,275,276],{},"Zero-Compile Deployment",": The production server never compiles code. Multi-architecture release binaries (",[279,280,281],"code",{},"linux\u002Famd64"," and ",[279,284,285],{},"linux\u002Farm64",") are built and verified automatically in the cloud via GitHub Actions.",[266,288,289,292],{},[231,290,291],{},"Privacy by Design",": Visitor IP addresses are hashed using SHA-256 with an identity salt prior to analytics aggregation. Raw IPs are never written to the SQLite database.",[266,294,295,298,299,302],{},[231,296,297],{},"Self-Contained Embedded Frontend",": HTML templates, CSS styles, client-side scripts, and assets are embedded directly into the Go executable via Go's native ",[279,300,301],{},"embed.FS",".",[244,304],{},[247,306,308],{"id":307},"why-no-custom-aliases","Why No Custom Aliases?",[228,310,311,312,315,316,319,320,323],{},"Unlike traditional URL shorteners that let visitors choose vanity aliases (such as ",[279,313,314],{},"go.arcn.online\u002Fmy-brand","), GO strictly issues ",[231,317,318],{},"cryptographically random, collision-resistant identifiers"," (e.g., ",[279,321,322],{},"go.arcn.online\u002FK8xP2q",").",[325,326,327],"warning",{},"Custom alias selection is intentionally prohibited for public users in accordance with the core design specification.",[329,330,332],"h3",{"id":331},"rationale","Rationale:",[334,335,336,342,351],"ul",{},[266,337,338,341],{},[231,339,340],{},"Prevent Vanity Squatting",": Disallows malicious users or bots from hoarding common keywords, company names, or popular terms.",[266,343,344,347,348,323],{},[231,345,346],{},"Phishing & Impersonation Mitigation",": Eliminates deceptive links designed to spoof legitimate services (e.g., ",[279,349,350],{},"go.arcn.online\u002Fpaypal-login",[266,352,353,356],{},[231,354,355],{},"Uniform Database Distribution",": Short codes are generated using cryptographically secure random bytes mapped to a URL-safe character set, ensuring uniform index distribution in SQLite.",[244,358],{},[247,360,362],{"id":361},"architecture-at-a-glance","Architecture at a Glance",[364,365,366,382],"table",{},[367,368,369],"thead",{},[370,371,372,376,379],"tr",{},[373,374,375],"th",{},"Component",[373,377,378],{},"Technology",[373,380,381],{},"Description",[383,384,385,399,413,429,441,461],"tbody",{},[370,386,387,393,396],{},[388,389,390],"td",{},[231,391,392],{},"Language & Runtime",[388,394,395],{},"Go 1.22+",[388,397,398],{},"Compiled to native machine code; sub-millisecond route handling",[370,400,401,405,410],{},[388,402,403],{},[231,404,184],{},[388,406,407],{},[279,408,409],{},"modernc.org\u002Fsqlite",[388,411,412],{},"Pure Go, CGO-free SQLite running with Write-Ahead Logging (WAL)",[370,414,415,420,426],{},[388,416,417],{},[231,418,419],{},"Frontend",[388,421,422,423,425],{},"Pure HTML\u002FJS (",[279,424,301],{},")",[388,427,428],{},"Statically compiled inside the binary; zero disk reads in production",[370,430,431,435,438],{},[388,432,433],{},[231,434,76],{},[388,436,437],{},"Dual-Engine",[388,439,440],{},"Native Email\u002FPassword (bcrypt cost 12) + Google OAuth via Firebase",[370,442,443,448,450],{},[388,444,445],{},[231,446,447],{},"Edge & Ingress",[388,449,156],{},[388,451,452,453,456,457,460],{},"Exposes local port ",[279,454,455],{},"3000"," securely via ",[279,458,459],{},"cloudflared"," without open VPS ports",[370,462,463,468,474],{},[388,464,465],{},[231,466,467],{},"Process Manager",[388,469,470,471],{},"Linux ",[279,472,473],{},"systemd",[388,475,476],{},"Automatic restarts, boot execution, and resource limits",[244,478],{},[247,480,482],{"id":481},"next-steps","Next Steps",[334,484,485,492,499],{},[266,486,487,488,302],{},"Explore the complete ",[489,490,491],"a",{"href":16},"Features Matrix",[266,493,494,495,498],{},"Follow the ",[489,496,497],{"href":27},"Installation Guide"," to install GO on your server.",[266,500,501,502,505],{},"Review the ",[489,503,504],{"href":175},"Architecture Documentation"," for internal engineering details.",{"title":507,"searchDepth":508,"depth":508,"links":509},"",2,[510,511,515,516],{"id":249,"depth":508,"text":250},{"id":307,"depth":508,"text":308,"children":512},[513],{"id":331,"depth":514,"text":332},3,{"id":361,"depth":508,"text":362},{"id":481,"depth":508,"text":482},"An overview of GO Shortener, its core philosophy, and design architecture.","md",null,{},{"icon":13},{"title":523,"description":524},"What is GO? - Overview & Philosophy","Discover GO Shortener, an ultra-lightweight, self-contained URL shortener built with pure Go.","gazDm6pzNb1YNgDATrDiTCszDdFURfMSpxTUf0suLyc",[519,527],{"title":15,"path":16,"stem":17,"description":528,"icon":18,"children":-1},"Complete feature matrix and capabilities of GO Shortener.",1788462425542]