A comprehensive monorepo for the SSApp (Self Sovereign Application) Registry system, featuring a backend API, frontend web application, client library, and CLI tool.
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
The registry now features a complete V1 API with advanced dependency resolution, security controls, and comprehensive validation:
- π 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
# 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# 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 dependenciesThe 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.
- π 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
# 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 stopFor detailed local registry documentation, see packages/cli/LOCAL_REGISTRY.md.
- Node.js 18+
- pnpm 8+ (recommended package manager)
- Git
# 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| 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 |
- Contributing - Development guidelines and contribution process
- Security - Security policy and vulnerability reporting
- Support - Getting help and troubleshooting
- Code of Conduct - Community guidelines
- License - MIT License
# 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# 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- Backend: Jest for unit and integration tests
- Frontend: Vitest + React Testing Library
- Client Library: Vitest for unit tests
- CLI: Vitest for unit 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- ESLint: Code linting with TypeScript support
- Prettier: Code formatting
- Husky: Git hooks for pre-commit validation
- lint-staged: Run linters on staged files only
# 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:fixThe 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
| 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 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
- 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
- API Specification - OpenAPI 3.0 specification All development guidelines, versioning strategy, commit conventions, and release automation details are now consolidated in the Contributing Guide.
- Backend - API server documentation
- Frontend - Web application documentation
- Client Library - TypeScript client docs
- CLI - Command-line tool documentation
# 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# 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- Backend:
calimero-registry/backend:latest - Frontend:
calimero-registry/frontend:latest
# Build all images
docker-compose build
# Start all services
docker-compose up
# Start specific service
docker-compose up backend
docker-compose up frontend- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Make your changes following the coding standards
- Test your changes:
pnpm quality - Commit using conventional commits:
git commit -m "feat: add amazing feature" - Push to your branch:
git push origin feature/amazing-feature - Create a Pull Request
- Follow the existing code style
- Write tests for new features
- Update documentation as needed
- Use conventional commits
- Ensure all quality checks pass
type(scope): description
[optional body]
[optional footer]
Examples:
feat(cli): add new command for listing appsfix(backend): resolve authentication issuedocs(frontend): update installation guide
This project is licensed under the MIT License - see the LICENSE file for details.
- Issues: Create an issue on GitHub
- Discussions: Use GitHub Discussions for questions
- Documentation: Check package-specific READMEs
- Build failures: Run
pnpm clean && pnpm install - Test failures: Ensure all dependencies are installed
- Linting errors: Run
pnpm quality:fix
- Repository: https://github.com/calimero-network/app-registry
- Issues: https://github.com/calimero-network/app-registry/issues
- Discussions: https://github.com/calimero-network/app-registry/discussions
- Releases: https://github.com/calimero-network/app-registry/releases
Built with β€οΈ by the Calimero Network team