Skip to content

Production-ready registry for Calimero SSApps. Serves developer-signed manifests (JCS + Ed25519), enforces SemVer immutability, and references WASM artifacts by IPFS CID. Includes a Fastify API and a mobile-first React UI. https://calimero-network.github.io/app-registry/

License

Notifications You must be signed in to change notification settings

calimero-network/app-registry

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

SSApp Registry Monorepo

CI Lint Test Coverage OpenAPI License: MIT pnpm

A comprehensive monorepo for the SSApp (Self Sovereign Application) Registry system, featuring a backend API, frontend web application, client library, and CLI tool.

πŸ—οΈ Monorepo Structure

registry/
β”œβ”€β”€ packages/
β”‚   β”œβ”€β”€ backend/          # Fastify-based API server
β”‚   β”œβ”€β”€ frontend/         # React + TypeScript web app
β”‚   β”œβ”€β”€ client-library/   # TypeScript client library
β”‚   └── cli/             # Command-line interface tool
β”œβ”€β”€ scripts/             # Build and utility scripts
β”œβ”€β”€ .github/             # GitHub Actions workflows
└── docs/               # Documentation

πŸš€ V1 API - Production Ready!

The registry now features a complete V1 API with advanced dependency resolution, security controls, and comprehensive validation:

βœ… Core Features:

  • πŸ“‹ Manifest Management - Submit, retrieve, and validate V1 manifests
  • πŸ” Advanced Search - Search by app ID, name, interfaces, and dependencies
  • πŸ”— Dependency Resolution - Automatic dependency resolution with cycle detection
  • πŸ” Security Controls - Rate limiting, size limits, and depth protection
  • ✍️ Signature Verification - Ed25519 signature validation with JCS canonicalization
  • πŸ“¦ Artifact Validation - SHA256 digest verification and URI validation

βœ… CLI Commands:

# V1 API Commands
calimero-registry v1 push manifest.json --local    # Submit manifest
calimero-registry v1 get app-id --local           # Get app versions
calimero-registry v1 get app-id version --local   # Get specific manifest
calimero-registry v1 ls --search query --local     # Search applications
calimero-registry v1 resolve app-id version --local # Resolve dependencies
calimero-registry v1 verify manifest.json         # Verify manifest locally

βœ… API Endpoints:

# V1 API Endpoints
POST   /v1/apps                    # Submit manifest
GET    /v1/apps/:id                # Get app versions
GET    /v1/apps/:id/:version       # Get specific manifest
GET    /v1/search?q=query          # Search applications
POST   /v1/resolve                 # Resolve dependencies

🏠 Local Development Registry

The CLI now includes a complete local registry for development purposes, allowing you to test app submissions and manage applications without requiring a remote server or IPFS.

Key Features

  • πŸ”„ Offline Development: Work without internet connection
  • πŸ“ File-Based Storage: JSON files instead of database
  • πŸ”§ Local Artifacts: HTTP serving instead of IPFS
  • ⚑ Fast Iteration: No network delays
  • πŸ›‘οΈ Data Isolation: Safe development environment

Quick Local Development

# Start local registry
calimero-registry local start

# Use with existing commands
calimero-registry apps list --local
calimero-registry apps submit manifest.json --local
calimero-registry health --local

# Stop local registry
calimero-registry local stop

For detailed local registry documentation, see packages/cli/LOCAL_REGISTRY.md.

πŸš€ Quick Start

Prerequisites

  • Node.js 18+
  • pnpm 8+ (recommended package manager)
  • Git

Installation

# Clone the repository
git clone https://github.com/calimero-network/app-registry.git
cd app-registry

# Install dependencies
pnpm install

# Build all packages
pnpm build

# Start development servers
pnpm dev:all

πŸ“¦ Packages

Package Description Tech Stack Status
Backend API server for SSApp registry Fastify, Node.js βœ… Production Ready
Frontend Web interface for registry React, TypeScript, Vite βœ… Production Ready
Client Library TypeScript client for API TypeScript, Axios βœ… Production Ready
CLI Command-line interface TypeScript, Commander.js βœ… Production Ready

πŸ“š Documentation

πŸ› οΈ Development Workflow

Available Scripts

# Install dependencies
pnpm install

# Build all packages
pnpm build

# Run tests across all packages
pnpm test

# Run linting across all packages
pnpm lint

# Format code with Prettier
pnpm format

# Check code quality (lint + test + format)
pnpm quality

# Fix code quality issues
pnpm quality:fix

# Start development servers
pnpm dev:all

# Start specific package in dev mode
pnpm --filter backend dev
pnpm --filter frontend dev

Package-Specific Commands

# Backend
pnpm --filter backend start
pnpm --filter backend test
pnpm --filter backend lint

# Frontend
pnpm --filter frontend dev
pnpm --filter frontend build
pnpm --filter frontend test

# Client Library
pnpm --filter client-library build
pnpm --filter client-library test

# CLI
pnpm --filter cli build
pnpm --filter cli test

πŸ§ͺ Testing

Test Coverage

  • Backend: Jest for unit and integration tests
  • Frontend: Vitest + React Testing Library
  • Client Library: Vitest for unit tests
  • CLI: Vitest for unit tests

Running Tests

# Run all tests
pnpm test

# Run tests with coverage
pnpm test:coverage

# Run tests in watch mode
pnpm test:watch

# Run tests for specific package
pnpm --filter backend test
pnpm --filter frontend test

πŸ” Code Quality

Quality Standards

  • ESLint: Code linting with TypeScript support
  • Prettier: Code formatting
  • Husky: Git hooks for pre-commit validation
  • lint-staged: Run linters on staged files only

Quality Commands

# Check code quality
pnpm quality

# Fix quality issues
pnpm quality:fix

# Format code
pnpm format

# Lint code
pnpm lint

# Lint with auto-fix
pnpm lint:fix

Pre-commit Hooks

The repository uses Husky to ensure code quality:

  • Pre-commit: Runs linting and formatting on staged files
  • Pre-push: Runs tests to ensure nothing is broken

πŸš€ CI/CD Pipeline

GitHub Actions Workflows

Workflow Trigger Purpose
CI/CD Pipeline Push to main/develop, PRs Build, test, security scan, Docker images
Semantic Release Push to main Automated versioning and releases
Basic CI Push to main/develop, PRs CI without external secrets

Automated Features

  • βœ… Automated Testing: All packages tested on every push
  • βœ… Security Scanning: Snyk vulnerability scanning
  • βœ… Docker Builds: Automated Docker image creation
  • βœ… Semantic Versioning: Automated releases based on conventional commits
  • βœ… Package Publishing: CLI and client library published to npm

Release Strategy

  • Independent Versioning: Each package has its own version
  • Automated Detection: Only packages with changes get new versions
  • Conventional Commits: Automatic release type detection
  • Dry-Run Mode: Safe testing without actual releases

πŸ“š Documentation

Core Documentation

  • API Specification - OpenAPI 3.0 specification All development guidelines, versioning strategy, commit conventions, and release automation details are now consolidated in the Contributing Guide.

Package Documentation

πŸ”§ Configuration

Environment Variables

# Backend
NODE_ENV=development
PORT=3000
IPFS_GATEWAY=https://ipfs.io/ipfs/
CORS_ORIGIN=http://localhost:5173

# Frontend
VITE_API_URL=http://localhost:3000
VITE_IPFS_GATEWAY=https://ipfs.io/ipfs/

# CI/CD
GITHUB_TOKEN=your_github_token
NPM_TOKEN=your_npm_token
DOCKER_USERNAME=your_docker_username

Development Setup

# Copy environment files
cp packages/backend/.env.example packages/backend/.env
cp packages/frontend/.env.example packages/frontend/.env

# Configure your environment variables
# Edit the .env files with your specific values

🐳 Docker

Available Images

  • Backend: calimero-registry/backend:latest
  • Frontend: calimero-registry/frontend:latest

Running with Docker

# Build all images
docker-compose build

# Start all services
docker-compose up

# Start specific service
docker-compose up backend
docker-compose up frontend

🀝 Contributing

Development Process

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature/amazing-feature
  3. Make your changes following the coding standards
  4. Test your changes: pnpm quality
  5. Commit using conventional commits: git commit -m "feat: add amazing feature"
  6. Push to your branch: git push origin feature/amazing-feature
  7. Create a Pull Request

Code Standards

  • Follow the existing code style
  • Write tests for new features
  • Update documentation as needed
  • Use conventional commits
  • Ensure all quality checks pass

Commit Message Format

type(scope): description

[optional body]

[optional footer]

Examples:

  • feat(cli): add new command for listing apps
  • fix(backend): resolve authentication issue
  • docs(frontend): update installation guide

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ†˜ Support

Getting Help

  • Issues: Create an issue on GitHub
  • Discussions: Use GitHub Discussions for questions
  • Documentation: Check package-specific READMEs

Common Issues

  • Build failures: Run pnpm clean && pnpm install
  • Test failures: Ensure all dependencies are installed
  • Linting errors: Run pnpm quality:fix

πŸ”— Links


Built with ❀️ by the Calimero Network team

About

Production-ready registry for Calimero SSApps. Serves developer-signed manifests (JCS + Ed25519), enforces SemVer immutability, and references WASM artifacts by IPFS CID. Includes a Fastify API and a mobile-first React UI. https://calimero-network.github.io/app-registry/

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •