1 line
18 KiB
XML
1 line
18 KiB
XML
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentStyleType="text/css" data-diagram-type="DESCRIPTION" height="731px" preserveAspectRatio="none" style="width:749px;height:731px;background:#777777;" version="1.1" viewBox="0 0 749 731" width="749px" zoomAndPan="magnify"><title>Overall System Diagram</title><defs/><g><rect fill="#777777" height="731" style="stroke:none;stroke-width:1;" width="749" x="0" y="0"/><g class="title" data-source-line="3"><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="169.2593" x="283.235" y="24.9659">Overall System Diagram</text></g><!--entity Users--><g class="entity" data-entity="Users" data-source-line="5" data-uid="ent0002" id="entity_Users"><ellipse cx="260.5384" cy="54.0679" fill="#1A66C2" rx="8" ry="8" style="stroke:#002642;stroke-width:0.5;"/><path d="M260.5384,62.0679 L260.5384,89.0679 M247.5384,70.0679 L273.5384,70.0679 M260.5384,89.0679 L247.5384,104.0679 M260.5384,89.0679 L273.5384,104.0679" fill="none" style="stroke:#002642;stroke-width:0.5;"/><text fill="#FFFFFF" font-family="Verdana" font-size="11" lengthAdjust="spacing" textLength="33.0768" x="244" y="117.3268">USERS</text></g><!--entity ToolPublisher--><g class="entity" data-entity="ToolPublisher" data-source-line="6" data-uid="ent0003" id="entity_ToolPublisher"><ellipse cx="68.562" cy="401.5679" fill="#1A66C2" rx="8" ry="8" style="stroke:#002642;stroke-width:0.5;"/><path d="M68.562,409.5679 L68.562,436.5679 M55.562,417.5679 L81.562,417.5679 M68.562,436.5679 L55.562,451.5679 M68.562,436.5679 L81.562,451.5679" fill="none" style="stroke:#002642;stroke-width:0.5;"/><text fill="#FFFFFF" font-family="Verdana" font-size="11" lengthAdjust="spacing" textLength="73.8315" x="6" y="464.8268">Tool Publisher</text><text fill="#FFFFFF" font-family="Verdana" font-size="11" lengthAdjust="spacing" textLength="125.1241" x="6" y="479.8087">(Gitea account required)</text></g><!--entity CLI--><g class="entity" data-entity="CLI" data-source-line="8" data-uid="ent0004" id="entity_CLI"><rect fill="#2E2E2E" height="34.9819" rx="2.5" ry="2.5" style="stroke:#1B1B1B;stroke-width:0.5;" width="94.9315" x="63" y="199.0679"/><text fill="#FFFFFF" font-family="Verdana" font-size="11" lengthAdjust="spacing" textLength="74.9315" x="73" y="220.8268">smarttools CLI</text></g><g class="entity" data-entity="GMN5" data-source-line="10" data-uid="ent0006" id="entity_GMN5"><path d="M193,181.5679 L193,212.5679 L158.25,216.5679 L193,220.5679 L193,251.4955 A0,0 0 0 0 193,251.4955 L328.4322,251.4955 A0,0 0 0 0 328.4322,251.4955 L328.4322,191.5679 L318.4322,181.5679 L193,181.5679 A0,0 0 0 0 193,181.5679" fill="#1A66C2" style="stroke:#002642;stroke-width:0.5;"/><path d="M318.4322,181.5679 L318.4322,191.5679 L328.4322,191.5679 L318.4322,181.5679" fill="#1A66C2" style="stroke:#002642;stroke-width:0.5;"/><text fill="#FFFFFF" font-family="Verdana" font-size="11" lengthAdjust="spacing" textLength="83.2694" x="199" y="198.3268">- registry search</text><text fill="#FFFFFF" font-family="Verdana" font-size="11" lengthAdjust="spacing" textLength="79.7275" x="199" y="213.3087">- registry install</text><text fill="#FFFFFF" font-family="Verdana" font-size="11" lengthAdjust="spacing" textLength="87.0754" x="199" y="228.2906">- registry publish</text><text fill="#FFFFFF" font-family="Verdana" font-size="11" lengthAdjust="spacing" textLength="114.4322" x="199" y="243.2725">- registry browse (TUI)</text></g><!--entity WebUI--><g class="entity" data-entity="WebUI" data-source-line="16" data-uid="ent0008" id="entity_WebUI"><rect fill="#2E2E2E" height="34.9819" rx="2.5" ry="2.5" style="stroke:#1B1B1B;stroke-width:0.5;" width="99.3864" x="363" y="199.0679"/><text fill="#FFFFFF" font-family="Verdana" font-size="11" lengthAdjust="spacing" textLength="79.3864" x="373" y="220.8268">Web UI (future)</text></g><g class="entity" data-entity="GMN9" data-source-line="18" data-uid="ent0010" id="entity_GMN9"><path d="M497.5,189.0679 L497.5,212.5679 L462.07,216.5679 L497.5,220.5679 L497.5,244.0136 A0,0 0 0 0 497.5,244.0136 L609.0844,244.0136 A0,0 0 0 0 609.0844,244.0136 L609.0844,199.0679 L599.0844,189.0679 L497.5,189.0679 A0,0 0 0 0 497.5,189.0679" fill="#1A66C2" style="stroke:#002642;stroke-width:0.5;"/><path d="M599.0844,189.0679 L599.0844,199.0679 L609.0844,199.0679 L599.0844,189.0679" fill="#1A66C2" style="stroke:#002642;stroke-width:0.5;"/><text fill="#FFFFFF" font-family="Verdana" font-size="11" lengthAdjust="spacing" textLength="73.1165" x="503.5" y="205.8268">- Browse tools</text><text fill="#FFFFFF" font-family="Verdana" font-size="11" lengthAdjust="spacing" textLength="41.4367" x="503.5" y="220.8087">- Search</text><text fill="#FFFFFF" font-family="Verdana" font-size="11" lengthAdjust="spacing" textLength="90.5844" x="503.5" y="235.7906">- View tool details</text></g><!--entity APIServer--><g class="entity" data-entity="APIServer" data-source-line="23" data-uid="ent0012" id="entity_APIServer"><rect fill="#2E2E2E" height="59.9638" rx="2.5" ry="2.5" style="stroke:#1B1B1B;stroke-width:0.5;" width="151.6052" x="213.5" y="408.0679"/><rect fill="#2E2E2E" height="10" style="stroke:#1B1B1B;stroke-width:0.5;" width="15" x="345.1052" y="413.0679"/><rect fill="#2E2E2E" height="2" style="stroke:#1B1B1B;stroke-width:0.5;" width="4" x="343.1052" y="415.0679"/><rect fill="#2E2E2E" height="2" style="stroke:#1B1B1B;stroke-width:0.5;" width="4" x="343.1052" y="419.0679"/><text fill="#FFFFFF" font-family="Verdana" font-size="11" lengthAdjust="spacing" textLength="111.6052" x="228.5" y="439.8268">REGISTRY API SERVER</text><text fill="#FFFFFF" font-family="Verdana" font-size="11" lengthAdjust="spacing" textLength="75.0855" x="228.5" y="454.8087">(Flask/FastAPI)</text></g><g class="entity" data-entity="GMN13" data-source-line="25" data-uid="ent0014" id="entity_GMN13"><path d="M401,327.5679 L401,434.0679 L365.79,438.0679 L401,442.0679 L401,548.3325 A0,0 0 0 0 401,548.3325 L598.0318,548.3325 A0,0 0 0 0 598.0318,548.3325 L598.0318,337.5679 L588.0318,327.5679 L401,327.5679 A0,0 0 0 0 401,327.5679" fill="#1A66C2" style="stroke:#002642;stroke-width:0.5;"/><path d="M588.0318,327.5679 L588.0318,337.5679 L598.0318,337.5679 L588.0318,327.5679" fill="#1A66C2" style="stroke:#002642;stroke-width:0.5;"/><text fill="#FFFFFF" font-family="Verdana" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="28.5998" x="407" y="344.3268">Host:</text><text fill="#FFFFFF" font-family="Verdana" font-size="11" lengthAdjust="spacing" textLength="119.8222" x="438.4598" y="344.3268">registry.smarttools.dev</text><text fill="#FFFFFF" font-family="Verdana" font-size="11" lengthAdjust="spacing" textLength="161.0719" x="407" y="359.3087">(or gitea.brrd.tech/api/registry)</text><line style="stroke:#002642;stroke-width:1;" x1="402" x2="597.0318" y1="362.5317" y2="362.5317"/><text fill="#FFFFFF" font-family="Verdana" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="58.0796" x="407" y="378.2906">Endpoints:</text><text fill="#FFFFFF" font-family="Verdana" font-size="11" lengthAdjust="spacing" textLength="61.8416" x="407" y="393.2725">- GET /tools</text><text fill="#FFFFFF" font-family="Verdana" font-size="11" lengthAdjust="spacing" textLength="126.8731" x="407" y="408.2544">- GET /tools/search?q=...</text><text fill="#FFFFFF" font-family="Verdana" font-size="11" lengthAdjust="spacing" textLength="103.7512" x="407" y="423.2363">- GET /tools/{name}</text><text fill="#FFFFFF" font-family="Verdana" font-size="11" lengthAdjust="spacing" textLength="159.1358" x="407" y="438.2182">- GET /tools/{name}/download</text><text fill="#FFFFFF" font-family="Verdana" font-size="11" lengthAdjust="spacing" textLength="129.6011" x="407" y="453.2">- POST /tools (creates PR)</text><text fill="#FFFFFF" font-family="Verdana" font-size="11" lengthAdjust="spacing" textLength="90.3534" x="407" y="468.1819">- GET /categories</text><text fill="#FFFFFF" font-family="Verdana" font-size="11" lengthAdjust="spacing" textLength="61.1046" x="407" y="483.1638">- GET /stats</text><line style="stroke:#002642;stroke-width:1;" x1="402" x2="597.0318" y1="490.3868" y2="490.3868"/><text fill="#FFFFFF" font-family="Verdana" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="48.1356" x="407" y="506.1457">Internal:</text><text fill="#FFFFFF" font-family="Verdana" font-size="11" lengthAdjust="spacing" textLength="118.3922" x="407" y="521.1276">- POST /webhook/gitea</text><text fill="#FFFFFF" font-family="Verdana" font-size="11" lengthAdjust="spacing" textLength="176.0318" x="407" y="536.1095">- Sync job (pulls repo, updates DB)</text></g><!--entity DB--><g class="entity" data-entity="DB" data-source-line="42" data-uid="ent0016" id="entity_DB"><path d="M494,662.5679 C494,652.5679 546.5092,652.5679 546.5092,652.5679 C546.5092,652.5679 599.0184,652.5679 599.0184,662.5679 L599.0184,686.5498 C599.0184,696.5498 546.5092,696.5498 546.5092,696.5498 C546.5092,696.5498 494,696.5498 494,686.5498 L494,662.5679" fill="#2E2E2E" style="stroke:#1B1B1B;stroke-width:0.5;"/><path d="M494,662.5679 C494,672.5679 546.5092,672.5679 546.5092,672.5679 C546.5092,672.5679 599.0184,672.5679 599.0184,662.5679" fill="none" style="stroke:#1B1B1B;stroke-width:0.5;"/><text fill="#FFFFFF" font-family="Verdana" font-size="11" lengthAdjust="spacing" textLength="85.0184" x="504" y="688.3268">SQLite Database</text></g><g class="entity" data-entity="GMN17" data-source-line="44" data-uid="ent0018" id="entity_GMN17"><path d="M634.5,639.5679 L634.5,670.5679 L599.2,674.5679 L634.5,678.5679 L634.5,709.4955 A0,0 0 0 0 634.5,709.4955 L742.7294,709.4955 A0,0 0 0 0 742.7294,709.4955 L742.7294,649.5679 L732.7294,639.5679 L634.5,639.5679 A0,0 0 0 0 634.5,639.5679" fill="#1A66C2" style="stroke:#002642;stroke-width:0.5;"/><path d="M732.7294,639.5679 L732.7294,649.5679 L742.7294,649.5679 L732.7294,639.5679" fill="#1A66C2" style="stroke:#002642;stroke-width:0.5;"/><text fill="#FFFFFF" font-family="Verdana" font-size="11" lengthAdjust="spacing" textLength="60.5986" x="640.5" y="656.3268">- tools table</text><text fill="#FFFFFF" font-family="Verdana" font-size="11" lengthAdjust="spacing" textLength="60.3016" x="640.5" y="671.3087">- categories</text><text fill="#FFFFFF" font-family="Verdana" font-size="11" lengthAdjust="spacing" textLength="87.2294" x="640.5" y="686.2906">- download_stats</text><text fill="#FFFFFF" font-family="Verdana" font-size="11" lengthAdjust="spacing" textLength="73.9745" x="640.5" y="701.2725">- search_index</text></g><!--entity GiteaRepo--><g class="entity" data-entity="GiteaRepo" data-source-line="50" data-uid="ent0020" id="entity_GiteaRepo"><rect fill="#2E2E2E" height="59.9638" rx="2.5" ry="2.5" style="stroke:#1B1B1B;stroke-width:0.5;" width="246.9855" x="8" y="644.5679"/><rect fill="#2E2E2E" height="10" style="stroke:#1B1B1B;stroke-width:0.5;" width="15" x="234.9855" y="649.5679"/><rect fill="#2E2E2E" height="2" style="stroke:#1B1B1B;stroke-width:0.5;" width="4" x="232.9855" y="651.5679"/><rect fill="#2E2E2E" height="2" style="stroke:#1B1B1B;stroke-width:0.5;" width="4" x="232.9855" y="655.5679"/><text fill="#FFFFFF" font-family="Verdana" font-size="11" lengthAdjust="spacing" textLength="85.4034" x="23" y="676.3268">Gitea Repository</text><text fill="#FFFFFF" font-family="Verdana" font-size="11" lengthAdjust="spacing" textLength="206.9855" x="23" y="691.3087">gitea.brrd.tech/rob/SmartTools-Registry</text></g><g class="entity" data-entity="GMN21" data-source-line="52" data-uid="ent0022" id="entity_GMN21"><path d="M290.5,624.5679 L290.5,670.5679 L255.37,674.5679 L290.5,678.5679 L290.5,724.4592 A0,0 0 0 0 290.5,724.4592 L458.7449,724.4592 A0,0 0 0 0 458.7449,724.4592 L458.7449,634.5679 L448.7449,624.5679 L290.5,624.5679 A0,0 0 0 0 290.5,624.5679" fill="#1A66C2" style="stroke:#002642;stroke-width:0.5;"/><path d="M448.7449,624.5679 L448.7449,634.5679 L458.7449,634.5679 L448.7449,624.5679" fill="#1A66C2" style="stroke:#002642;stroke-width:0.5;"/><text fill="#FFFFFF" font-family="Verdana" font-size="11" lengthAdjust="spacing" textLength="33.5718" x="296.5" y="641.3268">/tools/</text><text fill="#FFFFFF" font-family="Verdana" font-size="11" lengthAdjust="spacing" textLength="91.8164" x="302.22" y="656.3087">- summarize.yaml</text><text fill="#FFFFFF" font-family="Verdana" font-size="11" lengthAdjust="spacing" textLength="80.1895" x="302.22" y="671.2906">- translate.yaml</text><text fill="#FFFFFF" font-family="Verdana" font-size="11" lengthAdjust="spacing" textLength="96.7223" x="302.22" y="686.2725">- code-review.yaml</text><text fill="#FFFFFF" font-family="Verdana" font-size="11" lengthAdjust="spacing" textLength="147.2449" x="296.5" y="701.2544">/index.json (auto-generated)</text><text fill="#FFFFFF" font-family="Verdana" font-size="11" lengthAdjust="spacing" textLength="82.4994" x="296.5" y="716.2363">/categories.json</text></g><!--link Users to CLI--><g class="link" data-entity-1="Users" data-entity-2="CLI" data-source-line="60" data-uid="lnk24" id="link_Users_CLI"><path d="M243.87,98.6479 C215.8,123.2479 163.6914,168.9323 134.0614,194.9123" fill="none" id="Users-to-CLI" style="stroke:#FFFFFF;stroke-width:1;"/><polygon fill="#FFFFFF" points="129.55,198.8679,138.9542,195.942,133.3095,195.5715,133.68,189.9268,129.55,198.8679" style="stroke:#FFFFFF;stroke-width:1;"/></g><!--link Users to WebUI--><g class="link" data-entity-1="Users" data-entity-2="WebUI" data-source-line="61" data-uid="lnk25" id="link_Users_WebUI"><path d="M277.06,98.3879 C305.37,122.8879 358.4121,168.7826 388.5621,194.8626" fill="none" id="Users-to-WebUI" style="stroke:#FFFFFF;stroke-width:1;"/><polygon fill="#FFFFFF" points="393.1,198.7879,388.9101,189.8748,389.3185,195.5168,383.6764,195.9252,393.1,198.7879" style="stroke:#FFFFFF;stroke-width:1;"/></g><!--link CLI to APIServer--><g class="link" data-entity-1="CLI" data-entity-2="APIServer" data-source-line="63" data-uid="lnk26" id="link_CLI_APIServer"><path d="M124.25,234.4279 C154.62,271.6679 223.9474,356.6886 261.9274,403.2486" fill="none" id="CLI-to-APIServer" style="stroke:#FFFFFF;stroke-width:1;"/><polygon fill="#FFFFFF" points="265.72,407.8979,263.1307,398.3955,262.5595,404.0235,256.9316,403.4523,265.72,407.8979" style="stroke:#FFFFFF;stroke-width:1;"/><text fill="#BBBBBB" font-family="Verdana" font-size="11" lengthAdjust="spacing" textLength="33.0768" x="174.5" y="294.3268">HTTPS</text></g><!--link WebUI to APIServer--><g class="link" data-entity-1="WebUI" data-entity-2="APIServer" data-source-line="64" data-uid="lnk27" id="link_WebUI_APIServer"><path d="M403.05,234.4279 C382.18,271.6679 334.8739,356.1041 308.7739,402.6641" fill="none" id="WebUI-to-APIServer" style="stroke:#FFFFFF;stroke-width:1;"/><polygon fill="#FFFFFF" points="305.84,407.8979,313.73,402.0032,308.2849,403.5364,306.7516,398.0913,305.84,407.8979" style="stroke:#FFFFFF;stroke-width:1;"/><text fill="#BBBBBB" font-family="Verdana" font-size="11" lengthAdjust="spacing" textLength="33.0768" x="376.5" y="294.3268">HTTPS</text></g><!--link APIServer to DB--><g class="link" data-entity-1="APIServer" data-entity-2="DB" data-source-line="66" data-uid="lnk28" id="link_APIServer_DB"><path d="M311.93,468.4179 C330.09,491.3479 356.93,523.4279 383.5,548.5679 C406.68,570.5079 472.3005,619.3312 512.5805,648.8512" fill="none" id="APIServer-to-DB" style="stroke:#FFFFFF;stroke-width:1;"/><polygon fill="#FFFFFF" points="517.42,652.3979,512.5252,643.8515,513.3871,649.4423,507.7963,650.3042,517.42,652.3979" style="stroke:#FFFFFF;stroke-width:1;"/><text fill="#BBBBBB" font-family="Verdana" font-size="11" lengthAdjust="spacing" textLength="64.5145" x="438.5" y="591.3268">reads/writes</text></g><!--link APIServer to GiteaRepo--><g class="link" data-entity-1="APIServer" data-entity-2="GiteaRepo" data-source-line="67" data-uid="lnk29" id="link_APIServer_GiteaRepo"><path d="M268.43,468.1679 C248.29,496.1979 217.27,539.8979 191.5,578.5679 C177,600.3179 164.402,620.2287 152.682,639.1287" fill="none" id="APIServer-to-GiteaRepo" style="stroke:#FFFFFF;stroke-width:1;"/><polygon fill="#FFFFFF" points="149.52,644.2279,157.6625,638.6872,152.155,639.9786,150.8636,634.4711,149.52,644.2279" style="stroke:#FFFFFF;stroke-width:1;"/><text fill="#BBBBBB" font-family="Verdana" font-size="11" lengthAdjust="spacing" textLength="53.3386" x="192.5" y="591.3268">syncs with</text></g><!--link GiteaRepo to APIServer--><g class="link" data-entity-1="GiteaRepo" data-entity-2="APIServer" data-source-line="70" data-uid="lnk31" id="link_GiteaRepo_APIServer"><path d="M193.34,644.4379 C214.26,631.7979 235.97,615.1179 250.5,594.5679 C277.41,556.4979 285.3356,507.6599 287.9256,474.2999" fill="none" id="GiteaRepo-to-APIServer" style="stroke:#FFFFFF;stroke-width:1;"/><polygon fill="#FFFFFF" points="288.39,468.3179,283.7054,476.9813,288.003,473.3029,291.6814,477.6005,288.39,468.3179" style="stroke:#FFFFFF;stroke-width:1;"/><text fill="#BBBBBB" font-family="Verdana" font-size="11" lengthAdjust="spacing" textLength="84.4904" x="260.5" y="591.3268">webhook events</text></g><!--link ToolPublisher to GiteaRepo--><g class="link" data-entity-1="ToolPublisher" data-entity-2="GiteaRepo" data-source-line="69" data-uid="lnk30" id="link_ToolPublisher_GiteaRepo"><path d="M59.37,483.3479 C54.75,515.2379 52.52,558.7779 65.5,594.5679 C72.33,613.3879 81.6783,626.5071 94.6883,640.2071" fill="none" id="ToolPublisher-to-GiteaRepo" style="stroke:#FFFFFF;stroke-width:1;"/><polygon fill="#FFFFFF" points="98.82,644.5579,95.523,635.2773,95.3769,640.9323,89.722,640.7862,98.82,644.5579" style="stroke:#FFFFFF;stroke-width:1;"/><text fill="#BBBBBB" font-family="Verdana" font-size="11" lengthAdjust="spacing" textLength="84.0944" x="66.5" y="591.3268">PR for new tools</text></g><!--SRC=[TLJVRzem47xtNt7Z2QIHl5TTfp5eYrIfB85EaofLJd9Dt2OsypamDkr_tyK10kdwbFYxyztttGz_S0LM21Qpp2BHE9FsDIbh5C8fLoBSRz3AieHuHmuhc2gPMra98LDdB0nMyIoA1o09LeIM3l3Ic18MTL8gAj0-wk6DSYX1fgcfjUDiFsl5AKV-PkDyz1N2OkgapZdtW2ffdMCpmTUxkNVchz36CMEL5mxCiqS0nXmqL-Ji3WYbJOjpJ6boBECSNBT9py74cYqX39Uh-KYWpg39TiRgEoQmciFmkNQrnLO3Owi-iHPhWa_Qc5w91-AEueF2hRT0XaugTkYIfgPQ6urSiK4qkvd7o-W7V5dCWOl-C8kuhDUbfDVmMf9Zk6N2Fp5QxbgFJOS3N2PNjuRSnMMON1sL1rsrWmmtx3RaLkPDuuB4sYnmc1QXNAlmS6FK21YtyMOwMnkb7VcWNjdDR0aGTg9Fpc7Reyy_FmL1yCRuHyiA_xu3XvdPwjB8pDiNz_5oRuTXQb4w95X4evFBAMEviGfFMV0qE3gXFzSEhPPbnxwDlCMaCEOrz6LeMxVJARoO18RhkkIi5jVc8zJhpAUUJaw7XZ6PIExy8Fvsnn5WkWTyfwQJNeiOQ3AqQjYnH7_k2JZeVpfgs4_yaz8P_lh_-BJx5p5NKhoXkqVTRwmrIHWt4z2i8usZVOyzKt-xkTmZtE779l6VPrHN74lznc0dgt8FEYirbQpc54nDXcEB6rw30nnw8S4B6Gr3MJippb7pC-JunH1d7VK-9uhz8yHDlVAlGdTgLr4mw8_7NO0Bk5qk5x7m3k_OH0Sr3jC9MtZICWgtbWj0FVknAEn6F2m4M-KA8SwUkJUUYmYUUTtq_Z4WqHdxhFOp2RZXrfBu1m00]--></g></svg> |