LOLand is a decentralized meme platform that empowers creators to share, monetize, and mint their memes as NFTs.
Demo ยท Report Bug ยท Request Feature
- ๐ Web3 Authentication - Secure login using Web3Auth with multiple social and wallet options
- ๐ผ๏ธ Meme Creation & Sharing - Upload, share, and discover memes in a decentralized environment
- ๐ NFT Minting - Turn your best memes into NFTs for collectors to purchase
- ๐ฐ Creator Economy - Receive tips in cryptocurrency for your content
- ๐ค Social Interactions - Like, comment, follow, and engage with creators and their memes
- ๐ Collections - Organize memes into themed collections
- ๐ค Profile Management - Customize your profile with bio, avatar, and social links
- ๐ Discovery - Find trending memes and popular creators through algorithmic recommendations
- ๐ฑ Responsive Design - Optimized for both desktop and mobile experiences
| Frontend |
|
| Authentication |
|
| Database |
|
| Blockchain |
|
- Node.js 18.0 or later
- Supabase account for database
- Web3Auth account for authentication
Click to expand installation steps
-
Clone the repository:
git clone https://github.com/Mrinmoy-programmer07/LOLand.git cd loland -
Install dependencies:
npm install
-
Set up your environment variables by copying the
.env.examplefile:cp .env.example .env
-
Update your
.envfile with your own values:# Supabase Configuration NEXT_PUBLIC_SUPABASE_URL="your-supabase-url" NEXT_PUBLIC_SUPABASE_ANON_KEY="your-supabase-anon-key" SUPABASE_SERVICE_ROLE_KEY="your-supabase-service-role-key" # Web3Auth Configuration WEB3AUTH_CLIENT_ID="YOUR_WEB3AUTH_CLIENT_ID" NEXT_PUBLIC_WEB3AUTH_CLIENT_ID="YOUR_WEB3AUTH_CLIENT_ID" NEXT_PUBLIC_WEB3AUTH_NETWORK="testnet" # "mainnet" for production # NextAuth Configuration NEXTAUTH_URL="http://localhost:3000" NEXTAUTH_SECRET="your-nextauth-secret-key"
-
Start the development server:
npm run dev
-
Open http://localhost:3000 in your browser to see the application.
LOLand uses Supabase with PostgreSQL for its database with the following key models:
Click to view database schema
-
User
- Stores user profiles, wallet addresses, and Web3Auth credentials
- Manages social relationships and content ownership
-
Meme
- Contains meme content, metadata, and on-chain information if minted
- Tracks views, likes, and monetization metrics
-
Collection
- Groups of memes created by users
- Can be public or private
- Tag & Category
- Organizational metadata for memes
- Enables efficient content discovery
-
Like, Comment, Tip
- Social interactions and monetization
- Records engagement metrics
-
Follow & Notification
- Social connections and activity alerts
- Powers the user feed algorithm
-
ContractEvent
- Tracks on-chain events related to the platform
- Ensures blockchain synchronization
-
SystemConfig
- Platform-wide configuration settings
- Manages feature flags and parameters
Click to view authentication details
-
User Authentication:
- Users sign in using Web3Auth with various social logins or their existing wallets
- Upon successful authentication, user information is stored in Supabase
-
Wallet Integration:
- After authentication, users can connect their wallets using RainbowKit
- The connected wallet is associated with the user's account
Click to view NFT minting details
- User uploads a meme to the platform
- Meme metadata is stored in Supabase
- User can initiate minting through the UI
- Smart contract interaction creates an NFT on the blockchain
- Meme is updated in the database with tokenId and contract address
- Creator can set a price and collectors can purchase the NFT
Click to view API routes
| Endpoint | Description |
|---|---|
/api/auth/* |
Authentication endpoints |
/api/users/* |
User profile management |
/api/memes/* |
Meme creation, retrieval, and management |
/api/collections/* |
Collection creation and management |
/api/social/* |
Social interactions (likes, comments, follows) |
/api/tips/* |
Cryptocurrency tipping functionality |
/api/nft/* |
NFT minting and marketplace functionality |
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
Click to view contribution guidelines
- 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
This project is licensed under the MIT License - see the LICENSE file for details.