This guide helps you deploy your own instance of the Cryptoart platform from the open source codebase.
The Cryptoart monorepo is open source, but requires proper configuration of environment variables to function. This guide walks you through setting up your own deployment.
- Node.js >= 18.0.0
- pnpm >= 9.1.4
- PostgreSQL database (Supabase recommended)
- Vercel account (or your preferred hosting platform)
- Access to Base Mainnet (or your target network)
git clone https://github.com/your-org/cryptoart-monorepo
cd cryptoart-monorepo
pnpm installCreate a .env.local file in apps/mvp/ (or use your platform's environment variable configuration):
# Copy the example (if available) or see docs/ENV_VARS_MANAGEMENT.md
cp apps/mvp/.env.example apps/mvp/.env.localRequired Variables:
# Database
STORAGE_POSTGRES_URL=postgresql://postgres.[project-ref]:[password]@aws-0-[region].pooler.supabase.com:6543/postgres?pgbouncer=true
# Application
NEXT_PUBLIC_URL=https://your-domain.com
# Admin Configuration (REQUIRED)
ADMIN_WALLET_ADDRESS=0xYourAdminWalletAddress
ADMIN_FARCASTER_USERNAME=your-farcaster-username
ADMIN_FID=your-farcaster-fid
# Blockchain
RPC_URL=https://base-mainnet.g.alchemy.com/v2/YOUR_ALCHEMY_API_KEY
CHAIN_ID=8453
# Optional but Recommended
NEYNAR_API_KEY=your_neynar_api_key
ALCHEMY_API_KEY=your_alchemy_api_key
GRAPH_STUDIO_API_KEY=your_graph_studio_api_key
CRON_SECRET=your-random-secret-string- Create a PostgreSQL database (Supabase recommended for Vercel)
- Run migrations:
pnpm db:migrate-allVercel:
cd apps/mvp
vercel deployOther Platforms: Follow your platform's Next.js deployment guide.
The admin wallet address controls:
- Featured listings management
- User hiding/visibility
- Error log resolution
- Analytics access
- Notification settings
- Use a dedicated wallet for admin operations
- Never share the admin wallet private key
- Store admin configuration in environment variables only
- The admin address in the codebase is a placeholder - you must set your own
Never commit these to Git:
ADMIN_WALLET_ADDRESSADMIN_FARCASTER_USERNAMEADMIN_FIDPOSTGRES_URL/STORAGE_POSTGRES_URL- Any API keys
CRON_SECRETADMIN_SECRET
All .env* files should be in .gitignore (already configured).
To set your own admin:
- Set
ADMIN_WALLET_ADDRESSto your wallet address - Set
ADMIN_FARCASTER_USERNAMEto your Farcaster username - Set
ADMIN_FIDto your Farcaster FID
The admin check requires:
- Wallet address match (from
ADMIN_WALLET_ADDRESS) - Optional: Farcaster username match (from
ADMIN_FARCASTER_USERNAME)
To deploy on a different network:
- Update
CHAIN_IDin environment variables - Update contract addresses in
apps/mvp/src/lib/constants.ts - Update RPC URL to match your network
- Deploy contracts to your network (see contract packages)
The database schema is public and documented in packages/db/src/schema.ts. This is safe to expose as it only shows structure, not data.
Key tables:
user_cache- Cached user informationnotifications- In-app notificationsfeatured_listings- Featured listingshidden_users- Users hidden from feedsanalytics_snapshots- Analytics data
All API routes are public in the codebase. Key routes:
/api/admin/*- Admin routes (require admin wallet)/api/auctions/*- Auction data/api/listings/*- Listing data/api/user/*- User profiles/api/cron/*- Cron jobs (requireCRON_SECRET)
- Verify
ADMIN_WALLET_ADDRESSis set correctly - Ensure you're connecting with the admin wallet
- Check that Farcaster username matches (if required)
- Check server logs for admin verification errors
- Use pooled connection string for serverless (Supabase port 6543)
- Verify connection string format
- Check IP allowlisting (if using direct connection)
- See DATABASE_CONNECTION_FIX.md
- Ensure all required environment variables are set
- Check
turbo.jsonfor required env vars in build task - Verify Node.js version (>= 18.0.0)
- Documentation: See
docs/directory - Issues: Open a GitHub issue (for non-security issues)
- Security: See SECURITY.md
See individual package licenses in their respective directories.