Spaces:
Running
Running
Build an MVP demo of a discussion platform that combines basic features from Reddit and the following requirements. The platform should allow registered users (with email and mobile OTP verification) to join or create topic-based discussion groups. Each group centers around a specific subject, identity, or purpose (e.g., professionals, communities). > > **Core MVP Features:** > - **User Registration:** Email and mobile OTP verification. No anonymous participation. > - **Discussion Groups:** Admin creates initial topics; users can suggest new topics for admin approval. Groups can be open, private, or identity-based. > - **Posting:** Users create text-based posts (text mandatory), with optional images/audio/video. > - **Commenting:** Users can comment publicly or send private messages to other users. > - **Group Discovery:** Groups are listed by popularity (most participants), latest created, recent activity, and subject/category. > - **Ratings:** Users can rate posts; show average rating and number of ratings per post. > - **Moderation:** AI flags objectionable content. Users can report posts. Admin and volunteer editors review flagged content. > - **Navigation:** Suggest and link to related topics/groups for easy switching. > - **External Links:** Users can add links in posts to support their views. > - **AI Summaries:** Periodically generate AI-powered summaries of ongoing discussions. > > **Demo Focus:** > - Prioritize seamless sign-up, group creation, posting, commenting, and moderation. > - Integrate basic AI moderation and group/topic navigation. > - UI can be minimal and functional, suitable for demo purposes. > > **Instructions:** > - Use modern web technologies (e.g., React for frontend, Node.js or Python for backend, PostgreSQL or MongoDB for database). > - Integrate simple AI moderation (flagging/blocking) and basic AI-generated summaries. > - Ensure all features are functional for demonstration, but keep the design simple and clear. **You do not need to attach or reference the original requirements document when using this prompt.** The prompt is fully self-explanatory and includes all necessary details for building and demoing the MVP discussion platform. - Initial Deployment
e2dfaee
verified
| <html lang="en"> | |
| <head> | |
| <meta charset="UTF-8"> | |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> | |
| <title>ConnectHub - Discussion Platform</title> | |
| <script src="https://cdn.tailwindcss.com"></script> | |
| <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css"> | |
| <link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap" rel="stylesheet"> | |
| <script> | |
| tailwind.config = { | |
| theme: { | |
| extend: { | |
| colors: { | |
| primary: '#4F46E5', | |
| secondary: '#10B981', | |
| dark: '#1F2937', | |
| light: '#F9FAFB' | |
| } | |
| } | |
| } | |
| } | |
| </script> | |
| <style> | |
| * { | |
| font-family: 'Inter', sans-serif; | |
| } | |
| .card-shadow { | |
| box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06); | |
| } | |
| .sidebar { | |
| height: calc(100vh - 4rem); | |
| } | |
| .post-content img { | |
| max-width: 100%; | |
| border-radius: 0.5rem; | |
| margin: 0.5rem 0; | |
| } | |
| .post-content a { | |
| color: #4F46E5; | |
| text-decoration: underline; | |
| } | |
| .notification-dot { | |
| position: absolute; | |
| top: -0.25rem; | |
| right: -0.25rem; | |
| width: 1rem; | |
| height: 1rem; | |
| border-radius: 9999px; | |
| background-color: #EF4444; | |
| } | |
| </style> | |
| </head> | |
| <body class="bg-gray-50"> | |
| <!-- Navigation --> | |
| <nav class="bg-white shadow-sm"> | |
| <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8"> | |
| <div class="flex justify-between h-16"> | |
| <div class="flex items-center"> | |
| <div class="flex-shrink-0 flex items-center"> | |
| <div class="bg-primary text-white font-bold text-xl px-3 py-2 rounded-lg">CH</div> | |
| <span class="ml-2 text-xl font-bold text-gray-800">ConnectHub</span> | |
| </div> | |
| <div class="hidden md:ml-6 md:flex md:space-x-8"> | |
| <a href="#" class="border-b-2 border-primary text-gray-900 inline-flex items-center px-1 pt-1 text-sm font-medium">Home</a> | |
| <a href="#" class="border-transparent text-gray-500 hover:border-gray-300 hover:text-gray-700 inline-flex items-center px-1 pt-1 text-sm font-medium">Discover</a> | |
| <a href="#" class="border-transparent text-gray-500 hover:border-gray-300 hover:text-gray-700 inline-flex items-center px-1 pt-1 text-sm font-medium">Groups</a> | |
| </div> | |
| </div> | |
| <div class="flex items-center"> | |
| <div class="flex-shrink-0"> | |
| <button type="button" class="relative inline-flex items-center px-4 py-2 border border-transparent text-sm font-medium rounded-md text-white bg-primary hover:bg-indigo-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500"> | |
| <i class="fas fa-plus mr-2"></i> New Post | |
| </button> | |
| </div> | |
| <div class="ml-3 relative"> | |
| <div class="flex items-center"> | |
| <div class="relative"> | |
| <button id="notification-button" class="p-1 rounded-full text-gray-400 hover:text-gray-500 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500"> | |
| <span class="sr-only">View notifications</span> | |
| <i class="fas fa-bell h-6 w-6"></i> | |
| </button> | |
| <span class="notification-dot"></span> | |
| </div> | |
| <div class="ml-3 relative"> | |
| <div class="flex items-center"> | |
| <button id="user-menu-button" class="max-w-xs flex items-center text-sm rounded-full focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500"> | |
| <span class="sr-only">Open user menu</span> | |
| <img class="h-8 w-8 rounded-full" src="https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80" alt=""> | |
| </button> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| </nav> | |
| <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-6"> | |
| <div class="flex flex-col lg:flex-row gap-6"> | |
| <!-- Main Content --> | |
| <div class="lg:w-3/4"> | |
| <!-- Group Header --> | |
| <div class="bg-white rounded-lg shadow-sm p-6 mb-6"> | |
| <div class="flex items-center mb-4"> | |
| <div class="bg-gray-200 border-2 border-dashed rounded-xl w-16 h-16" /> | |
| <div class="ml-4"> | |
| <h1 class="text-2xl font-bold text-gray-900">Web Development Professionals</h1> | |
| <p class="text-gray-600">A community for web developers to share knowledge, resources, and experiences</p> | |
| </div> | |
| <div class="ml-auto"> | |
| <button class="bg-primary text-white px-4 py-2 rounded-md hover:bg-indigo-700 transition">Join Group</button> | |
| </div> | |
| </div> | |
| <div class="flex space-x-4 text-gray-600"> | |
| <div class="flex items-center"> | |
| <i class="fas fa-users mr-2"></i> | |
| <span>12.4k Members</span> | |
| </div> | |
| <div class="flex items-center"> | |
| <i class="fas fa-file-alt mr-2"></i> | |
| <span>24.7k Posts</span> | |
| </div> | |
| <div class="flex items-center"> | |
| <i class="fas fa-calendar mr-2"></i> | |
| <span>Created: Jan 15, 2023</span> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- Post Creation --> | |
| <div class="bg-white rounded-lg shadow-sm p-6 mb-6"> | |
| <div class="flex"> | |
| <div class="flex-shrink-0"> | |
| <img class="h-10 w-10 rounded-full" src="https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80" alt=""> | |
| </div> | |
| <div class="ml-4 flex-1"> | |
| <textarea placeholder="What do you want to discuss?" class="w-full border border-gray-300 rounded-lg p-3 focus:outline-none focus:ring-2 focus:ring-primary focus:border-transparent" rows="3"></textarea> | |
| <div class="flex justify-between items-center mt-3"> | |
| <div class="flex space-x-3"> | |
| <button class="text-gray-500 hover:text-gray-700"> | |
| <i class="fas fa-image"></i> | |
| </button> | |
| <button class="text-gray-500 hover:text-gray-700"> | |
| <i class="fas fa-link"></i> | |
| </button> | |
| <button class="text-gray-500 hover:text-gray-700"> | |
| <i class="fas fa-microphone"></i> | |
| </button> | |
| </div> | |
| <button class="bg-primary text-white px-4 py-2 rounded-md hover:bg-indigo-700 transition">Post</button> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- Post Filters --> | |
| <div class="flex items-center justify-between mb-4"> | |
| <div class="flex space-x-2"> | |
| <button class="bg-primary text-white px-3 py-1 rounded-md text-sm">Hot</button> | |
| <button class="bg-gray-200 text-gray-700 px-3 py-1 rounded-md text-sm">New</button> | |
| <button class="bg-gray-200 text-gray-700 px-3 py-1 rounded-md text-sm">Top</button> | |
| </div> | |
| <div class="flex items-center"> | |
| <span class="text-gray-600 mr-2 text-sm">Sort by:</span> | |
| <select class="border border-gray-300 rounded-md px-2 py-1 text-sm focus:outline-none focus:ring-2 focus:ring-primary focus:border-transparent"> | |
| <option>Most Relevant</option> | |
| <option>Newest</option> | |
| <option>Highest Rated</option> | |
| </select> | |
| </div> | |
| </div> | |
| <!-- Posts --> | |
| <div class="space-y-6"> | |
| <!-- Post 1 --> | |
| <div class="bg-white rounded-lg shadow-sm overflow-hidden"> | |
| <div class="p-4 flex"> | |
| <div class="flex flex-col items-center mr-4"> | |
| <button class="text-gray-500 hover:text-primary"> | |
| <i class="fas fa-chevron-up"></i> | |
| </button> | |
| <span class="my-1 font-bold text-gray-700">247</span> | |
| <button class="text-gray-500 hover:text-red-500"> | |
| <i class="fas fa-chevron-down"></i> | |
| </button> | |
| </div> | |
| <div class="flex-1"> | |
| <div class="flex items-center mb-2"> | |
| <img class="h-8 w-8 rounded-full" src="https://images.unsplash.com/photo-1494790108377-be9c29b29330?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80" alt=""> | |
| <div class="ml-2"> | |
| <span class="font-medium text-gray-900">Sarah Johnson</span> | |
| <span class="text-gray-500 text-sm ml-2">Posted 3 hours ago</span> | |
| </div> | |
| <div class="ml-auto bg-green-100 text-green-800 text-xs px-2 py-1 rounded-full"> | |
| Verified Member | |
| </div> | |
| </div> | |
| <h2 class="text-xl font-bold text-gray-900 mb-2">How to optimize React performance for large applications?</h2> | |
| <div class="post-content mb-4 text-gray-700"> | |
| <p>I've been working on a large-scale React application and we're starting to see performance issues as we add more features. What are the best practices for optimizing React performance?</p> | |
| <p>Specifically, I'm looking for solutions around:</p> | |
| <ul class="list-disc pl-5 mt-2"> | |
| <li>Component memoization</li> | |
| <li>State management optimization</li> | |
| <li>Code splitting strategies</li> | |
| <li>Lazy loading components</li> | |
| </ul> | |
| <p class="mt-3">I found this article helpful: <a href="#" class="text-blue-500 hover:underline">https://reactjs.org/docs/optimizing-performance.html</a></p> | |
| </div> | |
| <div class="flex items-center justify-between"> | |
| <div class="flex space-x-4 text-gray-500"> | |
| <button class="flex items-center hover:text-primary"> | |
| <i class="far fa-comment mr-1"></i> | |
| <span>84 Comments</span> | |
| </button> | |
| <button class="flex items-center hover:text-green-500"> | |
| <i class="far fa-share-square mr-1"></i> | |
| <span>Share</span> | |
| </button> | |
| <button class="flex items-center hover:text-red-500"> | |
| <i class="far fa-flag mr-1"></i> | |
| <span>Report</span> | |
| </button> | |
| </div> | |
| <div class="flex items-center"> | |
| <div class="flex items-center mr-4"> | |
| <i class="fas fa-star text-yellow-400 mr-1"></i> | |
| <span class="text-gray-700">4.7 (24 ratings)</span> | |
| </div> | |
| <div class="bg-blue-100 text-blue-800 text-xs px-2 py-1 rounded-full"> | |
| <i class="fas fa-robot mr-1"></i> AI Verified | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- AI Summary --> | |
| <div class="bg-indigo-50 border-t border-indigo-100 p-4"> | |
| <div class="flex items-start"> | |
| <div class="flex-shrink-0"> | |
| <div class="bg-indigo-100 text-indigo-800 rounded-full w-8 h-8 flex items-center justify-center"> | |
| <i class="fas fa-robot"></i> | |
| </div> | |
| </div> | |
| <div class="ml-3"> | |
| <h3 class="font-medium text-indigo-800">AI Discussion Summary</h3> | |
| <p class="text-gray-700 mt-1">This post discusses React performance optimization techniques. Key topics include memoization, state management, code splitting, and lazy loading. The community has shared several solutions including React.memo, useMemo, Redux optimizations, and Webpack chunking.</p> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- Comments --> | |
| <div class="border-t border-gray-100 p-4"> | |
| <div class="flex mb-4"> | |
| <img class="h-8 w-8 rounded-full" src="https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80" alt=""> | |
| <div class="ml-3 flex-1"> | |
| <textarea placeholder="Add a comment..." class="w-full border border-gray-300 rounded-lg p-2 text-sm focus:outline-none focus:ring-2 focus:ring-primary focus:border-transparent" rows="1"></textarea> | |
| </div> | |
| </div> | |
| <div class="space-y-4"> | |
| <!-- Comment 1 --> | |
| <div class="flex"> | |
| <img class="h-8 w-8 rounded-full flex-shrink-0" src="https://images.unsplash.com/photo-1560250097-0b93528c311a?ixlib=rb-1.2.1&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80" alt=""> | |
| <div class="ml-3"> | |
| <div class="bg-gray-100 rounded-lg p-3"> | |
| <div class="flex items-center mb-1"> | |
| <span class="font-medium text-gray-900">Alex Chen</span> | |
| <span class="text-gray-500 text-sm ml-2">2 hours ago</span> | |
| </div> | |
| <p class="text-gray-700">Have you tried using React.memo for functional components? It made a huge difference in our app's performance.</p> | |
| </div> | |
| <div class="flex items-center mt-2 text-sm text-gray-500"> | |
| <button class="flex items-center hover:text-primary mr-3"> | |
| <i class="far fa-thumbs-up mr-1"></i> | |
| <span>24</span> | |
| </button> | |
| <button class="flex items-center hover:text-primary mr-3"> | |
| <i class="far fa-thumbs-down mr-1"></i> | |
| </button> | |
| <button class="hover:text-primary">Reply</button> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- Comment 2 --> | |
| <div class="flex"> | |
| <img class="h-8 w-8 rounded-full flex-shrink-0" src="https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?ixlib=rb-1.2.1&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80" alt=""> | |
| <div class="ml-3"> | |
| <div class="bg-gray-100 rounded-lg p-3"> | |
| <div class="flex items-center mb-1"> | |
| <span class="font-medium text-gray-900">Maria Rodriguez</span> | |
| <span class="text-gray-500 text-sm ml-2">1 hour ago</span> | |
| <span class="ml-2 bg-purple-100 text-purple-800 text-xs px-2 py-0.5 rounded-full">Group Moderator</span> | |
| </div> | |
| <p class="text-gray-700">For state management, consider using Redux Toolkit which has built-in optimizations. Also, make sure you're using the useSelector hook properly to avoid unnecessary re-renders.</p> | |
| </div> | |
| <div class="flex items-center mt-2 text-sm text-gray-500"> | |
| <button class="flex items-center hover:text-primary mr-3"> | |
| <i class="far fa-thumbs-up mr-1"></i> | |
| <span>18</span> | |
| </button> | |
| <button class="flex items-center hover:text-primary mr-3"> | |
| <i class="far fa-thumbs-down mr-1"></i> | |
| </button> | |
| <button class="hover:text-primary">Reply</button> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- Post 2 --> | |
| <div class="bg-white rounded-lg shadow-sm overflow-hidden"> | |
| <div class="p-4 flex"> | |
| <div class="flex flex-col items-center mr-4"> | |
| <button class="text-gray-500 hover:text-primary"> | |
| <i class="fas fa-chevron-up"></i> | |
| </button> | |
| <span class="my-1 font-bold text-gray-700">189</span> | |
| <button class="text-gray-500 hover:text-red-500"> | |
| <i class="fas fa-chevron-down"></i> | |
| </button> | |
| </div> | |
| <div class="flex-1"> | |
| <div class="flex items-center mb-2"> | |
| <img class="h-8 w-8 rounded-full" src="https://images.unsplash.com/photo-1506794778202-cad84cf45f1d?ixlib=rb-1.2.1&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80" alt=""> | |
| <div class="ml-2"> | |
| <span class="font-medium text-gray-900">David Kim</span> | |
| <span class="text-gray-500 text-sm ml-2">Posted 1 day ago</span> | |
| </div> | |
| </div> | |
| <h2 class="text-xl font-bold text-gray-900 mb-2">What's your favorite CSS framework in 2023?</h2> | |
| <div class="post-content mb-4 text-gray-700"> | |
| <p>With so many CSS frameworks available, I'm curious what everyone is using for new projects this year. Tailwind CSS seems to be gaining popularity, but Bootstrap still has a strong presence.</p> | |
| <div class="bg-gray-200 border-2 border-dashed rounded-xl w-full h-48 mt-3"></div> | |
| <p class="mt-3">Personally, I've been using Tailwind for most projects because of the utility-first approach and customization options.</p> | |
| </div> | |
| <div class="flex items-center justify-between"> | |
| <div class="flex space-x-4 text-gray-500"> | |
| <button class="flex items-center hover:text-primary"> | |
| <i class="far fa-comment mr-1"></i> | |
| <span>42 Comments</span> | |
| </button> | |
| <button class="flex items-center hover:text-green-500"> | |
| <i class="far fa-share-square mr-1"></i> | |
| <span>Share</span> | |
| </button> | |
| <button class="flex items-center hover:text-red-500"> | |
| <i class="far fa-flag mr-1"></i> | |
| <span>Report</span> | |
| </button> | |
| </div> | |
| <div class="flex items-center"> | |
| <div class="flex items-center mr-4"> | |
| <i class="fas fa-star text-yellow-400 mr-1"></i> | |
| <span class="text-gray-700">4.2 (15 ratings)</span> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- Sidebar --> | |
| <div class="lg:w-1/4"> | |
| <!-- Group Info --> | |
| <div class="bg-white rounded-lg shadow-sm p-6 mb-6"> | |
| <h3 class="font-bold text-lg text-gray-900 mb-4">About This Group</h3> | |
| <p class="text-gray-700 mb-4">A community for professional web developers to discuss frameworks, best practices, and industry trends. All skill levels welcome!</p> | |
| <div class="flex items-center text-gray-600 mb-2"> | |
| <i class="fas fa-user-shield mr-2"></i> | |
| <span>Admin: Sarah Johnson</span> | |
| </div> | |
| <div class="flex items-center text-gray-600 mb-2"> | |
| <i class="fas fa-calendar mr-2"></i> | |
| <span>Created: January 15, 2023</span> | |
| </div> | |
| <div class="flex items-center text-gray-600 mb-4"> | |
| <i class="fas fa-users mr-2"></i> | |
| <span>12,421 members</span> | |
| </div> | |
| <button class="w-full bg-primary text-white py-2 rounded-md hover:bg-indigo-700 transition">Join Group</button> | |
| </div> | |
| <!-- Related Groups --> | |
| <div class="bg-white rounded-lg shadow-sm p-6 mb-6"> | |
| <h3 class="font-bold text-lg text-gray-900 mb-4">Related Groups</h3> | |
| <div class="space-y-4"> | |
| <div class="flex items-center"> | |
| <div class="bg-gray-200 border-2 border-dashed rounded-xl w-10 h-10" /> | |
| <div class="ml-3"> | |
| <h4 class="font-medium text-gray-900">JavaScript Developers</h4> | |
| <p class="text-gray-600 text-sm">8.2k members</p> | |
| </div> | |
| </div> | |
| <div class="flex items-center"> | |
| <div class="bg-gray-200 border-2 border-dashed rounded-xl w-10 h-10" /> | |
| <div class="ml-3"> | |
| <h4 class="font-medium text-gray-900">Frontend Architects</h4> | |
| <p class="text-gray-600 text-sm">5.7k members</p> | |
| </div> | |
| </div> | |
| <div class="flex items-center"> | |
| <div class="bg-gray-200 border-2 border-dashed rounded-xl w-10 h-10" /> | |
| <div class="ml-3"> | |
| <h4 class="font-medium text-gray-900">React Community</h4> | |
| <p class="text-gray-600 text-sm">15.3k members</p> | |
| </div> | |
| </div> | |
| <div class="flex items-center"> | |
| <div class="bg-gray-200 border-2 border-dashed rounded-xl w-10 h-10" /> | |
| <div class="ml-3"> | |
| <h4 class="font-medium text-gray-900">CSS Masters</h4> | |
| <p class="text-gray-600 text-sm">6.9k members</p> | |
| </div> | |
| </div> | |
| </div> | |
| <button class="w-full mt-4 text-primary font-medium py-2 rounded-md hover:bg-indigo-50 transition">View All Related Groups</button> | |
| </div> | |
| <!-- Group Rules --> | |
| <div class="bg-white rounded-lg shadow-sm p-6 mb-6"> | |
| <h3 class="font-bold text-lg text-gray-900 mb-4">Group Rules</h3> | |
| <ul class="space-y-2 text-gray-700"> | |
| <li class="flex items-start"> | |
| <i class="fas fa-check-circle text-green-500 mt-1 mr-2"></i> | |
| <span>Be respectful to other members</span> | |
| </li> | |
| <li class="flex items-start"> | |
| <i class="fas fa-check-circle text-green-500 mt-1 mr-2"></i> | |
| <span>No spam or self-promotion</span> | |
| </li> | |
| <li class="flex items-start"> | |
| <i class="fas fa-check-circle text-green-500 mt-1 mr-2"></i> | |
| <span>Keep discussions relevant to web development</span> | |
| </li> | |
| <li class="flex items-start"> | |
| <i class="fas fa-check-circle text-green-500 mt-1 mr-2"></i> | |
| <span>Cite sources when sharing technical information</span> | |
| </li> | |
| </ul> | |
| </div> | |
| <!-- Moderation Panel --> | |
| <div class="bg-white rounded-lg shadow-sm p-6"> | |
| <h3 class="font-bold text-lg text-gray-900 mb-4">Moderation Panel</h3> | |
| <div class="mb-4"> | |
| <h4 class="font-medium text-gray-900 mb-2">Flagged Content</h4> | |
| <div class="bg-yellow-50 border border-yellow-200 rounded-lg p-3 mb-2"> | |
| <div class="flex justify-between"> | |
| <span class="font-medium">Potential offensive language</span> | |
| <span class="text-xs bg-yellow-100 text-yellow-800 px-2 py-1 rounded">AI Flagged</span> | |
| </div> | |
| <p class="text-sm text-gray-700 mt-1">"This approach is completely stupid and..."</p> | |
| <div class="flex mt-2 space-x-2"> | |
| <button class="text-xs bg-red-100 text-red-800 px-2 py-1 rounded hover:bg-red-200">Remove</button> | |
| <button class="text-xs bg-green-100 text-green-800 px-2 py-1 rounded hover:bg-green-200">Approve</button> | |
| <button class="text-xs bg-gray-100 text-gray-800 px-2 py-1 rounded hover:bg-gray-200">Ignore</button> | |
| </div> | |
| </div> | |
| </div> | |
| <div> | |
| <h4 class="font-medium text-gray-900 mb-2">User Reports</h4> | |
| <div class="bg-red-50 border border-red-200 rounded-lg p-3"> | |
| <div class="flex justify-between"> | |
| <span class="font-medium">Spam content</span> | |
| <span class="text-xs bg-red-100 text-red-800 px-2 py-1 rounded">User Report</span> | |
| </div> | |
| <p class="text-sm text-gray-700 mt-1">"Check out my new course at discountlink.com"</p> | |
| <div class="flex mt-2 space-x-2"> | |
| <button class="text-xs bg-red-100 text-red-800 px-2 py-1 rounded hover:bg-red-200">Remove</button> | |
| <button class="text-xs bg-green-100 text-green-800 px-2 py-1 rounded hover:bg-green-200">Approve</button> | |
| <button class="text-xs bg-gray-100 text-gray-800 px-2 py-1 rounded hover:bg-gray-200">Ignore</button> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- Mobile Navigation --> | |
| <div class="fixed bottom-0 left-0 right-0 bg-white border-t border-gray-200 md:hidden"> | |
| <div class="flex justify-around"> | |
| <a href="#" class="flex flex-col items-center justify-center p-3 text-primary"> | |
| <i class="fas fa-home"></i> | |
| <span class="text-xs mt-1">Home</span> | |
| </a> | |
| <a href="#" class="flex flex-col items-center justify-center p-3 text-gray-500 hover:text-primary"> | |
| <i class="fas fa-search"></i> | |
| <span class="text-xs mt-1">Discover</span> | |
| </a> | |
| <a href="#" class="flex flex-col items-center justify-center p-3 text-gray-500 hover:text-primary"> | |
| <i class="fas fa-plus-circle text-2xl text-primary"></i> | |
| </a> | |
| <a href="#" class="flex flex-col items-center justify-center p-3 text-gray-500 hover:text-primary"> | |
| <i class="fas fa-users"></i> | |
| <span class="text-xs mt-1">Groups</span> | |
| </a> | |
| <a href="#" class="flex flex-col items-center justify-center p-3 text-gray-500 hover:text-primary"> | |
| <i class="fas fa-user"></i> | |
| <span class="text-xs mt-1">Profile</span> | |
| </a> | |
| </div> | |
| </div> | |
| <script> | |
| // Simulate AI moderation flagging | |
| document.addEventListener('DOMContentLoaded', function() { | |
| // Simulate notification count | |
| const notificationDot = document.querySelector('.notification-dot'); | |
| notificationDot.textContent = '3'; | |
| // Simulate AI moderation | |
| const posts = document.querySelectorAll('.bg-white.rounded-lg'); | |
| posts.forEach(post => { | |
| const content = post.querySelector('.post-content').textContent; | |
| if (content.toLowerCase().includes('stupid')) { | |
| const flagBadge = document.createElement('div'); | |
| flagBadge.className = 'ml-2 bg-red-100 text-red-800 text-xs px-2 py-1 rounded-full'; | |
| flagBadge.innerHTML = '<i class="fas fa-flag mr-1"></i> Flagged'; | |
| post.querySelector('.flex.items-center.mb-2').appendChild(flagBadge); | |
| } | |
| }); | |
| // Simulate join group functionality | |
| const joinButtons = document.querySelectorAll('button:contains("Join Group")'); | |
| joinButtons.forEach(button => { | |
| button.addEventListener('click', function() { | |
| if (this.textContent === 'Join Group') { | |
| this.textContent = 'Joined'; | |
| this.classList.remove('bg-primary'); | |
| this.classList.add('bg-green-100', 'text-green-800'); | |
| } else { | |
| this.textContent = 'Join Group'; | |
| this.classList.add('bg-primary', 'text-white'); | |
| this.classList.remove('bg-green-100', 'text-green-800'); | |
| } | |
| }); | |
| }); | |
| }); | |
| </script> | |
| <p style="border-radius: 8px; text-align: center; font-size: 12px; color: #fff; margin-top: 16px;position: fixed; left: 8px; bottom: 8px; z-index: 10; background: rgba(0, 0, 0, 0.8); padding: 4px 8px;">Made with <img src="https://enzostvs-deepsite.hf.space/logo.svg" alt="DeepSite Logo" style="width: 16px; height: 16px; vertical-align: middle;display:inline-block;margin-right:3px;filter:brightness(0) invert(1);"><a href="https://enzostvs-deepsite.hf.space" style="color: #fff;text-decoration: underline;" target="_blank" >DeepSite</a> - 🧬 <a href="https://enzostvs-deepsite.hf.space?remix=snikhilesh/cozi" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body> | |
| </html> |