Skip to main content

Open-source compliance scanner for African data protection laws โ€” NDPA, Ghana DPA, Kenya DPA, Rwanda Law 058, Egypt PDPL and more

Project description

Kijiji-Guard ๐Ÿ›ก๏ธ

PyPI version License Python 3.9+

The Open-Source Compliance Scanner Built for Africa

Securing Africa's next unicorns โ€” without the dollar-denominated security tax.

Kijiji-Guard is a lightweight, open-source Security-as-Code framework that automatically scans your infrastructure for compliance with African data protection regulations. No expensive foreign tools. No Checkov dependency. No complex setup. Just run a scan and know exactly where you stand.


Why Kijiji-Guard?

African startups are legally required to comply with local data protection laws โ€” but every compliance tool on the market was built for GDPR, not NDPA. Kijiji-Guard changes that.

  • African-first: Built specifically for NDPA 2023, Ghana DPA 2012, Kenya DPA 2019, Rwanda Law 058/2021, Cรดte d'Ivoire Loi 2013-450, Bรฉnin Loi 2017-20, and Egypt PDPL 2020
  • Multi-platform: Scans Terraform/IaC files, live Vercel projects, and Supabase databases โ€” not just AWS
  • Instant setup: No Checkov, no heavy dependencies. Six packages. Installs in 10 seconds.
  • Open source: Apache 2.0. Free forever for the community.
  • Real enforcement context: NDPC issued compliance notices to 1,368 Nigerian organizations in 2025. Fines reach โ‚ฆ10M or 2% annual revenue.

Supported Regulations

Country Regulation Governing Body Checks
๐Ÿ‡ณ๐Ÿ‡ฌ Nigeria NDPA 2023 + NDPC GAID 2025 NDPC 6
๐Ÿ‡ฌ๐Ÿ‡ญ Ghana Data Protection Act 2012 (Act 843) DPC 5
๐Ÿ‡ฐ๐Ÿ‡ช Kenya Data Protection Act 2019 ODPC 6
๐Ÿ‡ท๐Ÿ‡ผ Rwanda Law No.058/2021 NCSA 5
๐Ÿ‡จ๐Ÿ‡ฎ Cรดte d'Ivoire Loi nยฐ2013-450 ARTCI 5
๐Ÿ‡ง๐Ÿ‡ฏ Bรฉnin Loi nยฐ2017-20 CRIET 5
๐Ÿ‡ช๐Ÿ‡ฌ Egypt PDPL Law No.151/2020 + Exec Regs 2025 PDPC 6

Total: 38 compliance checks across 7 African countries


What It Scans

Tier 1 โ€” Infrastructure as Code Terraform (.tf files), Kubernetes YAML, CloudFormation. Point Kijiji-Guard at any IaC directory and get instant compliance findings mapped to the exact section of each law.

Tier 2 โ€” PaaS Platforms Vercel and Supabase โ€” the platforms most African startups actually use. Connect your API token and scan your live projects in seconds.

Tier 3 โ€” Live Cloud APIs (coming soon) AWS, GCP, Azure, DigitalOcean. Connect your cloud account and scan live infrastructure directly โ€” no IaC needed.


Quick Start

Install

pip install kijiji-guard

Scan a Terraform project

# Scan against Nigeria NDPA 2023
kijiji-guard scan --target ./infra --country nigeria

# Scan against all 7 African countries at once
kijiji-guard scan --target ./infra --country all

# Scan a public GitHub repo (clone first)
git clone https://github.com/terraform-aws-modules/terraform-aws-s3-bucket
kijiji-guard scan --target terraform-aws-s3-bucket --country all

Scan your Vercel project

kijiji-guard scan --target vercel --country nigeria --vercel-token YOUR_TOKEN

Scan your Supabase project

kijiji-guard scan --target supabase --country kenya --supabase-token YOUR_TOKEN

Monitor regulatory updates (KijijiWatch)

kijiji-guard watch --country nigeria
kijiji-guard watch --country all

Launch the web dashboard

# Terminal 1 โ€” API server
pip install "kijiji-guard[dashboard]"
kijiji-guard-api

# Terminal 2 โ€” Dashboard UI
cd dashboard && npm install && npm run dev
# Open: http://localhost:5173

All CLI Commands

scan โ€” Scan infrastructure for compliance

py cli/main.py scan [OPTIONS]

Options:
  --target TEXT         Path to .tf file, directory, or platform name
                        Values: file path | vercel | supabase | aws |
                                gcp | azure | digitalocean | auto
  --country TEXT        Country regulation to check against
                        Values: nigeria | ghana | kenya | rwanda |
                                cote-divoire | benin | egypt | all
                        Default: nigeria
  --output TEXT         Output format: console | json | html
                        Default: console
  --vercel-token TEXT   Vercel API token (for --target vercel)
  --supabase-token TEXT Supabase access token (for --target supabase)
  --aws-key TEXT        AWS Access Key ID (for --target aws)
  --aws-secret TEXT     AWS Secret Access Key (for --target aws)
  --aws-region TEXT     AWS region (default: af-south-1)
  --do-token TEXT       DigitalOcean API token

Examples:
  # IaC scan
  py cli/main.py scan --target sample_startup.tf --country nigeria
  py cli/main.py scan --target ./infra --country all
  py cli/main.py scan --target ./infra --country kenya --output json

  # Vercel scan
  py cli/main.py scan --target vercel --country nigeria \
    --vercel-token YOUR_TOKEN

  # Supabase scan
  py cli/main.py scan --target supabase --country ghana \
    --supabase-token YOUR_TOKEN

  # Scan a public GitHub repo (clone first)
  git clone https://github.com/terraform-aws-modules/terraform-aws-s3-bucket
  py cli/main.py scan --target terraform-aws-s3-bucket --country all

watch โ€” Monitor regulatory updates (KijijiWatch)

py cli/main.py watch [OPTIONS]

Options:
  --country TEXT   Country to monitor
                   Values: nigeria | ghana | kenya | rwanda |
                           cote-divoire | benin | egypt | all
                   Default: nigeria
  --all            Show all updates including previously seen ones
  --output TEXT    Output format: console | json
                   Default: console

Examples:
  py cli/main.py watch --country nigeria
  py cli/main.py watch --country all
  py cli/main.py watch --country egypt --output json
  py cli/main.py watch --country nigeria --all

Example Output

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  Kijiji-Guard Compliance Scan                                    โ”‚
โ”‚  Target: terraform-aws-s3-bucket | Country: All | Scanners: iac  โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
Check ID      Name                                    Result  Regulation
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
CKV_NGR_001   Data residency โ€” non-African region     FAILED  NDPA ยง41
CKV_NGR_002   No data retention lifecycle rule        FAILED  NDPA ยง24
CKV_NGR_003   S3 encryption at rest not configured    FAILED  NDPA ยง34
CKV_NGR_004   No CloudTrail โ€” breach detection        FAILED  NDPA ยง40
CKV_NGR_005   S3 bucket may allow public access       FAILED  NDPA ยง41
CKV_GHA_001   S3 encryption at rest not configured    FAILED  Ghana DPA ยง28
CKV_GHA_002   IAM policy has no wildcard actions      PASSED  Ghana DPA ยง22
CKV_KEN_003   Data outside Africa                     WARN    Kenya DPA ยง48
CKV_RWA_002   Strict data localisation violation      FAILED  Rwanda Art.50
CKV_RWA_003   No CloudTrail โ€” 48hr breach impossible  FAILED  Rwanda Art.34
CKV_EGY_002   No CloudTrail โ€” 72hr breach impossible  FAILED  Egypt PDPL Art.23
CKV_EGY_003   Potential cross-border data transfer    FAILED  Egypt PDPL Art.27
Summary: 7 passed ยท 26 failed ยท 2 warnings ยท Pass rate: 20.59%
Fix violations before your next compliance audit cycle.

KijijiWatch Output

โ•”โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•—
โ•‘  KijijiWatch โ€” Regulatory Intelligence    ๐Ÿ‡ณ๐Ÿ‡ฌ Nigeria    โ•‘
โ•‘  3 updates found | 3 new                                 โ•‘
โ•šโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
Severity  Category        Authority  Title
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
HIGH      DEADLINE        NDPC       2025 DPCAR Audit Returns Due โ€” 30 May 2026
HIGH      ENFORCEMENT     NDPC       1,368 Organizations Issued Compliance Notices
HIGH      INVESTIGATION   NDPC       NDPC Investigating Temu for NDPA Violations
HIGH: 3 items requiring immediate attention
Review these updates before your next audit cycle.

Project Structure

kijiji-guard/
โ”œโ”€โ”€ cli/                          # Python scanner engine
โ”‚   โ”œโ”€โ”€ main.py                   # CLI entry point (all commands)
โ”‚   โ”œโ”€โ”€ api_server.py             # FastAPI server for dashboard
โ”‚   โ”œโ”€โ”€ requirements.txt          # Python dependencies
โ”‚   โ”œโ”€โ”€ core/
โ”‚   โ”‚   โ”œโ”€โ”€ orchestrator.py       # Routes scans to correct adapter
โ”‚   โ”‚   โ”œโ”€โ”€ watcher.py            # KijijiWatch regulatory monitor
โ”‚   โ”‚   โ””โ”€โ”€ report.py             # Terminal, JSON, HTML output
โ”‚   โ””โ”€โ”€ adapters/
โ”‚       โ”œโ”€โ”€ iac/                  # IaC scanner (python-hcl2)
โ”‚       โ”‚   โ””โ”€โ”€ policies/         # Country policy classes
โ”‚       โ”‚       โ”œโ”€โ”€ nigeria.py    # 6 NDPA checks
โ”‚       โ”‚       โ”œโ”€โ”€ ghana.py      # 5 Ghana DPA checks
โ”‚       โ”‚       โ”œโ”€โ”€ kenya.py      # 6 Kenya DPA checks
โ”‚       โ”‚       โ”œโ”€โ”€ rwanda.py     # 5 Rwanda Law checks
โ”‚       โ”‚       โ”œโ”€โ”€ cote_divoire.py # 5 Loi 2013-450 checks
โ”‚       โ”‚       โ”œโ”€โ”€ benin.py      # 5 Loi 2017-20 checks
โ”‚       โ”‚       โ””โ”€โ”€ egypt.py      # 6 Egypt PDPL checks
โ”‚       โ”œโ”€โ”€ api/                  # Live cloud API scanners (coming soon)
โ”‚       โ”‚   โ”œโ”€โ”€ aws_adapter.py
โ”‚       โ”‚   โ”œโ”€โ”€ gcp_adapter.py
โ”‚       โ”‚   โ””โ”€โ”€ azure_adapter.py
โ”‚       โ”œโ”€โ”€ paas/                 # PaaS platform scanners
โ”‚       โ”‚   โ”œโ”€โ”€ vercel_adapter.py # 5 Vercel checks (functional)
โ”‚       โ”‚   โ””โ”€โ”€ supabase_adapter.py # 6 Supabase checks (functional)
โ”‚       โ””โ”€โ”€ watch/                # KijijiWatch country monitors
โ”‚           โ”œโ”€โ”€ nigeria.py        # NDPC + CBN + NCC
โ”‚           โ”œโ”€โ”€ ghana.py          # Ghana DPC
โ”‚           โ”œโ”€โ”€ kenya.py          # Kenya ODPC
โ”‚           โ”œโ”€โ”€ rwanda.py         # Rwanda NCSA
โ”‚           โ”œโ”€โ”€ egypt.py          # Egypt PDPC
โ”‚           โ”œโ”€โ”€ benin.py          # Bรฉnin CRIET
โ”‚           โ””โ”€โ”€ cote_divoire.py   # Cรดte d'Ivoire ARTCI
โ”œโ”€โ”€ src/                          # React + Vite web dashboard
โ”‚   โ””โ”€โ”€ components/
โ”‚       โ”œโ”€โ”€ Overview.tsx          # Compliance score + findings
โ”‚       โ”œโ”€โ”€ RunScan.tsx           # Scan form + live results
โ”‚       โ”œโ”€โ”€ Findings.tsx          # Filterable findings table
โ”‚       โ”œโ”€โ”€ Watch.tsx             # KijijiWatch alerts
โ”‚       โ”œโ”€โ”€ History.tsx           # Past scans
โ”‚       โ”œโ”€โ”€ Regulations.tsx       # Country regulation info
โ”‚       โ””โ”€โ”€ ExportReport.tsx      # Download JSON/HTML report
โ”œโ”€โ”€ terraform/                    # Reference compliant IaC templates
โ”‚   โ””โ”€โ”€ main.tf
โ”œโ”€โ”€ sample_startup.tf             # Demo non-compliant Terraform file
โ””โ”€โ”€ .env.example                  # Environment variable reference

Environment Variables

Create a .env file in the root (see .env.example):

# Vercel
VERCEL_TOKEN=your_vercel_token_here

# Supabase
SUPABASE_ACCESS_TOKEN=your_supabase_token_here

# AWS (for live API scanning โ€” coming soon)
AWS_ACCESS_KEY_ID=your_key_here
AWS_SECRET_ACCESS_KEY=your_secret_here
AWS_DEFAULT_REGION=af-south-1

# GCP
GOOGLE_APPLICATION_CREDENTIALS=path/to/service-account.json

# Azure
AZURE_SUBSCRIPTION_ID=your_subscription_id
AZURE_CLIENT_ID=your_client_id
AZURE_CLIENT_SECRET=your_client_secret

# DigitalOcean
DIGITALOCEAN_TOKEN=your_do_token_here

Roadmap

  • IaC scanning โ€” Terraform/HCL (7 countries, 38 checks)
  • PaaS scanning โ€” Vercel (5 checks) + Supabase (6 checks)
  • KijijiWatch โ€” regulatory intelligence monitor
  • Web dashboard with compliance overview + export
  • HTML auditor report export
  • CLI credential flags (--vercel-token, --supabase-token etc)
  • pip install kijiji-guard package release
  • Live AWS/GCP/Azure API scanning
  • GitHub Action for CI/CD compliance gates
  • Docker image for zero-install usage
  • South Africa POPIA support
  • Senegal + Tanzania regulations
  • French regulation summaries (Francophone West Africa)

Contributing

We welcome contributions from African developers and security researchers.

Priority areas:

  • GCP and Azure IaC policy checks
  • New country regulations (South Africa POPIA, Senegal, Tanzania)
  • PaaS adapters for Firebase, Render, Railway
  • French translations of regulation summaries

See docs/contributing.md to get started.


Built for AfricaCyberFest 2026

Kijiji-Guard was built for the AfricaCyberFest 2026 Solutions Hackathon Open Track โ€” a sprint to build open-source security tools for African and global challenges.

Track: Open Track โ€” Compliance Automation Event: Africa CyberFest 2026, Lagos, Nigeria


License

Apache 2.0 โ€” see LICENSE

Copyright (c) 2026 Kijiji-Guard Contributors


Kijiji (Swahili) โ€” "village." Security for the whole village.

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

kijiji_guard-0.1.0.tar.gz (42.2 kB view details)

Uploaded Source

Built Distribution

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

kijiji_guard-0.1.0-py3-none-any.whl (65.4 kB view details)

Uploaded Python 3

File details

Details for the file kijiji_guard-0.1.0.tar.gz.

File metadata

  • Download URL: kijiji_guard-0.1.0.tar.gz
  • Upload date:
  • Size: 42.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.3

File hashes

Hashes for kijiji_guard-0.1.0.tar.gz
Algorithm Hash digest
SHA256 d24a4a4cb03061a1b6aadca26789c3f5c7fb3896b52a6d047d2e6685523761ee
MD5 d0b3cbcd33c3488778cc8b93089372c8
BLAKE2b-256 634fa2fe447da61eb06f421eb88c38c76e88e89254c1a80ac6d1000056145857

See more details on using hashes here.

File details

Details for the file kijiji_guard-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: kijiji_guard-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 65.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.3

File hashes

Hashes for kijiji_guard-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 42ee27e70e489a2b1ff381c010aef44b954e28822a541a4370b9a1d9c318f8d1
MD5 3b6155a636ee7b6b3546cb15dd04a82c
BLAKE2b-256 01191e0c67add19173cdc833b4635a4a3fce3dcb7f720b5d74aea837359c2d3d

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