AI-Powered Visual Time Machine
Generate images across past, parallel universes, and future timelines. Mint them as Living NFTs on Solana.
TimePics.ai is the world's first AI-powered prediction market meets NFT battle royale - a revolutionary Web3 application where users don't just create AI images, they bet on timelines, stake NFTs, and compete for rewards in decentralized historical battles.
Inspired by Polymarket's betting mechanics, TimePics transforms AI-generated images into tradeable assets that fight for dominance in community-driven Timeline Wars. Generate temporal images, mint them as evolving NFTs, stake on factions, rally voters, and win real SOL rewards.
Tagline: "Render Any Moment. Own It Forever. Bet on History."
Generate images across different temporal dimensions:
-
⏪ Rewind Engine (回溯引擎): Travel to the past
- Restore vintage photos with AI super-resolution
- Era style transfer (1920s, 1950s, 1980s, 2000s)
- Historical reconstruction with period-accurate details
-
✨ Refract Engine (折射引擎): Explore parallel universes
- Alternate history scenarios ("what if" timelines)
- Historical face fusion into different eras
- Photorealistic alternate reality visualization
-
🔭 Foresee Engine (预见引擎): Visualize the future
- Future predictions and trends
- Age progression (30/50/70 years ahead)
- Sci-fi futuristic scene generation
Your NFTs aren't static JPEGs - they evolve over time:
- 📅 Survival Days: Track how long your NFT has existed
- 🌀 Entropy (0-100%): Visual aging system
- Fresh (0-19%): Original quality, vibrant colors
- Aging (20-49%): Color desaturation, slight grain
- Decayed (50-79%): Visible aging, vintage filters
- Ancient (80-100%): Heavy distortion, glitch art
- 🔒 Freeze: Lock NFT at current state permanently
- ⚡ Accelerate: Fast-forward to see future aging
Daily puzzle-based game to increase engagement:
- New mystery image every 24 hours
- Unlock with keyword guessing
- Locked content with noise animation
- LocalStorage persistence
- Countdown timer to next capsule
The most revolutionary feature - Transform TimePics.ai from a content creation tool into a decentralized prediction market meets social NFT battle arena.
1. Create or Join Timeline Markets Like Polymarket's binary markets, users can:
- Create competing timeline scenarios (e.g., "Steam Revolution 1850" vs "Bio Genesis 1850")
- Set battle duration (24h, 7 days, 30 days)
- Define prize pool minimum (1 SOL - 100 SOL)
- Each battle has two opposing factions competing for dominance
2. Stake NFTs as Betting Positions Instead of simple Yes/No betting, users:
- Generate faction-themed AI images using Time Engines
- Mint images as Living NFTs (0.1 SOL + mint fee)
- Stake NFTs = Your bet on that timeline faction
- Each NFT has computed Power Score based on:
- Freshness (0-100% entropy): Fresh = more power
- Engine Type: Refract (+20%), Rewind (+10%), Foresee (+5%)
- Age: Older NFTs lose power over time
- Community Votes: Each upvote = +5% power boost
3. NFT Trading & Secondary Markets Create real economic activity:
- Stake your NFT = lock it in a faction (retrievable after battle)
- Trade staked positions: Other users can buy your staked NFT mid-battle
- Price determined by: Current faction winning probability + NFT power
- Example: If your faction is winning 70-30, your NFT value ↑ 40%
- Speculative trading: Buy underdog faction NFTs cheap, profit if they win
- Marketplace fees: 2.5% on all trades → platform revenue
4. Rally Voters & Social Warfare The most important mechanic - community voting determines winners:
Voting System:
- Every wallet gets 1 free vote per battle per day
- Pro users get 5 votes per battle per day
- Voters can also buy additional votes (0.01 SOL = 10 votes)
- Votes are weighted by voter reputation (long-term users = more influence)
Social Amplification:
- Share Faction Blinks on Twitter/Discord: Direct stake button
- Recruit teammates: 10% of their rewards if your faction wins
- Organize vote brigades: Coordinate in Discord/Telegram
- Content creation: Best faction memes/videos earn bonus rewards
Voting Power Formula:
Your Faction Power =
(Sum of all staked NFT power scores) ×
(1 + 0.05 × total community votes) ×
(1 + social_engagement_multiplier)
5. Battle Resolution & Prize Distribution
When the battle ends (countdown reaches 0):
Winning Faction (Higher total power):
- 70% of total prize pool split proportionally by NFT power
- Example: You staked 100 power, faction total = 10,000 power
- You get: 70% × Prize Pool × (100/10,000) = 0.7% of prize
- "Canonical History" NFT Badge: Permanent visual upgrade
- Winner's Share Trading Bonus: 0% fees for 7 days
Losing Faction:
- Retrieve staked NFTs (no SOL rewards)
- "Paradox Timeline" Badge: Glitch art effect (actually desirable for collectors!)
- Consolation votes: Top 10 voted NFTs get 5% of prize pool
All Voters (Both Sides):
- 20% of prize pool distributed to voters proportionally
- More votes = larger share
- Voting for winning side = 2x rewards
- Reputation XP: Unlock rare faction creation rights
Platform Rake:
- 10% of prize pool → TimePics.ai treasury
- Funds development, marketing, creator grants
Polymarket Comparison:
| Feature | Polymarket | TimePics Timeline Wars |
|---|---|---|
| Betting Medium | USDC | NFTs (AI-generated images) |
| Market Creation | Permissionless | Pro users can create factions |
| Position Trading | Yes (buy/sell shares) | Yes (trade staked NFTs) |
| Resolution Oracle | UMA Protocol | Community voting (decentralized) |
| Liquidity | Automated Market Maker | Order book + peer-to-peer |
| Social Layer | Minimal | Core mechanic (vote rallying) |
| Content Creation | None | Built-in AI generation engine |
Why This Model Works:
- Skin in the Game: Unlike "likes", users stake real value (NFT mint cost + potential rewards)
- Network Effects: More stakers = bigger prize pool = more attention = viral growth
- Creator Incentives: Faction creators earn 5% of all bets → motivated to market their timeline
- Speculation Opportunities: Smart traders can profit from buying underdog NFTs early
- Community Ownership: Voters feel ownership over "canon history" outcomes
Battle: "What if Tesla Won the Current War?"
Timeline A: "AC Power Dominates (Real History)"
- Faction Creator: @HistoryBuff420 (earns 5% of all stakes)
- Total Staked NFTs: 234 NFTs (avg power: 75)
- Total Power: 17,550
- Total SOL Staked: 23.4 SOL (0.1 per mint)
- Community Votes: 1,247 votes (+62% power multiplier)
- Final Power: 17,550 × 1.62 = 28,431
Timeline B: "DC Power Wins (Alternate History)"
- Faction Creator: @SteampunkFan
- Total Staked NFTs: 189 NFTs (avg power: 82)
- Total Power: 15,498
- Total SOL Staked: 18.9 SOL
- Community Votes: 2,103 votes (+105% power multiplier)
- Final Power: 15,498 × 2.05 = 31,771 ✅ WINNER
Prize Distribution (Total Pool: 42.3 SOL):
Timeline B Winners:
- Prize Pool (70%): 29.61 SOL
- Distributed to 189 NFT stakers proportionally
- Top staker (120 power): ~0.11 SOL
- Average staker (82 power): ~0.08 SOL
All Voters:
- Voter Rewards (20%): 8.46 SOL
- Timeline B voters (2,103): 70% = 5.92 SOL
- Timeline A voters (1,247): 30% = 2.54 SOL
Faction Creators:
- @SteampunkFan: 5% × 18.9 SOL = 0.95 SOL
- @HistoryBuff420: 5% × 23.4 SOL = 1.17 SOL
Platform:
- Treasury (10%): 4.23 SOL
1. Solves the "AI Tool Problem"
- Most AI generators: One-time use → no retention
- Timeline Wars: Continuous engagement → betting → voting → trading
2. Creates Real Network Effects
- More users = bigger prize pools = attracts more users (flywheel)
- Viral loop: Share faction → recruit friends → increase winning chances
3. Multiple Revenue Streams
- NFT minting fees (30% of $2-10)
- Trading marketplace fees (2.5%)
- Platform rake (10% of prize pools)
- Pro subscriptions (unlimited faction creation)
4. User-Generated Content Marketing
- Every faction = a marketing campaign by its creator
- Viral tweets, Discord raids, meme wars = free promotion
- "Timeline Wars drama" creates press coverage
5. Speculative Trading Creates Liquidity
- NFT traders hunt for "undervalued timelines"
- Mid-battle trading = constant market activity
- FOMO effect: "That faction is pulling ahead, buy in now!"
- Active Battles: 50+ simultaneous timeline wars
- Total Staked NFTs: 25,000+ positions
- Prize Pool Volume: $500K+ in SOL
- Secondary Trading: $200K+ NFT sales
- Platform Revenue: $70K+ (fees + subscriptions)
- Social Mentions: 100K+ #TimelineWars tweets
Solana Smart Contracts:
TimelineWarsVault.sol
├── createBattle(factionA, factionB, duration, minPrize)
├── stakeNFT(battleId, factionId, nftMint)
├── vote(battleId, factionId, voteCount)
├── tradeStakedPosition(nftMint, newOwner, price)
├── resolveBattle(battleId) → distributePrizes()
└── claimRewards(battleId, userWallet)
Off-Chain Infrastructure:
- Real-time WebSocket for live power updates
- IPFS for faction metadata (descriptions, images)
- PostgreSQL for battle history and leaderboards
- Redis for vote counting cache
Daily puzzle-based game to increase engagement:
- New mystery image every 24 hours
- Unlock with keyword guessing
- Locked content with noise animation
- LocalStorage persistence
- Countdown timer to next capsule
Share interactive blockchain links on social media:
- Share NFTs directly on Twitter with mint button
- Share Timeline Wars battles with stake button
- One-click blockchain actions from social platforms
- No need to leave Twitter to interact with blockchain
- Viral sharing = recruit voters for your faction
- Node.js 18+ and npm
- Solana wallet (Phantom, Solflare, etc.) - for NFT minting
- API Keys:
- Google Gemini API - for AI image generation ✅ Required
- Pinata API Keys - for IPFS storage ⚡ Recommended
-
Clone the repository
git clone https://github.com/x2v-co/timepics.git cd timepics -
Install dependencies
npm install
-
Configure environment variables
Create
.env.localfile:cp .env.example .env.local
Edit
.env.localwith your keys:# AI Generation (Required) GEMINI_API_KEY=your_gemini_api_key_here # Solana Configuration NEXT_PUBLIC_SOLANA_NETWORK=devnet SOLANA_RPC_URL=https://api.devnet.solana.com # IPFS Storage via Pinata (Recommended for NFT minting) PINATA_API_KEY=your_pinata_api_key_here PINATA_SECRET_KEY=your_pinata_secret_key_here # Backend Wallet (Optional, for real NFT minting) BACKEND_WALLET_PRIVATE_KEY=[1,2,3,...]
Get API Keys:
- Gemini: Visit https://ai.google.dev/ → "Get API Key" → Copy key
- Pinata: Visit https://pinata.cloud → Sign up → "API Keys" → "New Key" → Copy API Key and Secret Key
- See QUICK_START_IPFS.md for detailed IPFS setup
-
Run development server
npm run dev
-
Open in browser
http://localhost:3000
Test that everything works:
# Test AI generation
curl -X POST http://localhost:3000/api/generate \
-H "Content-Type: application/json" \
-d '{"engine":"rewind","prompt":"vintage photo 1950s"}'
# Test IPFS (if configured)
curl http://localhost:3000/api/ipfs/testOr visit the test page: http://localhost:3000/ipfs-test
- Framework: Next.js 14 (App Router)
- Language: TypeScript
- Styling: Tailwind CSS + shadcn/ui
- Animations: Framer Motion
- Icons: Lucide React
- AI Provider: Google Gemini (Imagen 3)
- Image Format: JPEG, Base64
- Quality: Standard (1K) and HD (4K)
- Network: Solana (Devnet/Mainnet)
- Wallet: @solana/wallet-adapter (Phantom, Solflare, etc.)
- NFT Standard: Metaplex Token Metadata
- Actions: Solana Blinks/Actions API
- IPFS: Pinata (professional IPFS pinning service)
- Gateway: https://gateway.pinata.cloud
- Format: CID-based content addressing
timepics-ai/
├── app/ # Next.js App Router
│ ├── api/ # Backend API routes
│ │ ├── generate/ # AI image generation
│ │ ├── generate-ipfs/ # Generate + IPFS upload
│ │ ├── mint/ # NFT minting
│ │ ├── nfts/ # NFT queries and operations
│ │ │ ├── freeze/ # Freeze NFT entropy
│ │ │ └── accelerate/ # Accelerate NFT aging
│ │ ├── blinks/ # Solana Blinks/Actions
│ │ │ ├── nft/[id]/ # NFT Blinks
│ │ │ └── wars/ # Timeline Wars Blinks
│ │ ├── wars/ # Timeline Wars logic
│ │ │ └── stake/ # NFT staking
│ │ └── ipfs/test/ # IPFS testing
│ ├── generate/ # Generation interface
│ ├── gallery/ # NFT gallery with Living NFTs
│ ├── timeline-wars/ # Wars battle page
│ ├── ipfs-test/ # IPFS test page
│ ├── page.tsx # Home page with Time Capsule
│ ├── layout.tsx # Root layout with WalletProvider
│ └── globals.css # Global styles
├── components/ # React components
│ ├── ui/ # shadcn/ui base components
│ ├── WalletButton.tsx # Wallet connection
│ ├── WalletProvider.tsx # Wallet context
│ ├── EngineCard.tsx # Time engine cards
│ ├── GenerationForm.tsx # Image generation form
│ ├── ImageDisplay.tsx # Generated image viewer
│ ├── TimeAnimation.tsx # Loading animations
│ ├── TimeCapsule.tsx # Daily puzzle game
│ ├── EnhancedNFTCard.tsx # Living NFT card with entropy
│ ├── NFTDetailModal.tsx # NFT details popup
│ ├── MintSuccessModal.tsx # Post-mint modal
│ ├── EntropyInfoCard.tsx # Living NFTs explainer
│ ├── BlinkShareButton.tsx # Social sharing
│ └── MintButton.tsx # NFT minting button
├── lib/ # Utility libraries
│ ├── gemini.ts # Google Gemini AI client
│ ├── prompts.ts # Prompt engineering for engines
│ ├── ipfs.ts # IPFS upload utilities
│ ├── solana.ts # Solana connection
│ ├── metaplex.ts # NFT minting with Metaplex
│ ├── storage.ts # LocalStorage helpers
│ ├── nftState.ts # Living NFT state management
│ ├── wars.ts # Timeline Wars logic
│ ├── blinks.ts # Solana Blinks utilities
│ └── utils.ts # General utilities
├── public/ # Static assets
│ └── images/ # Demo images
├── CLAUDE.md # Project instructions
├── IMPLEMENTATION_COMPLETE.md # MVP completion report
├── GAMIFICATION_FEATURES.md # Gamification details
├── FEATURE_UPDATES.md # Feature changelog
├── IPFS_IMPLEMENTATION.md # IPFS integration guide
├── QUICK_START_IPFS.md # IPFS quick setup
├── PHASE2_PHASE4_IMPLEMENTATION.md # Blinks & Wars details
└── DESIGN_SYSTEM.md # UI/UX design guide
Visit http://localhost:3000/generate
- Select a time engine (Rewind, Refract, or Foresee)
- Enter your prompt (or use AI suggestions)
- Choose options:
- Era: 1900s, 1920s, 1950s, 1980s, 2000s, or custom
- Aspect Ratio: 1:1, 16:9, 9:16, 4:3, 3:4
- Quality: Standard (faster) or HD (higher quality)
- Click "Generate Image"
- Wait 20-30 seconds for AI generation
- Download, share, or mint as NFT
Prompt Tips:
- Be specific: "1950s family portrait in living room" vs "old photo"
- Add mood: "nostalgic", "dramatic", "optimistic"
- Specify style: "Kodachrome color", "black and white"
After generating an image:
- Connect your Solana wallet (Phantom recommended)
- Click "Mint as NFT"
- Confirm transaction (0.1 SOL on devnet)
- View success modal with:
- Mint address
- IPFS links (image + metadata)
- Solana Explorer link
- Navigate to Gallery or Timeline Wars
Visit http://localhost:3000/gallery
Your NFTs evolve over time with the Entropy System:
Entropy Levels:
- Fresh (0-19%): 🟢 Original quality, vibrant
- Aging (20-49%): 🟡 Slight fading, color shift
- Decayed (50-79%): 🟠 Visible aging, grain texture
- Ancient (80-100%): 🔴 Heavy distortion, glitch art
Control Actions:
- 🔒 Freeze: Lock NFT at current state (irreversible!)
- ⚡ Accelerate: Fast-forward aging (+20% entropy)
- 🔗 Share Blink: Share on Twitter with interactive mint button
Power Calculation:
NFT Power = (100 - entropy) × engine_bonus - age_penalty
- Fresh NFTs: Higher power (80-100)
- Aged NFTs: Lower power (0-50)
- Frozen NFTs: Power locked
Visit http://localhost:3000/timeline-wars
Full betting and competition flow:
- View all live timeline wars with real-time stats
- See prize pools, faction powers, time remaining
- Check current winning probabilities (e.g., 65% vs 35%)
- Filter by: Ending Soon / Highest Prize / Most Votes
- Research both timelines (read descriptions, view staked NFTs)
- Check faction creator reputation and track record
- Analyze power distribution and voting trends
- Strategy tip: Join underdog early = higher potential returns
- Click "Join [Faction Name]" → redirects to generate page
- Auto-filled prompt matches faction theme
- Customize and generate AI image (20-30 seconds)
- Mint as NFT (0.1 SOL + gas fees)
- Your NFT power calculated instantly based on:
- Engine type (Refract = strongest)
- Freshness (Fresh = 100 power, Ancient = 20 power)
- Quality bonuses from HD generation
- Return to Timeline Wars page
- Click "Stake NFT" on your chosen faction card
- Select NFT from your wallet (shows power score)
- Confirm transaction (0.01 SOL staking fee)
- Your stake is now live - contributing to faction power
- Watch your position value update in real-time
This is where you win or lose:
A. Share Faction Blinks
- Click "Share Faction" button
- Auto-generates Solana Blink URL
- Post on Twitter: "Join my faction in Timeline Wars! [Blink URL]"
- Anyone who clicks can stake directly from Twitter
- You earn 10% of their rewards if faction wins
B. Organize Voting Campaigns
- Share battle page in Discord/Telegram
- Create faction-themed memes and videos
- Host "Voting Parties" - coordinate mass voting
- Reminder: Votes = +5% power per vote = critical advantage
C. Buy Additional Votes
- Free users: 1 vote/day per battle
- Pro users: 5 votes/day per battle
- Buy vote packs: 0.01 SOL = 10 votes
- Strategic voting: Wait until last hours to counter enemy votes
Active battle management:
Watch Live Stats Dashboard:
- Faction power comparison (updates every 30 seconds)
- Recent stakes and vote activity feed
- Winning probability chart (historical + current)
- Time until battle resolution
Trade Your Position Mid-Battle:
- If your faction is winning, you can sell NFT at premium
- Example: Staked 0.1 SOL, faction now 70% to win → Sell NFT for 0.15 SOL
- If losing, cut losses by selling before battle ends
- Marketplace shows all active staked NFTs with:
- Current owner, power score, faction, ask price
Add More Stakes:
- Unlimited staking - mint and stake multiple NFTs
- Diversify: Stake on both factions (hedge your bets)
- Power stacking: Multiple NFTs = multiplied power
When countdown reaches 0:
If Your Faction Wins 🏆
-
Claim SOL Rewards (70% of prize pool split by power)
- Click "Claim Rewards" button
- Calculates your share:
Your Power / Total Faction Power × 70% × Prize Pool - Example calculation shown in UI before claiming
- Funds sent directly to your wallet
-
Receive "Canonical History" Badge
- Your NFT gets permanent golden border overlay
- Metadata updated on-chain with win badge
- NFT value increases in secondary market (historical significance)
-
Unlock Trading Benefits
- 0% marketplace fees for 7 days
- Priority display in NFT gallery
- Winner's leaderboard featuring
If Your Faction Loses 😔
-
Retrieve Your NFTs (no SOL rewards, but you keep NFTs)
-
Get "Paradox Timeline" Badge
- Glitch art visual effect applied
- Actually desirable for collectors (rare aesthetic)
- Some traders hunt losing NFTs for this badge
-
Voter Consolation (if you voted for losing side)
- Top 10 most-voted NFTs get 5% consolation prize
- Check "Top Voted" list to see if you qualified
Voter Rewards (All Participants):
- 20% of prize pool distributed to ALL voters
- Winning side voters: 70% of voter pool (2x multiplier)
- Losing side voters: 30% of voter pool
- Calculated by:
(Your Votes / Total Votes) × Voter Pool × Side Multiplier
Example Reward Calculation:
Battle: "Tesla's DC vs Edison's AC"
Your Faction: DC Power (Winner ✅)
Your Stakes: 3 NFTs (total power: 240)
Your Votes: 50 votes
Total Prize Pool: 100 SOL
Staking Rewards:
70 SOL × (240 / 30,000 total faction power) = 0.56 SOL
Voting Rewards:
20 SOL × 0.70 (winner side) × (50 / 5,000 total votes) = 0.14 SOL
Total Earnings: 0.70 SOL (7x return on 0.1 SOL mint cost!)
Early Bird Advantage:
- Join factions early when prize pools are small
- As more users join, your % share of faction decreases
- But prize pool grows = net positive
- Sweet spot: Join when 20-50 NFTs staked
Vote Manipulation Defense:
- Platform has anti-bot measures: New wallets need 0.1 SOL history
- Vote weight decreases for Sybil-like behavior
- Quadratic voting: 1st vote = 1 power, 10th vote = 3.16 power (√10)
Whale Resistance:
- Maximum stake per wallet: 10 NFTs per faction
- Power capping: NFTs over 95 power count as 95 (diminishing returns)
- Prevents single whale from dominating
Faction Creator Meta:
- Pro users can create custom battles (unlimited)
- Earn 5% of all stakes on your battle
- Most profitable strategy: Create viral timeline concepts
- Examples of successful battles:
- "What if Dinosaurs Never Died?"
- "Bitcoin Invented in 1995"
- "Rome Never Fell"
Case Study: "@CryptoHistorian's Rome Battle"
Battle Created: "Roman Empire Collapse Timeline"
- Faction A: "Fall of Rome 476 AD (Real)"
- Faction B: "Rome Survives to 1000 AD"
- Duration: 7 days
- Initial Prize Pool: 5 SOL
Day 1-2: Early stakers join both sides
- Faction A: 23 NFTs (1,725 power)
- Faction B: 18 NFTs (1,476 power)
- Prize pool: 9.1 SOL
Day 3-4: @CryptoHistorian tweets battle link
- Goes viral: 50K impressions, 2K clicks
- Faction B rallies Byzantine history fans
- Faction A recruits from r/RoughRomanMemes
- Prize pool: 34.7 SOL
Day 5-6: Voting war begins
- Faction A: 847 votes (+423% power = 7,297 total power)
- Faction B: 1,203 votes (+601% power = 10,348 total power)
- Users buy vote packs (0.01 SOL each)
- Prize pool: 56.3 SOL
Day 7: Final hours chaos
- Last-minute stakes flood in (FOMO effect)
- Both factions run Twitter Spaces to coordinate
- Vote brigading from Discord communities
- Final state:
- Faction A: 89 NFTs, 2,134 votes = 11,289 power
- Faction B: 124 NFTs, 1,947 votes = 10,872 power
- Prize pool: 78.3 SOL
Result: Faction A wins by 3.8% margin!
- 89 winners split 54.8 SOL (avg 0.62 SOL per NFT)
- 4,081 voters split 15.7 SOL
- @CryptoHistorian earned 3.9 SOL (5% creator fee)
- TimePics.ai earned 7.8 SOL (10% rake)
Lesson: Social mobilization + strategic voting > pure NFT power
Visit http://localhost:3000 (Home page)
- New mystery image every 24 hours
- Read the cryptic hint
- Guess keywords to unlock
- Locked content shows noise animation
- Countdown to next capsule
Example Capsules:
- 1969 Moon Landing: Hint "not Armstrong, but..."
- 2077 Cyberpunk City: Hint "floating in 2077..."
- Dinosaur Coexistence: Hint "if they never went extinct..."
Currently in mock mode. To enable real blockchain minting:
-
Generate backend wallet
solana-keygen new --outfile ~/.config/solana/backend-wallet.json -
Get devnet SOL
# Get wallet address solana-keygen pubkey ~/.config/solana/backend-wallet.json # Request airdrop solana airdrop 2 <YOUR_WALLET_ADDRESS> --url devnet
-
Add to
.env.local# Get private key array from wallet JSON cat ~/.config/solana/backend-wallet.json # Add to .env.local BACKEND_WALLET_PRIVATE_KEY=[1,2,3,4,...array...]
-
Uncomment minting code in
app/api/mint/route.ts
See detailed guide: QUICK_START_IPFS.md
Quick steps:
- Get free API keys from https://pinata.cloud
- Add to
.env.local:PINATA_API_KEY=your_api_key_here PINATA_SECRET_KEY=your_secret_key_here
- Test:
curl http://localhost:3000/api/ipfs/test
For production deployment:
# Wars prize vault address
WARS_VAULT_ADDRESS=TimePicsWarsVault11111111111111111111111
# Base URL for Blinks
NEXT_PUBLIC_BASE_URL=https://timepics.ai-
Install Vercel CLI
npm install -g vercel
-
Deploy
vercel deploy --prod
-
Add environment variables in Vercel dashboard:
GEMINI_API_KEYPINATA_API_KEYPINATA_SECRET_KEYBACKEND_WALLET_PRIVATE_KEY(optional)NEXT_PUBLIC_SOLANA_NETWORK=devnetormainnet-betaSOLANA_RPC_URLNEXT_PUBLIC_BASE_URL=https://your-domain.vercel.app
-
Configure custom domain (optional)
- Netlify: Use Next.js plugin
- Railway: Docker deployment supported
- AWS/GCP: Use Docker or Next.js standalone build
- ⏱️ Average Time: 25-30 seconds
- 📦 Image Size: 800KB - 1.5MB
- 🎨 Quality: High (JPEG, Base64)
- 🔄 Success Rate: ~100% with valid prompts
- 🆓 Cost: Free tier available (Pinata)
- ⏱️ Upload Time: 3-10 seconds
- 🌐 Gateway Load: 1-2 seconds (fast CDN)
- ♾️ Retention: Permanent (as long as pinned)
- ⛓️ Network: Solana Devnet (for testing)
- 💰 Mint Cost: ~0.1 SOL (devnet), ~0.01 SOL (mainnet)
- ⚡ Transaction Speed: 1-3 seconds
- 🔐 Standard: Metaplex Token Metadata
- Three time engines (Rewind, Refract, Foresee)
- Real AI image generation (Google Gemini)
- Solana wallet integration
- NFT minting infrastructure
- IPFS storage integration
- Responsive UI with dark theme
- Living NFTs with entropy system
- Freeze and Accelerate mechanics
- Daily Time Capsule puzzle game
- Solana Blinks for social sharing
- NFT detail modals and enhanced gallery
- NFT staking system
- Power calculation algorithm
- Prize pool distribution
- Winner/loser badge system
- Real-time battle statistics
- Faction-themed generation
- Mainnet deployment
- Smart contract audits
- Enhanced mobile experience
- Social features (comments, likes)
- User profiles and stats
- Email notifications
- Custom LoRA training for eras
- Video generation (photo-to-video)
- VR/3D scene generation
- API marketplace for developers
- "Today in Timeline B" content series
- Enterprise integrations (museums, education)
- Multi-chain support (Ethereum, Base)
- CLAUDE.md - Project overview and architecture
- IMPLEMENTATION_COMPLETE.md - MVP completion report
- GAMIFICATION_FEATURES.md - Living NFTs and Time Capsule details
- FEATURE_UPDATES.md - Feature changelog and updates
- IPFS_IMPLEMENTATION.md - Detailed IPFS integration guide
- QUICK_START_IPFS.md - 3-minute IPFS setup
- PHASE2_PHASE4_IMPLEMENTATION.md - Blinks and Timeline Wars
- DESIGN_SYSTEM.md - UI/UX design guidelines
Image Generation:
- All three engines generate images successfully
- Era styles apply correctly
- Different aspect ratios work
- HD quality produces higher resolution
Living NFTs:
- Entropy increases over time
- Freeze locks NFT state
- Accelerate increases entropy
- Visual effects match entropy level
- State persists after refresh
Daily Time Capsule:
- Correct keywords unlock capsule
- Wrong keywords trigger shake animation
- Unlock state persists until next day
- Countdown timer displays correctly
Timeline Wars:
- Stake NFT transaction creates successfully
- Power calculation is accurate
- Battle stats update in real-time
- Rewards distribute correctly
Blinks:
- NFT Blink URLs generate correctly
- Wars Blink URLs work on Twitter
- Copy URL function works
- Share on Twitter opens correctly
# Run type checking
npm run type-check
# Run linting
npm run lint
# Build for production
npm run buildWe welcome contributions! This project is built for the OpenBuild Hackathon.
- Fork the repository
- Create your feature branch
git checkout -b feature/amazing-feature
- Commit your changes
git commit -m 'Add some amazing feature' - Push to the branch
git push origin feature/amazing-feature
- Open a Pull Request
- Follow the existing code style (TypeScript, ESLint)
- Write clear commit messages
- Update documentation for new features
- Test your changes thoroughly
- Respect the design system in DESIGN_SYSTEM.md
- NFT Minting: In mock mode by default (needs backend wallet configuration)
- Timeline Wars: Prize distribution not yet on-chain
- Gemini API: Rate limits on free tier may affect generation speed
- IPFS: First load can be slow (10-30 seconds) due to content propagation
Found a bug? Please open an issue on GitHub with:
- Description of the issue
- Steps to reproduce
- Expected vs actual behavior
- Screenshots (if applicable)
- Browser and OS information
MIT License - see LICENSE file for details.
Open Source Notice: This project is open source and free to use. Attribution appreciated but not required.
- OpenBuild Hackathon - For the opportunity and inspiration
- Solana Foundation - For blockchain infrastructure
- Google AI - For Gemini Imagen API
- Pinata - For professional IPFS pinning service
- Metaplex - For NFT standards and tools
- shadcn/ui - For beautiful UI components
- Vercel - For hosting and deployment
- Next.js Team - For the amazing framework
- GitHub: github.com/x2v-co/timepics
- Live Demo: Coming soon after hackathon
- Twitter: Share your creations with #TimePicsAI
- Discord: Coming soon
- Be specific: "Victorian London street in foggy evening, gas lamps, cobblestones"
- Add era keywords: "vintage", "retro", "futuristic", "dystopian"
- Include mood: "nostalgic", "optimistic", "ominous"
- Specify quality: "highly detailed", "photorealistic", "cinematic"
- Mint during Fresh state: Lower entropy = higher power for Wars
- Freeze strategically: Lock your favorite moment before decay
- Accelerate for rarity: Aged NFTs with Paradox badges are unique
- Collect across eras: Diversify your time portfolio
- Choose engine wisely: Refract gives +20% power bonus
- Time your stakes: Fresh NFTs contribute more power
- Join early battles: Earlier stakers get larger rewards if faction wins
- Don't fear losing: Paradox badges create unique glitch art collectibles