1import{_ as c,C as o,c as d,o as u,j as n,G as a,ag as h,a as t,w as i}from"./chunks/framework.DWdSXOaE.js";const y=JSON.parse('{"title":"Developer Overview","description":"","frontmatter":{},"headers":[],"relativePath":"developers/index.md","filePath":"developers/index.md","lastUpdated":1767651643000}'),b={name:"developers/index.md"};function m(v,e,g,k,f,w){const r=o("PageIntro"),s=o("TechStack"),l=o("InfoBox"),p=o("LinkCards");return u(),d("div",null,[e[4]||(e[4]=n("h1",{id:"developer-overview",tabindex:"-1"},[t("Developer Overview "),n("a",{class:"header-anchor",href:"#developer-overview","aria-label":'Permalink to "Developer Overview"'},"â")],-1)),a(r,{icon:"ph:code-bold"},{default:i(()=>[...e[0]||(e[0]=[n("p",null,"Technical documentation for ZapTracker developers.",-1),n("p",null,"Learn how ZapTracker is built and how to contribute to the project.",-1)])]),_:1}),e[5]||(e[5]=n("h2",{id:"technology-stack",tabindex:"-1"},[t("Technology Stack "),n("a",{class:"header-anchor",href:"#technology-stack","aria-label":'Permalink to "Technology Stack"'},"â")],-1)),a(s,{title:"Frontend Framework",items:[{name:"Vue.js",version:"3.4",description:"Composition API",icon:"ph:brackets-curly-bold"},{name:"Vite",version:"5",description:"Build tool",icon:"ph:lightning-bold"},{name:"Tailwind CSS",version:"3",description:"Styling",icon:"ph:paint-brush-bold"}]}),a(s,{title:"Nostr & Bitcoin",items:[{name:"nostr-tools",description:"Nostr protocol implementation",icon:"ph:hash-bold"},{name:"@getalby/bitcoin-connect",description:"Wallet connection",icon:"ph:plugs-connected-bold"},{name:"@getalby/sdk",description:"Alby integration",icon:"ph:wallet-bold"}]}),a(s,{title:"UI & Visualization",items:[{name:"ECharts",description:"Charts and visualizations",icon:"ph:chart-bar-bold"},{name:"Lucide Vue",description:"Icons",icon:"ph:star-bold"},{name:"FullCalendar",description:"Calendar component",icon:"ph:calendar-bold"}]}
1),a(s,{title:"PWA",items:[{name:"vite-plugin-pwa",description:"Progressive Web App support",icon:"ph:device-mobile-bold"}]}),e[6]||(e[6]=h("",4)),a(l,{icon:"ph:cloud-slash-bold",title:"No Backend"},{default:i(()=>[...e[1]||(e[1]=[n("p",null,"ZapTracker has no server component:",-1),n("ul",null,[n("li",null,"All data in browser localStorage"),n("li",null,"Direct connection to Nostr relays"),n("li",null,"NWC for wallet communication")],-1)])]),_:1}),a(l,{icon:"ph:shield-check-bold",title:"Privacy First",variant:"success"},{default:i(()=>[...e[2]||(e[2]=[n("p",null,"User data never leaves the browser:",-1),n("ul",null,[n("li",null,"Profile data from Nostr"),n("li",null,"Preferences in localStorage"),n("li",null,"No analytics or tracking")],-1)])]),_:1}),a(l,{icon:"ph:broadcast-bold",title:"Real-Time Updates"},{default:i(()=>[...e[3]||(e[3]=[n("p",null,"Live data through:",-1),n("ul",null,[n("li",null,"WebSocket connections to relays"),n("li",null,"NWC event subscriptions"),n("li",null,"Reactive Vue state")],-1)])]),_:1}),e[7]||(e[7]=n("h2",{id:"documentation-sections",tabindex:"-1"},[t("Documentation Sections "),n("a",{class:"header-anchor",href:"#documentation-sections","aria-label":'Permalink to "Documentation Sections"'},"â")],-1)),a(p,{links:[{title:"Codebase Structure",description:"Files and folders organization",icon:"ph:folder-open-bold",href:"/developers/structure"},{title:"Components",description:"Vue component reference",icon:"ph:cube-bold",href:"/developers/components"},{title:"Composables",description:"Composition functions",icon:"ph:function-bold",href:"/developers/composables"},{title:"NIP-07",description:"Browser extension integration",icon:"ph:puzzle-piece-bold",href:"/developers/nip-07"},{title:"Nostr Wallet Connect",description:"Lightning wallet protocol",icon:"ph:wallet-bold",href:"/developers/nwc"}]}),e[8]||(e[8]=n("h2",{id:"quick-links",tabindex:"-1"},[t("Quick Links "),n("a",{class:"header-anchor",href:"#quick-links","aria-label":'Permalink to "Quick Links"'},"â")],-1)),a(p,{links:[{title:"GitHub Repository",description:"Source code",icon:"ph:github-logo-bold",href:"https://github.com/pratik227/zap_dashboard"},{title:"Contributing Guide",description:"How to contribute",icon:"ph:git-pull-request-bold",href:"/contributing/"},{title:"Development Setup",description:"Get started locally",icon:"ph:terminal-bold",href:"/contributing/setup"}]})])}const P=c(b,[["render",m]]);export{y as __pageData,P as default};
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.