Skip to content

Repository files navigation

GitHub stars GitHub forks License Built With

CrimeGPT Logo




Quick Start
  
Features
  
Architecture
  
API Routes
  
Modules
  
Configuration
  
Contributing




CrimeGPT is a next-generation AI-powered platform engineered for modern Law Enforcement in India. It transforms the traditional, paper-heavy crime documentation process into a streamlined, digital-first workflow driven by Retrieval-Augmented Generation (RAG), multi-model LLM routing, and a full-stack React + FastAPI architecture.

Legal Framework: Optimized for BNS 2023 (Bharatiya Nyaya Sanhita), BNSS (Bharatiya Nagarik Suraksha Sanhita), BSA (Bharatiya Sakshya Adhiniyam), and IT Act 2000

πŸš€ Core Value Proposition

Feature Traditional Method CrimeGPT Advantage
FIR Generation 2–3 hours manual drafting < 30 seconds AI-structured drafts
Legal Research Manual book lookups Instant BNS 2023 RAG Intelligence
Documents Manual typing of each form Auto-generated Chargesheets, Remand, Seizure, etc.
Evidence Physical logbooks Immutable digital chain-of-custody + SHA-256
Intelligence Manual link detection AI-driven MO pattern recognition
Interoperability Siloed systems CCTNS / BharatPol mock integration


πŸš€ Automated Setup (Recommended)

The installer handles all dependencies, Python venv, npm packages, Docker infrastructure, and database schemas:

git clone git@github.com:XploitMonk0x01/crimegpt.git
cd crimegpt
./install.sh
./start.sh

The install.sh script will:

  1. βœ… Verify prerequisites (git, docker, npm, python3, docker-compose)
  2. βœ… Prompt for Groq API key (optional β€” for LLM features)
  3. βœ… Launch PostgreSQL, Redis, and ChromaDB via Docker
  4. βœ… Set up Python virtual environment and install dependencies
  5. βœ… Install frontend npm packages
  6. βœ… Initialize database schema and seed demo data

Manual Setup

1. Start Infrastructure (PostgreSQL + Redis + ChromaDB)

docker compose up -d

2. Backend Setup

cd backend
python -m venv venv && source venv/bin/activate
pip install -r requirements.txt
cp .env.example .env
# Edit .env with your GROQ_API_KEY (get one at https://console.groq.com)
python init_db.py
python seed_demo.py
uvicorn app.server:app --host 127.0.0.1 --port 8000 --reload

3. Frontend Setup

cd frontend
npm install
npm run dev -- --host

Demo Credentials

Role Badge Number Security PIN
Admin PN-2024-ADMIN 1234
Station Head (SHO) PN-2024-SHO 1234
Investigating Officer (IO) PN-2024-IO 1234

The app will be available at http://localhost:5173.

Tip

The API docs (Swagger UI) are available at http://127.0.0.1:8000/docs when DEBUG=true.



πŸ“‹ FIR Automator

  • Natural language incident input β†’ structured AI FIR draft with NER extraction
  • Sequential FIR numbering: FIR-00001, FIR-00002, ...
  • Complainant & accused details, location, applicable BNS/IT sections
  • Persistent local storage β€” works offline; syncs when backend is available
  • Country-aware phone input with flag selector
  • Full FIR lifecycle: draft β†’ submit β†’ approve/reject

🧠 LexBot β€” Legal Intelligence Agent

  • Real-time Q&A powered by Groq LLM (multi-model routing)
  • Trained on BNS 2023, IT Act 2000 corpora via RAG pipeline
  • Hybrid retrieval: ChromaDB vector search + BM25 lexical search fused via Reciprocal Rank Fusion
  • Markdown-formatted responses with section citations
  • RAG safety controls: prompt injection stripping, PII redaction (configurable)
  • Configurable allowed domains for URL-based corpus ingestion

πŸ—„οΈ Evidence Vault

  • Secure digital evidence upload tied to specific FIRs
  • SHA-256 integrity hashing on every upload
  • Immutable chain of custody β€” append-only JSONB audit trail
  • File type detection & image gallery preview
  • Integrity verification endpoint
  • Role-restricted upload (Inspector+)

πŸ“Š Command Dashboard

  • Role-aware: IO sees personal stats; SHO/Admin see station-wide metrics
  • Live FIR counts: Total, Draft, Submitted, Approved, Rejected
  • Recent FIR activity feed with status badges
  • Pending approvals queue (SHO/Admin)
  • Audit log viewer (SHO/Admin)
  • Crime analytics & trend data

πŸ”— Case Linkage

  • AI-powered pattern detection across multiple FIRs
  • Semantic similarity scoring using vector embeddings
  • Formal case linking by Inspector+ officers
  • MO (Modus Operandi) cluster analysis
  • Find similar cases by configurable threshold (default 0.70)

πŸ“„ Document Generator

  • AI-powered generation of 7 legal document types from FIR data:
Document Type Description
chargesheet Purvani/Final Report under BNSS
medical_letter Medical Treatment Letter for victims
remand_request Police Custody Remand Request
seizure_receipt Seizure & Search Receipt (Panchanama)
court_custody_letter Court Custody Transfer Letter
accused_panchanama Accused Observation Panchanama
face_id_form Accused Face Identification Form
  • PDF export with metadata
  • Version history β€” every generation creates a snapshot
  • Multilingual document generation (English, Hindi, Gujarati)

πŸ““ Case Diary

  • Timeline-based investigation diary tied to each FIR
  • 12 entry types: complaint received, FIR registered, investigation started, witness examined, evidence seized, spot visit, arrest made, remand requested, chargesheet filed, court hearing, etc.
  • Ordered timeline with officer attribution
  • Entry deletion (Inspector+ only)

🌐 LERS Cyber Portal

  • Generate LERS-compliant law enforcement requests for:
    • Meta / Facebook β€” Emergency Disclosure, Account Preservation, Subscriber & IP Log
    • WhatsApp β€” Emergency Disclosure, Account Preservation
    • Instagram β€” Emergency Disclosure, Account Preservation
    • Telegram β€” Emergency Disclosure, Account Preservation
    • X (Twitter) β€” Emergency Disclosure, Account Preservation
  • Generates legally-formatted notice templates with:
    • Section 94 BNSS / Section 91 CrPC legal authority
    • Platform-specific SLA data
    • Reference IDs and digital attestation
  • Searchable FIR autocomplete for reference numbers
  • Live demo credentials auto-filled for demo mode

πŸ” Auth & RBAC

  • JWT-based authentication with access + refresh token rotation
  • Redis-backed session management with logout invalidation
  • 4-tier Role-Based Access Control:
Capability Constable IO SHO Admin
FIR: create / edit βœ… βœ… βœ… βœ…
FIR: approve / reject ❌ ❌ βœ… βœ…
Evidence: upload ❌ βœ… βœ… βœ…
Case: link ❌ βœ… (Inspector) βœ… βœ…
Diary: delete ❌ ❌ βœ… βœ…
Officer: register ❌ ❌ ❌ βœ…
Audit: view ❌ ❌ βœ… βœ…
RAG corpus: ingest ❌ ❌ ❌ βœ…
  • Demo bypass mode for development (no DB query for mock users)

πŸ”„ CCTNS / BharatPol Interoperability

  • Mock CCTNS National Grid FIR sync with SHA-256 payload verification
  • BharatPol criminal record lookup with deterministic mock responses
  • CCTNS Reference ID generation and sync status API
  • Audit-logged sync events

🌍 Multilingual Support

  • Speech-to-text via Groq Whisper (whisper-large-v3-turbo)
  • Translation between English ↔ Hindi ↔ Gujarati
  • Audio transcription with 25MB file limit, multiple format support
  • Configurable language for document generation

πŸ“‹ Immutable Audit Trail

  • Append-only audit log table β€” no updates or deletes
  • Tracks: LOGIN, LOGOUT, FIR_CREATE, FIR_EDIT, FIR_SUBMIT, FIR_APPROVE, FIR_REJECT, FIR_SEARCH, FIR_EXPORT_PDF, CCTNS_SYNC, DOCUMENT_GENERATE, DOCUMENT_EXPORT_PDF, DIARY_ENTRY_ADD, DIARY_ENTRY_DELETE, EVIDENCE_UPLOAD, EVIDENCE_ACCESS, EVIDENCE_VERIFY, CASE_LINK, LEGAL_QUERY, TRANSLATE
  • Each entry stores: officer, action, resource type/ID, details (JSONB), IP address, user agent, timestamp
  • Eager-loaded officer metadata (badge_no, name) for display


crimegpt/
β”œβ”€β”€ frontend/                          # React + Vite SPA
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ components/                # 11 UI Components
β”‚   β”‚   β”‚   β”œβ”€β”€ Login.jsx              # Auth entry point
β”‚   β”‚   β”‚   β”œβ”€β”€ Dashboard.jsx          # Role-based command center
β”‚   β”‚   β”‚   β”œβ”€β”€ FIRAutomator.jsx       # AI FIR drafting
β”‚   β”‚   β”‚   β”œβ”€β”€ LexBot.jsx             # Legal Q&A assistant
β”‚   β”‚   β”‚   β”œβ”€β”€ Vault.jsx              # Evidence management
β”‚   β”‚   β”‚   β”œβ”€β”€ CaseLinkage.jsx        # Cross-case pattern analysis
β”‚   β”‚   β”‚   β”œβ”€β”€ CaseDiary.jsx          # Investigation timeline
β”‚   β”‚   β”‚   β”œβ”€β”€ DocumentGenerator.jsx  # Legal doc auto-generation
β”‚   β”‚   β”‚   β”œβ”€β”€ LERSPortal.jsx         # LERS cyber request platform
β”‚   β”‚   β”‚   β”œβ”€β”€ Sidebar.jsx            # RBAC-aware navigation
β”‚   β”‚   β”‚   └── UserSettings.jsx       # Profile & preferences
β”‚   β”‚   β”œβ”€β”€ services/
β”‚   β”‚   β”‚   └── api.js                 # Axios service layer (auth, fir,
β”‚   β”‚   β”‚                               #   evidence, legal, nlp, docs,
β”‚   β”‚   β”‚                               #   diary, search, cctns, lers)
β”‚   β”‚   └── store/
β”‚   β”‚       β”œβ”€β”€ authStore.js           # Zustand auth state
β”‚   β”‚       └── firStore.js            # Zustand FIR state + localStorage
β”‚   β”œβ”€β”€ package.json
β”‚   └── vite.config.js
β”‚
β”œβ”€β”€ backend/                           # FastAPI Python API
β”‚   β”œβ”€β”€ app/
β”‚   β”‚   β”œβ”€β”€ routes/                    # 12 API routers
β”‚   β”‚   β”‚   β”œβ”€β”€ authRoutes.py          # POST /login, /refresh, /logout, /register
β”‚   β”‚   β”‚   β”œβ”€β”€ firRoutes.py           # POST /generate, /submit, PATCH /{id}/edit, ...
β”‚   β”‚   β”‚   β”œβ”€β”€ legalRoutes.py         # POST /query, GET /sections/search, /corpus/*
β”‚   β”‚   β”‚   β”œβ”€β”€ evidenceRoutes.py      # POST /upload, GET /fir/{id}, /{id}/custody...
β”‚   β”‚   β”‚   β”œβ”€β”€ caseRoutes.py          # GET /similar/{id}, POST /link, GET /clusters
β”‚   β”‚   β”‚   β”œβ”€β”€ nlpRoutes.py           # POST /transcribe, /translate, GET /languages
β”‚   β”‚   β”‚   β”œβ”€β”€ dashboardRoutes.py     # GET /officer, /inspector, /audit-logs, /analytics
β”‚   β”‚   β”‚   β”œβ”€β”€ documentRoutes.py      # GET /types, POST /generate, /export-pdf, /versions
β”‚   β”‚   β”‚   β”œβ”€β”€ caseDiaryRoutes.py     # GET /types, POST /{firId}/entry, DELETE /entry/{id}
β”‚   β”‚   β”‚   β”œβ”€β”€ searchRoutes.py        # GET /search?q=...
β”‚   β”‚   β”‚   β”œβ”€β”€ cctnsRoutes.py         # POST /sync-fir/{id}, GET /verify-person, /status/{id}
β”‚   β”‚   β”‚   └── lersRoutes.py          # POST /generate, GET /platforms, /request-types
β”‚   β”‚   β”œβ”€β”€ controllers/              # Request/response orchestration
β”‚   β”‚   β”œβ”€β”€ services/                 # Business logic (14 services)
β”‚   β”‚   β”œβ”€β”€ models/                   # SQLAlchemy ORM (7 models)
β”‚   β”‚   β”œβ”€β”€ schemas/                  # Pydantic validation
β”‚   β”‚   β”œβ”€β”€ middleware/               # Auth, RBAC, error handler, rate limiter
β”‚   β”‚   β”œβ”€β”€ config/                   # Pydantic Settings (env-based)
β”‚   β”‚   β”œβ”€β”€ types/                    # Enums, response types
β”‚   β”‚   β”œβ”€β”€ utils/                    # JWT, hashing, hybrid_retrieval, text_extraction
β”‚   β”‚   └── main.py                   # App factory
β”‚   β”œβ”€β”€ corpus/                       # Legal corpus for RAG ingestion
β”‚   β”‚   β”œβ”€β”€ bns_2023/                 # Bharatiya Nyaya Sanhita 2023
β”‚   β”‚   └── it_act_2000/              # Information Technology Act 2000
β”‚   β”œβ”€β”€ init_db.py                    # DB schema initializer
β”‚   β”œβ”€β”€ seed_demo.py                  # Demo data seeder
β”‚   └── requirements.txt
β”‚
β”œβ”€β”€ docker-compose.yml                # PostgreSQL, Redis, ChromaDB
β”œβ”€β”€ install.sh                        # Automated setup & dependency installer
β”œβ”€β”€ start.sh                          # Application runtime launcher
β”œβ”€β”€ docs/                             # Documentation
β”‚   β”œβ”€β”€ day3/execution-plan.md        # Day 3 execution pack
β”‚   β”œβ”€β”€ demo-checklist.md             # Demo walkthrough checklist
β”‚   β”œβ”€β”€ document-compliance-matrix.md # PS document mapping
β”‚   β”œβ”€β”€ eval/legal-benchmark.json     # Legal evaluation benchmark
β”‚   └── samples/                      # 7 document sample outputs
└── README.md

Stack

Layer Technology
Frontend React 19, Vite 8, Tailwind CSS 4, Framer Motion
State Zustand + localStorage (offline FIR persistence)
Backend FastAPI, Python 3.11+ (supports 3.13)
Database PostgreSQL 15 (Docker)
Cache Redis 7 (Docker)
Vector Store ChromaDB (Docker)
LLM Provider Groq API (Llama 3.3 70B / Llama 3.1 8B)
LLM Local Ollama (Mistral 7B)
STT Groq Whisper (whisper-large-v3-turbo)
Auth JWT (access + refresh) + Redis session management
Search Hybrid BM25 + ChromaDB vector (Reciprocal Rank Fusion)

Data Models

Model Table Key Fields
Officer officers badge_no, role (constable/inspector/station_head/admin), station_id
FIR firs fir_no, complainant (JSONB), accused (JSONB), sections (TEXT[]), status
Evidence evidence fir_id, sha256_hash, chain_of_custody (JSONB[]), metadata_json
CaseLink case_links fir_id_a, fir_id_b, similarity_score, link_reason
AuditLog audit_logs action, resource_type, resource_id, details (JSONB), ip_address
CaseDiaryEntry case_diary_entries fir_id, entry_type, title, description, entry_date
DocumentVersion document_versions fir_id, document_type, version_no, content, metadata

FIR Lifecycle

DRAFT β†’ SUBMITTED β†’ APPROVED
                ↓
            REJECTED


All routes are mounted under /api/v1 and require JWT authentication (except /health).

Authentication (/api/v1/auth)

Method Endpoint Description Access
POST /login Authenticate with badge_no + pin Public (rate-limited)
POST /refresh Rotate refresh token Public (rate-limited)
POST /logout Invalidate session Authenticated
GET /me Current officer profile Authenticated
POST /register Register new officer Admin/SHO

FIR Management (/api/v1/fir)

Method Endpoint Description
POST /generate AI draft from incident narrative
POST /submit Submit FIR with full data
GET /list List FIRs (filterable by status, paginated)
GET /{id} Get FIR by ID
PATCH /{id}/edit Edit draft FIR
POST /{id}/review Approve/reject FIR (SHO/Admin)

Legal Intelligence (/api/v1/legal)

Method Endpoint Description
POST /query RAG-powered legal Q&A
GET /sections/search Search legal sections by keyword
POST /corpus/ingest Ingest corpus into vector store (Admin)
POST /corpus/ingest-urls Ingest URLs into vector store (Admin)
GET /corpus/stats Vector store statistics

Evidence Management (/api/v1/evidence)

Method Endpoint Description
POST /upload Upload evidence file (Inspector+)
GET /fir/{fir_id} List evidence for a FIR
GET /{id}/download Download evidence file
GET /{id}/custody Get custody chain
GET /{id}/verify Verify SHA-256 integrity

Case Linkage (/api/v1/cases)

Method Endpoint Description
GET /similar/{fir_id} Find semantically similar cases
POST /link Formally link two cases (Inspector+)
GET /clusters MO cluster analysis

NLP & Translation (/api/v1/nlp)

Method Endpoint Description
POST /transcribe Speech-to-text (Groq Whisper)
POST /translate Translate text (en/hi/gu)
GET /languages List supported languages

Dashboard (/api/v1/dashboard)

Method Endpoint Description Access
GET /officer Personal dashboard Authenticated
GET /inspector Station-wide dashboard Inspector+
GET /audit-logs Immutable audit trail SHO/Admin
GET /analytics Crime analytics Authenticated

Document Generation (/api/v1/documents)

Method Endpoint Description
GET /types List document types
POST /generate Generate document from FIR data
POST /export-pdf Export as downloadable PDF
GET /{fir_id}/versions List document versions
GET /versions/{id} Get specific version

Case Diary (/api/v1/diary)

Method Endpoint Description
GET /types List entry types
POST /{fir_id}/entry Add diary entry
GET /{fir_id} Get full case diary
DELETE /entry/{id} Delete entry (Inspector+)

Search (/api/v1/search)

Method Endpoint Description
GET / Full-text FIR search

CCTNS / BharatPol (/api/v1/cctns)

Method Endpoint Description
POST /sync-fir/{fir_id} Sync FIR to CCTNS national grid
GET /verify-person BharatPol criminal record lookup
GET /status/{fir_id} CCTNS sync status

LERS Cyber Portal (/api/v1/lers)

Method Endpoint Description
POST /generate Generate LERS notice
GET /platforms List supported platforms
GET /request-types List request types

Health (/)

Method Endpoint Description
GET /health Service health check


Command Automator LexBot Vault Linkage Documents LERS

Command Dashboard

Role-aware operational overview. IOs see their own FIRs and case diary summaries. SHOs and Admins get station-wide metrics, pending approvals, recent FIR activity across all officers, audit logs, and crime trend analytics.

FIR Automator

Paste or speak an incident narrative. The AI fills in structured fields β€” complainant details, accused info, incident location, applicable BNS/IT sections β€” and generates a formatted FIR. Save it and it immediately appears in the dashboard. Full lifecycle: draft β†’ submit (to SHO) β†’ approve/reject.

LexBot

Type any legal question in plain English (or Hindi/Gujarati). LexBot queries the BNS 2023 and IT Act 2000 corpora via hybrid BM25 + ChromaDB vector search, then generates section-accurate, cited answers. Safety controls strip prompt injection attempts.

Evidence Vault

Upload digital evidence files linked to specific FIRs. Each file is SHA-256 hashed on upload. Every access is logged in an immutable chain-of-custody. View uploaded images in a gallery, verify integrity, and track custody history.

Case Linkage

AI-powered pattern detection across the FIR database. The system identifies semantically similar cases using vector embeddings, scores them, and presents potential links. Inspector+ officers can formally link cases and view MO clusters.

Document Generator

AI auto-generates 7 types of legal documents β€” Chargesheet, Medical Letter, Remand Request, Seizure Receipt, Court Custody Letter, Accused Panchanama, and Face ID Form β€” populated from FIR data. Supports PDF export with version history snapshots.

Case Diary

Timeline-based digital investigation diary. Officers log each investigative action (complaint, spot visit, witness exam, arrest, etc.) in chronological order, building a complete case history from FIR to chargesheet.

LERS Cyber Portal

Generate Law Enforcement Request System (LERS) compliant legal notices for Meta, WhatsApp, Instagram, Telegram, and X. Supports Emergency Disclosure, Account Preservation, and Subscriber & IP Log requests under Section 94 BNSS / Section 91 CrPC.



Backend (backend/.env)

# Application
APP_NAME=CrimeGPT
APP_VERSION=0.1.0
DEBUG=true
API_PREFIX=/api/v1

# PostgreSQL (Docker: host port 5433 β†’ container 5432)
DATABASE_URL=postgresql+asyncpg://crimegpt:crimegpt_pass@localhost:5433/crimegpt_db

# Redis
REDIS_URL=redis://localhost:6379/0

# JWT Auth
JWT_SECRET=change-me-to-a-real-secret-in-production
JWT_EXPIRY_HOURS=8
REFRESH_TOKEN_EXPIRY_DAYS=7

# LLM Provider
GROQ_API_KEY=your_groq_api_key_here

# Multi-model routing β€” each task uses the optimal model
GROQ_MODEL_PRIMARY=meta-llama/llama-4-scout-17b-16e-instruct  # FIR drafting, legal Q&A
GROQ_MODEL_FAST=llama-3.1-8b-instant                          # NER, classification
GROQ_MODEL_FALLBACK=llama-3.3-70b-versatile                   # Complex legal reasoning
GROQ_MODEL_WHISPER=whisper-large-v3-turbo                      # Speech-to-text

# Ollama (local fallback, used when LLM_MODE=local)
OLLAMA_BASE_URL=http://ollama:11434
OLLAMA_MODEL=mistral:7b-instruct

# ChromaDB
CHROMA_HOST=localhost
CHROMA_PORT=8001

# RAG Ingestion
RAG_ALLOWED_DOMAINS=[]
RAG_STRIP_PROMPT_INJECTION=true
RAG_REDACT_PII=false

# Sentry (optional)
SENTRY_DSN=
SENTRY_TRACES_SAMPLE_RATE=1.0
SENTRY_ENVIRONMENT=development

# Evidence Storage
EVIDENCE_STORAGE_PATH=./storage/evidence
EVIDENCE_MAX_FILE_SIZE_MB=50

Important

Never commit your .env file. It is already listed in .gitignore.

Tip

Get a free Groq API key at console.groq.com. The free tier supports up to 14,400 requests/day.

Frontend (frontend/.env)

VITE_API_BASE_URL=http://localhost:8000/api/v1

Docker Compose (docker-compose.yml)

Service Image Host Port Container Port Purpose
db postgres:15-alpine 5433 5432 Main database
redis redis:7-alpine 6379 6379 Session cache
chromadb chromadb/chroma:latest 8001 8000 Vector store

RAG Legal Corpus

Place legal text files in backend/corpus/:

corpus/
β”œβ”€β”€ bns_2023/          # Bharatiya Nyaya Sanhita 2023 (replaces IPC)
β”œβ”€β”€ it_act_2000/       # Information Technology Act 2000
└── pocso/             # POCSO Act

Ingest via admin API:

curl -X POST http://localhost:8000/api/v1/legal/corpus/ingest \
  -H "Authorization: Bearer <admin_jwt>" \
  -H "Content-Type: application/json"


Contributions are welcome! Here's how to get involved:

  1. Fork the repository
  2. Create a feature branch: git checkout -b feat/your-feature
  3. Commit your changes: git commit -m "feat: add your feature"
  4. Push to your branch: git push origin feat/your-feature
  5. Open a Pull Request

Note

Please keep PRs focused β€” one feature or fix per PR makes review much easier.

Development Setup

# Backend dev (with hot reload)
cd backend && source venv/bin/activate
uvicorn app.server:app --host 127.0.0.1 --port 8000 --reload

# Frontend dev (with HMR)
cd frontend && npm run dev -- --host

Code Guidelines

  • Backend: Clean architecture β€” routes β†’ controllers β†’ services β†’ repositories. Routes contain zero business logic.
  • Frontend: Components in /components, API calls in /services/api.js, state in /store/.
  • Models: Async SQLAlchemy 2.0 with async def and await throughout.
  • Config: All settings loaded from environment via Pydantic BaseSettings. Never use os.environ directly.
  • Audit: All critical actions logged to the immutable audit_logs table.

Stargazers over time


Built with ❀️ for the Kanad S.H.I.E.L.D. Hackathon 2026
Last updated: July 2026
Empowering Indian Law Enforcement with AI, RAG & BNS 2023

About

AI powered crime documentation legal intelligence platform

Topics

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages