Aquafier API
A http API for notarization and verification
Aquafier is a web-based reference implementation of Aqua Protocol v3, providing a user-friendly interface and HTTP API for digital content signing, provenance verification, and integrity validation. It demonstrates how Aqua Protocol features can be integrated into modern web applications.
Overview
Aquafier combines a Fastify backend with React frontend to deliver a complete solution for document notarization and verification. It's designed as both a production tool and a reference implementation for developers building Aqua-based applications.
Features
- Digital Content Signing: Sign documents and data with multiple signature methods
- Provenance Verification: Track and verify document history and authenticity
- Integrity Validation: Cryptographically verify document integrity
- Web Interface: User-friendly React interface for non-technical users
- HTTP API: RESTful API for programmatic access
- Multi-Party Workflows: Support for documents requiring multiple signatures
Technology Stack
Backend:
- Fastify (Node.js web framework)
- Prisma ORM
- PostgreSQL database
- Aqua JavaScript SDK (v3)
Frontend:
- React with TypeScript
- Chakra UI components
- End-to-end testing with Playwright
Hosted Instances
Production: aquafier.inblock.io
- Stable production environment
- For live document notarization and verification
Development/Testing: dev.inblock.io
- Testing environment for new features
- Use for development and experimentation
Use Cases
- Document Notarization: Notarize legal documents, contracts, and agreements
- Certificate Issuance: Issue verifiable certificates and credentials
- Multi-Party Signing: Collect signatures from multiple parties
- Audit Trail Creation: Build immutable audit trails for compliance
- Proof of Concept: Demonstrate Aqua Protocol capabilities
- API Integration: Integrate notarization into existing systems
API Access
Aquafier provides a RESTful HTTP API for programmatic access. Developers can integrate notarization and verification into their applications without building infrastructure from scratch.
Common API operations:
- Create genesis revisions
- Add signatures to existing chains
- Witness chains on blockchain
- Verify chain integrity
- Retrieve chain history
Development
Aquafier-JS is open source and can be self-hosted for custom deployments.
Requirements
- Docker and Docker Compose
- PostgreSQL database
- Node.js environment
Deployment
Deploy using Docker Compose:
1# Prepare environment file2cp deployment/.env.sample .env3 4# Start services5docker compose -f deployment/docker-compose-prod.yml up -dDeployment Options:
- Local: No proxy, exposed ports for development
- Dev: With Let's Encrypt SSL and DNS
- Prod: Production configuration with SSL
Configuration
Key environment variables:
1# Database2DATABASE_URL=postgres://user:password@host:port/database3 4# Server5HOST=0.0.0.06PORT=30007 8# Frontend/Backend URLs (for proxy)9FRONTEND_URL=https://your-domain.com10BACKEND_URL=https://api.your-domain.com11 12# Twilio (optional, for SMS verification)13TWILIO_ACCOUNT_SID=your_sid14TWILIO_AUTH_TOKEN=your_tokenArchitecture
Aquafier's modular architecture makes it suitable as a foundation for custom applications:
- API Layer: RESTful endpoints for all Aqua operations
- Service Layer: Business logic for chain management
- Data Layer: Prisma ORM with PostgreSQL
- Storage: File system or S3-compatible storage
- Backup: Automated backup with configurable retention
Protocol Version
Aqua Protocol v3: Aquafier implements the stable JavaScript SDK
For v3 technical details:
Repository
GitHub: github.com/inblockio/aquafier-js
Development Team
- Tim Bansemer - Project Manager
- Publius Dirac - Research / Developer
- Arthur Kamau - Developer
- Dalmas Nyaboga Ogembo - Developer
- Florian Zeps - DevOps
Getting Started
- Visit aquafier.inblock.io to use the hosted version
- Try the dev environment for testing
- Explore the API documentation for programmatic integration
- Check the GitHub repository for self-hosting
For building custom applications, consider using the Aqua JavaScript SDK directly or the Aqua Rust SDK for v4 features.
