Skip to main content

A modern Python SDK for generating dynamic JSON interfaces

Project description

JSONApp Python SDK

Note: This is the Python port of the JSONApp SDK. This repository is a monorepo containing multiple language implementations. See the root README for an overview.

A stateless backend library for building views that are sent to renderers (mobile or web). This is the Python port of the TypeScript JSONApp SDK.

Features

  • Stateless Architecture: No internal state, perfect for serverless and microservices
  • Ed25519 Signing: Secure view signing and verification using Ed25519 cryptography
  • 12 View Types: Form, Reader, ActionList, ActionGrid, QRScan, QRDisplay, Message, Card, Carousel, Timeline, Media, Map
  • Type Safety: Full type definitions using Python dataclasses and type hints
  • Validation: Built-in field and form validation
  • Security: XSS protection, URL validation, input sanitization

Installation

pip install cmsdk

Quick Start

from cmsdk import JsonApp, JsonAppConfig
from cmsdk.views import FormView

# Initialize JsonApp
config = JsonAppConfig(
    app_id="my-app",
    view_expiration_minutes=60,
)
app = JsonApp(config)

# Create a form view
form = app.create_form_view("registration", "User Registration")
form.add_text_field("name", "Full Name", is_required=True)
form.add_email_field("email", "Email", is_required=True)
form.submit_button("Register")

# Serve with signature
response = app.serve(form)
print(response.view)  # The view JSON
print(response.signature)  # Ed25519 signature

View Types

FormView

Create forms with various field types (text, email, password, select, file, GPS, etc.)

ReaderView

Display rich content with paragraphs, images, markdown, tables, code blocks, etc.

ActionListView / ActionGridView

Display lists or grids of actions

QRScanView / QRDisplayView

QR code scanning and display

MessageView

Display messages with actions

CardView

Display card-based content with stats and sections

CarouselView

Display carousel slides

TimelineView

Display chronological events

MediaView

Display audio and video playlists

MapView

Display geographic data on maps

API Parity

The Python SDK maintains API parity with the TypeScript version:

  • Same factory methods: app.create_form_view(), app.create_reader_view(), etc.
  • Same fluent API: view.add_field().set_intro().submit_button() (or set_note() for backward compatibility)
  • Same validation and security features
  • Same Ed25519 signing and verification

Examples

See examples/basic_usage.py for a complete example.

Requirements

  • Python 3.10+
  • cryptography (for Ed25519)
  • markdown (for ReaderView markdown support)
  • bleach (for HTML sanitization)

Status

✅ Core classes (BaseView, JsonApp)
✅ All 12 view types
✅ Type definitions
✅ Error handling
✅ Validation utilities
✅ Ed25519 signing/verification
✅ Examples

License

Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de détails.

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

cmsdk-1.0.1.tar.gz (39.1 kB view details)

Uploaded Source

Built Distribution

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

cmsdk-1.0.1-py3-none-any.whl (45.4 kB view details)

Uploaded Python 3

File details

Details for the file cmsdk-1.0.1.tar.gz.

File metadata

  • Download URL: cmsdk-1.0.1.tar.gz
  • Upload date:
  • Size: 39.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.12

File hashes

Hashes for cmsdk-1.0.1.tar.gz
Algorithm Hash digest
SHA256 33364c7fb756d8fd678eddca01dbd13c2c114327dd4d553f1d36a5fede1d2283
MD5 432ab4cc5dbee8426ce760b2312a85db
BLAKE2b-256 f8a211e1e738326feb9aeec003246fcef63b4b38fee307d16d87e13e5b5db81c

See more details on using hashes here.

File details

Details for the file cmsdk-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: cmsdk-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 45.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.12

File hashes

Hashes for cmsdk-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 737afc4ecca4b61e5c06bc618737adbfed543a8ee1a0fcd5da97082f4cfd83f0
MD5 2f05d0bc73660ffedd1cff9f987f40e2
BLAKE2b-256 29a5203c20bfe3228833f30b9e5ea514a2c94a51d2de6b9b53b148ce7c783bac

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