<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>g3 documentation :: g3</title><link>https://g3.munchbox.cc/docs/index.html</link><description>Guides, architecture, and reference for the g3 S3-to-Google storage gateway. Architecture Data flow from S3 clients through g3 to Google Drive and Gmail, with storage model and API call budget.
README Full project documentation including setup, configuration, API coverage, and usage.
Changelog Release history and version notes.</description><generator>Hugo</generator><language>en-us</language><atom:link href="https://g3.munchbox.cc/docs/index.xml" rel="self" type="application/rss+xml"/><item><title>Architecture</title><link>https://g3.munchbox.cc/docs/architecture/index.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://g3.munchbox.cc/docs/architecture/index.html</guid><description>Data flow from S3 clients through the g3 gateway into Google Drive and Gmail
flowchart TD CLIENT["S3 Clients"] AUTH["SigV4 Auth"] ROUTER["HTTP Router"] PUT["PutObject"] GET["GetObject"] HEAD["HeadObject"] LIST["ListObjects"] MULTI["Multipart Store"] SQLITE["Metadata Index"] DRIVE["Google Drive API"] GMAIL["Gmail API"] DRIVESTORE["Drive Files"] GMAILSTORE["Gmail Emails"] METRICS["Prometheus"] TRACING["Tempo"] CLIENT --&gt;|"S3 API requests"| AUTH AUTH --&gt;|"bucket resolved"| ROUTER ROUTER --&gt; PUT ROUTER --&gt; GET ROUTER --&gt; HEAD ROUTER --&gt; LIST ROUTER --&gt; MULTI MULTI --&gt;|"stream parts"| PUT PUT --&gt;|"upload data"| DRIVE PUT --&gt;|"insert metadata email"| GMAIL PUT --&gt;|"record"| SQLITE GET --&gt;|"lookup file ID"| SQLITE GET --&gt;|"download data"| DRIVE HEAD --&gt;|"local query"| SQLITE LIST --&gt;|"prefix query"| SQLITE DRIVE --&gt; DRIVESTORE GMAIL --&gt; GMAILSTORE ROUTER --&gt;|"/metrics"| METRICS ROUTER --&gt;|"OTLP gRPC"| TRACING classDef client fill:#172554,stroke:#60a5fa,color:#dbeafe classDef server fill:#1e293b,stroke:#334155,color:#e2e8f0 classDef google fill:#132a1f,stroke:#22c55e,color:#dcfce7 classDef local fill:#1e293b,stroke:#60a5fa,color:#dbeafe classDef obs fill:#2d2513,stroke:#f97316,color:#fef3c7 class CLIENT client class AUTH,ROUTER,PUT,GET,HEAD,LIST,MULTI server class DRIVE,GMAIL,DRIVESTORE,GMAILSTORE google class SQLITE local class METRICS,TRACING obs Storage Model Object Data (Google Drive) Object data is stored as individual files in a root Drive folder (s3/ by default). There is no file size limit – Drive supports up to 5TB per file, eliminating the need for chunking. Each file is named bucket/key for identification.</description></item><item><title>README</title><link>https://g3.munchbox.cc/docs/readme/index.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://g3.munchbox.cc/docs/readme/index.html</guid><description>An S3-compatible HTTP gateway that uses Gmail and Google Drive as the storage backend.
Object data is stored in Google Drive files. Gmail emails serve as metadata pointers with JSON in the body containing the Drive file ID, ETag, size, and user metadata. A local SQLite index eliminates API calls for metadata-only operations. Buckets map to Gmail labels. Designed for write-once/read-rarely workloads like offsite backups, where Google’s 15 GB of free storage becomes a durable, API-accessible backup target.</description></item><item><title>Changelog</title><link>https://g3.munchbox.cc/docs/changelog/index.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://g3.munchbox.cc/docs/changelog/index.html</guid><description>Changelog All notable changes to this project are documented in this file.
[0.2.11] - 2026-04-01 Other don’t double-prefix v in release tag commit changelog.gz and use lint action in release preflight [0.2.11] - 2026-04-01 Other golangci-lint update [0.2.10] - 2026-04-01 Added add release workflow, changelog, and Debian packaging (#25) add project website, LICENSE, and README badges (#23) add codecov:ignore to handler functions requiring live backend add auth and SigV4 unit tests for coverage add multipart store unit tests add codecov:ignore annotations for untestable paths add unit tests, CI pipeline, and contributing guide (#6) add chunked storage for large objects (#5) add SigV4 auth, server routing, and helpers (#2) add style guide adapted for g3 Other exclude web build artifacts from git ensure ListObjects correctly handles chunked objects (#17) comprehensive README and CONTRIBUTING rewrite use bytes.Equal instead of string comparison per gocritic S3 compatibility issues from code review (#20) implement multipart upload support (#16) upgrade golangci-lint-action to v7 for lint v2 support handle errcheck warnings in auth callback handler store metadata as email body text, use format=full for HeadObject rewrite auth to use authorization code flow (#14) config-driven OAuth2 with device code auth flow (#12) resolve golangci-lint errors wire S3 handlers to Gmail backend (#4) complete core scaffold with build tooling (#1) initial scaffold for g3 - S3-compatible gateway backed by Gmail</description></item></channel></rss>