NFTopia is a revolutionary decentralized platform for NFT storage, management, and trading built on the Stellar blockchain. It empowers creators and collectors to securely mint, store, showcase, and trade unique digital assets directly on-chain, leveraging Stellar's fast, low-cost transactions and Soroban smart contracts for scalability and security. By integrating seamless wallet connections and a user-friendly interface, NFTopia eliminates intermediaries, ensuring transparency, immutability, and global accessibility for NFTs.
Designed for artists, developers, and enthusiasts in the Web3 space, NFTopia simplifies the entire NFT lifecycle—from minting to marketplace auctions—while supporting cross-chain interoperability. Whether you're a creator launching a collection or a collector discovering rare assets, the platform prioritizes ease of use, self-custody, and community-driven features to foster a vibrant digital economy.
- Secure On-Chain Storage: Store NFTs immutably on Stellar, with metadata and ownership verified via Soroban contracts.
- Integrated NFT Minting: One-click minting interface for creating NFTs with custom royalties and attributes.
- NFT Management: Full control over your collection, including transfers, burns, and metadata updates.
- Marketplace Integration: Browse, list, auction, and sell NFTs in a dynamic, fee-optimized marketplace.
- Auction & Bidding: Time-bound auctions with automated settlements using Stellar's sub-second finality.
- Analytics Dashboard: Real-time insights into sales, trends, and portfolio performance via integrated event tracking.
- Mobile Accessibility: Native apps for iOS and Android to manage NFTs on the go.
- Notifications & Payments: Automated alerts and seamless Stellar-based payments for bids and sales.
- Frontend: Next.js 15, Tailwind CSS, ShadCN (reusable UI components).
- Backend: Nest.js (scalable server-side framework), with microservices for marketplace, payments, and notifications.
- Mobile: React Native (cross-platform iOS/Android apps).
- Blockchain: Stellar SDK (for transactions and queries), Soroban (Rust contracts for NFT logic and escrow).
- Analytics: Custom event-tracking with Kafka and BullMQ for job queuing.
- Database & Storage: Supabase (user data and metadata), IPFS (decentralized NFT storage).
- Monorepo: pnpm workspaces with TurboRepo for efficient builds and dependency management.
NFTopia is organized as a monorepo to streamline development across frontend, backend services, mobile, analytics, and blockchain components. This structure supports independent scaling of microservices while sharing common utilities.
nftopia/
├── nftopia-frontend/
├── nftopia-backend/
├── nftopia-marketplace-service/ # Handles NFT listings, auctions, and trades
├── nftopia-mobile-app/ # React Native app for mobile users
├── nftopia-notification-service/ # Push/email notifications for events
├── nftopia-payment-service/ # Stellar-integrated payment processing
├── nftopia-stellar/ # Soroban Rust contracts and Stellar SDK utils
├── nftopia_analytics/ # Event tracking, dashboards, and Kafka integration
├── nftopia-starknet/ # Legacy contracts (built with Cairo for Starknet)
├── packages/ # Shared utilities (e.g., UI components, Stellar helpers)
├── .pnpm-workspace.yaml # Workspace configuration for pnpm
├── turbo.json # Build and dev pipelines
├── Dockerfile # Containerization for services
└── vercel.json / railway.json # Deployment configs
Before diving in, install these essentials:
- Node.js 18+ (nodejs.org).
- pnpm (for monorepo; install via
npm install -g pnpm). - Rust toolchain (for Soroban contracts; via rustup.rs).
- Stellar wallet (e.g., Freighter; freighter.app).
- Supabase account (free tier; supabase.com) for database setup.
- Docker (for containerized services; docker.com).
- Git (for cloning).
-
Fork and clone the repository:
git clone https://github.com/your-username/nftopia.git cd nftopia -
Install dependencies across the workspace:
pnpm install
- Create a Supabase project and note your
SUPABASE_URLandSUPABASE_ANON_KEY. - Copy
.env.exampleto.envin the root and configure:SUPABASE_URL=your_supabase_url SUPABASE_ANON_KEY=your_supabase_anon_key STELLAR_NETWORK=testnet # Switch to 'mainnet' for production FRIENDBOT_URL=https://friendbot.stellar.org # For testnet funding - For blockchain: Fund your testnet wallet at laboratory.stellar.org. Set up Soroban CLI for contract deployment.
- For services: Add service-specific vars (e.g., Kafka brokers in
apps/nftopia-notification-service/.env).
- Start the monorepo dev environment:
pnpm turbo run dev- This launches frontend (
http://localhost:3000), backend services (http://localhost:9000), and prepares mobile/contracts.
- This launches frontend (
- For individual services:
- Marketplace:
cd apps/nftopia-marketplace-service && pnpm dev - Mobile:
cd apps/nftopia-mobile-app && npx react-native run-ios(orrun-android) - Contracts:
cd apps/nftopia-stellar && cargo test(then deploy viasoroban contract deploy --network testnet)
- Marketplace:
- Access the frontend at http://localhost:3000 and connect your wallet to test minting.
Validate your setup with comprehensive tests:
- Run linting and type-checks:
pnpm turbo run lint pnpm turbo run type-check - Execute unit/integration tests:
pnpm turbo run test- Includes Jest for JS/TS, Cargo for Rust contracts.
- End-to-end tests (e.g., Playwright for frontend):
Tests assume a testnet wallet; see service-specific READMEs for mocks.
pnpm turbo run test:e2e
Deploy components independently for flexibility:
-
Frontend & Backend Services (Vercel/Railway):
- Link GitHub repo to Vercel (frontend) or Railway (services) dashboards.
- Add env vars (e.g., Supabase, Stellar network).
- Pushes to
mainauto-deploy; configure custom domains as needed.
-
Mobile (Expo):
cd apps/nftopia-mobile-app && expo publishfor OTA updates.- Build for stores:
expo build:ios/expo build:android.
-
Contracts (Soroban):
- Use CI/CD (GitHub Actions) in
apps/nftopia-stellar. - Deploy:
soroban contract deploy --network mainnet --wasm target/soroban/nftopia.wasm. - Verify on Stellar's explorer.
- Use CI/CD (GitHub Actions) in
For production, set STELLAR_NETWORK=mainnet, run security audits on contracts, and monitor via analytics service. Advanced CI/CD pipelines are in DEPLOYMENT.md.
- Mint an NFT: Connect wallet in the app → upload metadata → confirm Soroban transaction.
- List for Sale/Auction: In marketplace → select NFT → set price/bid rules → publish.
- Trade & Collect: Browse listings → bid/buy → funds settle instantly on Stellar.
- Manage Portfolio: Dashboard for viewing analytics, notifications, and transfers.
Figma designs: View here for UI guidance.
We love contributions to make NFTopia even better! Here's how to get involved:
- Report Issues: Open a GitHub Issue with steps to reproduce, env details, and logs.
- Propose Features: Use Discussions to brainstorm—align before coding.
- Submit PRs:
- Fork and branch:
git checkout -b feature/your-feature. - Code, test, and lint changes.
- Commit conventionally (e.g., "feat: add auction bidding").
- Push and PR to
main; reference issues.
- Fork and branch:
- Monorepo Tips:
- Build affected packages:
pnpm turbo run build --filter=.... - Update shared deps sparingly; use
changesetfor versioning.
- Build affected packages:
Adhere to our Code of Conduct. All commits require DCO sign-off.
MIT License. See LICENSE for details.
- Join our Discord: discord.gg/nftopia for chats and support.
- Follow @nftopia on X for updates.
- Questions? Tag maintainers (@Oluwaseyi89, @Cedarich) in issues.
Built with ❤️ by the NFTopia team. Powered by Stellar. 🚀