Minty is a production-ready Web3 NFT platform built on the Stellar blockchain using Soroban smart contracts. Users can mint NFTs as proofs of participation, achievements, or community membership, and use them as verifiable access tokens across the Web3 ecosystem.
β¨ Mint NFTs - Create unique NFTs with custom metadata stored on IPFS
π Wallet Integration - Seamless Freighter wallet connection
π¨ NFT Gallery - View all your minted NFTs in a beautiful gallery
π Access Proofs - Use NFTs as verifiable credentials across dApps
β‘ Stellar Blockchain - Fast, low-cost transactions on Stellar
π§ͺ Testnet Ready - Full testnet deployment for safe testing
graph TB
subgraph "Frontend (Next.js 14)"
UI[User Interface]
Wallet[Wallet Integration]
API[API Routes]
end
subgraph "Blockchain Layer"
NFT[MintyNFT Contract]
Access[AccessProof Contract]
Stellar[Stellar Testnet]
end
subgraph "Storage Layer"
IPFS[IPFS/Pinata]
end
UI --> Wallet
Wallet --> NFT
UI --> API
API --> IPFS
NFT --> Stellar
Access --> NFT
Access --> Stellar
- Framework: Next.js 14 (App Router)
- Styling: TailwindCSS
- State Management: Zustand
- Data Fetching: TanStack Query
- Wallet: Freighter SDK
- Blockchain: Stellar SDK, Soroban RPC
- Language: Rust
- Framework: Soroban SDK
- Blockchain: Stellar (Soroban)
- Metadata: IPFS (Pinata)
- Images: IPFS (Pinata)
- CI/CD: GitHub Actions
- Frontend Hosting: Vercel
- Version Control: Git
minty/
βββ frontend/ # Next.js 14 application
β βββ app/ # App Router pages
β βββ components/ # React components
β βββ hooks/ # Custom React hooks
β βββ services/ # Business logic
β βββ utils/ # Utility functions
βββ contracts/ # Soroban smart contracts
β βββ minty_nft/ # Main NFT contract
β βββ access_proof/ # Access verification contract
β βββ shared/ # Shared utilities
βββ scripts/ # Deployment & utility scripts
βββ tests/ # Integration tests
βββ docs/ # Documentation
βββ .github/workflows/ # CI/CD pipelines
- Node.js 18+ and npm
- Rust 1.70+ and Cargo
- Soroban CLI (installation guide)
- Freighter Wallet (Chrome extension)
- Pinata Account (for IPFS) - Sign up
- Clone the repository
git clone https://github.com/jrcity/minty.git
cd minty- Install dependencies
npm install
cd frontend && npm install- Setup environment variables
cp .env.example .env.local
# Edit .env.local with your configuration- Build smart contracts
cd contracts
cargo build --target wasm32-unknown-unknown --release- Deploy contracts to testnet
./scripts/deploy-contracts.sh- Start the development server
cd frontend
npm run devVisit http://localhost:3000 π
cd contracts
cargo test --allcd frontend
npm testnpm run lint# Build contracts
cd contracts
./build.sh
# Build frontend
cd frontend
npm run buildThe main NFT contract handles minting, ownership, and metadata management.
Key Functions:
initialize(admin: Address)- Initialize contractmint(to: Address, metadata_cid: String) -> u64- Mint new NFTbalance_of(owner: Address) -> u32- Get NFT balanceowner_of(token_id: u64) -> Address- Get token ownertoken_uri(token_id: u64) -> String- Get metadata CID
See Smart Contracts Documentation for full API reference.
Verifies NFT ownership and generates access proofs for external dApps.
Key Functions:
verify_nft(user: Address, nft_contract: Address, token_id: u64) -> boolget_nft_balance(user: Address, nft_contract: Address) -> u32generate_access_proof(user: Address, nft_contract: Address) -> Proof
- Fund your account
./scripts/fund-account.sh YOUR_PUBLIC_KEY- Deploy contracts
./scripts/deploy-contracts.sh-
Update contract IDs in
.env.local -
Deploy frontend to Vercel
cd frontend
vercel deploySee Deployment Guide for detailed instructions.
- Architecture Overview
- Smart Contracts
- Frontend Flow
- Wallet Integration
- IPFS Metadata
- Contributing Guide
Minty includes comprehensive test coverage:
- Smart Contract Tests: Rust unit tests for all contract logic
- Frontend Unit Tests: React Testing Library for components
- Integration Tests: E2E tests for complete user flows
# Run all tests
npm test
# Run contract tests only
cd contracts && cargo test
# Run frontend tests only
cd frontend && npm test- β Input sanitization on all user inputs
- β Rate limiting on API endpoints
- β Wallet signature verification
- β Contract-level access control
- β Testnet isolation for safe testing
Security Audit: Community review welcome! See SECURITY.md
We welcome contributions! Please see our Contributing Guide for details.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- π§ Email: support@minty.com
- π¬ Discord: Join our community
- π¦ Twitter: @MintyNFT
- π Docs: docs.minty.com
Built with β€οΈ on Stellar
