Skip to main content

Use GitHub repos as an encrypted, high-performance database

Project description

Gitnix

Turn any GitHub repository into a fast, encrypted, zero-knowledge database.

PyPI Python License: MIT

Gitnix is a Python SDK that uses GitHub repos as a database backend. All data is end-to-end encrypted client-side — GitHub never sees your plaintext data.

Install

pip install gitnix

Quick Start

import os
from gitnix import Gitnix
from gitnix.types import GitnixConfig

db = Gitnix(GitnixConfig(
    repo="your-username/my-database",
    token=os.environ["GITHUB_TOKEN"],
    password="my-secret-encryption-key",
))

async with db:
    users = db.collection("users")

    # Insert
    await users.insert({"name": "Alice", "age": 30, "email": "alice@example.com"})

    # Query (MongoDB-style)
    adults = await users.find({"age": {"$gte": 18}})

    # Update
    await users.update({"name": "Alice"}, {"$set": {"age": 31}})

    # Delete
    await users.delete({"name": "Alice"})

    # Sync encrypted data to GitHub
    await db.sync()

Features

  • Zero-Knowledge Encryption — XSalsa20-Poly1305 + Argon2id key derivation
  • MongoDB-Style Queries$eq, $gt, $in, $or, $regex, $contains, and more
  • Sub-millisecond Operations — Local-first with encrypted disk cache
  • GitHub Sync — On-demand push/pull to GitHub (encrypted blobs only)
  • Binary/Image Storage — Chunked upload/download with MIME detection
  • Transactions — Optimistic locking with conflict detection
  • Async-Native — Built on asyncio with full async/await support
  • Fully Typed — Complete type annotations, strict mypy compatible
  • Rate Limit Aware — Built-in rate limiter with queue and backpressure

Performance

Operation Avg Latency Throughput
Create record 1.2ms 813 req/s
Read single 0.98ms 1,021 req/s
List all (50 docs) 1.0ms 995 req/s
Filtered query 0.65ms 1,531 req/s
Update record 1.0ms 1,000 req/s
Delete (+ cascade) 0.66ms 1,526 req/s
Push to GitHub ~3.0s 6 API calls
Pull from GitHub ~1.2s 3 API calls

Security

Property Implementation
Algorithm XSalsa20-Poly1305 (256-bit key)
Key derivation Argon2id (memory-hard, GPU-resistant)
Per-record nonces Random 24-byte nonce per encryption
Filename obfuscation SHA-256 hashed names
Zero plaintext GitHub only receives encrypted blobs

Security audit: A+ (49/49 tests passed across 11 categories)

Who Should Use This?

✅ Solo developers, side projects, MVPs, hackathons, privacy-focused apps, students, note-taking apps, config management, small teams (< 10), IoT/edge devices.

❌ Not for: high-traffic production (1000+ concurrent users), real-time apps, complex SQL joins, high-frequency writes (100+/sec), or data > 100GB.

Query Operators

# Comparison
await users.find({"age": {"$gt": 18}})
await users.find({"status": {"$in": ["active", "pending"]}})

# Logical
await users.find({"$or": [{"city": "NYC"}, {"city": "LA"}]})

# String
await users.find({"name": {"$contains": "alice"}})
await users.find({"email": {"$regex": "^admin@"}})

# Options
await users.find(query, sort={"age": -1}, skip=0, limit=20)

Also Available

  • JavaScript/TypeScript SDK: npm install gitnixnpm
  • Full Example App: Event registration platform with admin panel, auth, and 45 E2E tests

Documentation

License

MIT — Quilonix

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

gitnix-1.1.0.tar.gz (21.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

gitnix-1.1.0-py3-none-any.whl (24.8 kB view details)

Uploaded Python 3

File details

Details for the file gitnix-1.1.0.tar.gz.

File metadata

  • Download URL: gitnix-1.1.0.tar.gz
  • Upload date:
  • Size: 21.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.13

File hashes

Hashes for gitnix-1.1.0.tar.gz
Algorithm Hash digest
SHA256 cb5584521f1b9af7f4e2656ac70fa4f50e7763cd34248c0fa8f4f5d239730d8a
MD5 8db0c2fc97292c2d913cd91952196a3b
BLAKE2b-256 03b2f20c4182cdf418016377569481f797e7869f5e3fea80764df038ebf6b1ea

See more details on using hashes here.

File details

Details for the file gitnix-1.1.0-py3-none-any.whl.

File metadata

  • Download URL: gitnix-1.1.0-py3-none-any.whl
  • Upload date:
  • Size: 24.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.13

File hashes

Hashes for gitnix-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c8c8621065daf78c30ea50dbcdad6e0ba66b4068c43a4d486990b7ec13782d96
MD5 7d9e1c6d7ed043a1453f2e5332f60e17
BLAKE2b-256 0a106a4f38e4ed8e342627f5d0ccc9e82f4dd79c54b6db9692527673b8f0d575

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page