A decentralized social event platform built on Flow blockchain where users can create, attend events, mint NFT moments, and collect accessories through gacha mechanics.
- Create Events: Organize online/offline events with customizable details
- Event Registration: Users can register for events on-chain
- Check-in System: Verify attendance with blockchain-backed check-ins
- Event Passes: NFT-based passes that serve as tickets
- Moment NFTs: Capture and mint memorable moments as NFTs
- Free Mint: First-time users get one free moment mint
- Event Pass Redemption: Convert event passes into moment NFTs
- Accessory System: Equip/unequip accessories to customize moment NFTs
- NFT Trading: Buy and sell moments and accessories
- Storefront Integration: Powered by NFTStorefrontV2
- Listing Management: Create, cancel, and manage listings
- Gacha Packs: Purchase mystery accessory packs
- Reveal Mechanics: Open packs to discover accessories using VRF
- Accessory Collection: Build your collection of unique items
- User Profiles: Customizable profiles with bio, images, and social links
- Moment Feed: Browse and discover moments from the community
- Likes & Comments: Engage with content
- Featured Content: Highlight favorite moments and passes
- React 19 - UI framework
- TypeScript - Type safety
- TanStack Router - File-based routing
- TanStack Query - Data fetching & caching
- Tailwind CSS 4 - Styling
- Motion (Framer Motion) - Animations
- @onflow/react-sdk - Flow blockchain integration
- Magic Link - Email-based authentication
- Vite - Build tool
- Go 1.24 - Server language
- Echo - Web framework
- Ent - Entity framework for database ORM
- PostgreSQL - Database
- Swagger - API documentation
- Flow Go SDK - Flow blockchain interaction
- Cadence - Flow blockchain smart contract language
- Contracts for:
- NFTMoment (moments)
- NFTAccessory (accessories)
- EventManager (event management)
- EventPass (event tickets)
- UserProfile (user profiles)
- AccessoryPack (gacha system)
- Node.js >= 18
- Go >= 1.24
- PostgreSQL >= 14
- Flow CLI (for Cadence development)
- Bun or npm (package manager)
git clone https://github.com/harkon666/flow-landmark-nft.git
cd flow-landmark-nftCreate /backend/.env:
DATABASE_URL=postgres://user:password@localhost:5432/flowlandmark?sslmode=disable
PORT=8000
FLOW_NETWORK=testnet
PINATA_JWT=your_pinata_jwt_hereCreate /frontend/.env:
VITE_BASE_URL=http://localhost:8000
VITE_MAGIC_PUBLISHABLE_KEY=your_magic_publishable_key# Create PostgreSQL database
createdb flowlandmark
# The schema will be auto-created by Ent on first runcd backend
# Install dependencies
go mod download
# Run database migrations (auto via Ent)
# The schema will be created automatically when you run the app
# Start the API server
go run ./api
# In another terminal, start the indexer
go run ./indexerThe backend will:
- API server runs on
http://localhost:8000 - Indexer subscribes to Flow blockchain events
- Swagger docs available at
http://localhost:8000/swagger/index.html
cd frontend
# Install dependencies
bun install
# or: npm install
# Start development server
bun run dev
# or: npm run devFrontend runs on http://localhost:5173
flow-landmark-nft/
βββ backend/
β βββ api/ # REST API handlers & routes
β βββ config/ # Configuration files
β βββ ent/ # Ent schema & generated code
β β βββ schema/ # Database entity definitions
β βββ indexer/ # Blockchain event indexer
β βββ transactions/ # Go wrappers for Cadence transactions
β βββ utils/ # Utility functions & event processors
β βββ swagdto/ # Swagger DTO definitions
βββ frontend/
β βββ src/
β β βββ components/ # React components
β β β βββ cards/ # Card components
β β β βββ modals/ # Modal dialogs
β β β βββ profile/ # Profile-related components
β β βββ hooks/ # Custom React hooks
β β β βββ api/ # API data fetching hooks
β β β βββ auth/ # Authentication hooks
β β β βββ transactions/ # Blockchain transaction hooks
β β βββ routes/ # File-based routes (TanStack Router)
β β βββ providers/ # React context providers
β β βββ lib/ # Utility libraries & configs
βββ cadence/
β βββ contracts/ # Smart contracts
β βββ scripts/ # Read-only scripts
β βββ transactions/ # State-changing transactions
βββ flow.json # Flow configuration
| Contract | Description |
|---|---|
NFTMoment |
Main NFT for user moments with equippable accessories |
NFTAccessory |
Accessories that can be equipped on moments |
EventManager |
Event creation, registration, and check-in |
EventPass |
NFT-based event passes |
UserProfile |
On-chain user profile management |
AccessoryPack |
Gacha pack distribution system |
- API Server (
/api): RESTful API with Echo framework - Indexer (
/indexer): Listens to blockchain events and syncs to database - Database: PostgreSQL with Ent ORM
- Authentication: Magic Link email login + FCL wallet support
- Event Management: Create, browse, register, and check-in
- Marketplace: List and purchase NFTs
- Profile: Customize profile with featured moments
- Gacha Shop: Purchase and reveal accessory packs
Once the backend is running, visit:
http://localhost:8000/swagger/index.html
Key endpoints:
GET /events- List all eventsGET /events/:id- Get event detailsGET /moments- Browse moments feedGET /users/:address- Get user profileGET /marketplace/listings- Browse marketplacePOST /upload- Upload images to IPFS
cd backend
swag init -g api/main.gocd backend
go generate ./entcd frontend
bun run build- Set production environment variables
- Build:
go build -o api ./api - Run migrations (Ent auto-creates schema)
- Deploy API and indexer as separate services
- Build:
bun run build - Deploy
dist/folder to static hosting (Vercel, Netlify, etc.) - Set environment variables in hosting platform
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit changes (
git commit -m 'Add amazing feature') - Push to branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License.
- Built on Flow Blockchain
- NFT Storefront V2 by Flow team
- Ent framework for Go ORM
- GitHub: @harkon666
- Project Link: https://github.com/harkon666/flow-landmark-nft
Made with β€οΈ on Flow Blockchain