{"title": "BloomersTV", "logoImg": "bafkreiban64dy7iguqsqicmi5i4qvwjsh6xgzj2ahyr4uwk7i3wt526njy", "website": "https://bloomers.tv", "bannerImg": "bafkreicukajmitiaubhq6konfkynvu7cygfkz5flzzfe6lc5ekvz6qscri", "createdAt": 1742905672916, "userGithub": "RathodDeven", "credentials": {"github": {"type": ["VerifiableCredential"], "proof": {"type": "EthereumEip712Signature2021", "created": "2025-03-25T12:27:37.312Z", "@context": "https://w3id.org/security/suites/eip712sig-2021/v1", "proofValue": "0xbba82ebc2cc25bc8188f943125b27c78100175fd57fa3a295666f526b5f40f9415746e885df31b5290716d8caf8e556403c7f05f8442fbffbd36ed17c84f07fd1b", "eip712Domain": {"types": {"Proof": [{"name": "@context", "type": "string"}, {"name": "created", "type": "string"}, {"name": "proofPurpose", "type": "string"}, {"name": "type", "type": "string"}, {"name": "verificationMethod", "type": "string"}], "@context": [{"name": "nullifiers", "type": "NullifiersContext"}, {"name": "provider", "type": "string"}], "Document": [{"name": "@context", "type": "string[]"}, {"name": "credentialSubject", "type": "CredentialSubject"}, {"name": "expirationDate", "type": "string"}, {"name": "issuanceDate", "type": "string"}, {"name": "issuer", "type": "string"}, {"name": "proof", "type": "Proof"}, {"name": "type", "type": "string[]"}], "EIP712Domain": [{"name": "name", "type": "string"}], "CredentialSubject": [{"name": "@context", "type": "@context"}, {"name": "nullifiers", "type": "string[]"}, {"name": "id", "type": "string"}, {"name": "provider", "type": "string"}], "NullifiersContext": [{"name": "@container", "type": "string"}, {"name": "@type", "type": "string"}]}, "domain": {"name": "VerifiableCredential"}, "primaryType": "Document"}, "proofPurpose": "assertionMethod", "verificationMethod": "did:ethr:0xd6f8d6ca86aa01e551a311d670a0d1bd8577e5fb#controller"}, "issuer": "did:ethr:0xd6f8d6ca86aa01e551a311d670a0d1bd8577e5fb", "@context": ["https://www.w3.org/2018/credentials/v1", "https://w3id.org/vc/status-list/2021/v1"], "issuanceDate": "2025-03-25T12:27:37.312Z", "expirationDate": "2025-06-23T12:27:37.312Z", "credentialSubject": {"id": "did:pkh:eip155:1:0xC8D0E78379d96D0A436b8597835670b13445A6Db", "@context": {"provider": "https://schema.org/Text", "nullifiers": {"@type": "https://schema.org/Text", "@container": "@list"}}, "provider": "ClearTextGithubOrg#bloomerstv#69627223", "nullifiers": ["v0.0.0:R/HWQEtAQlxFbt7SifYa36LlZGu4/RLfPjng/MdGdRY="]}}, "twitter": {"type": ["VerifiableCredential"], "proof": {"type": "EthereumEip712Signature2021", "created": "2025-03-25T12:27:07.930Z", "@context": "https://w3id.org/security/suites/eip712sig-2021/v1", "proofValue": "0xfe881d076822f850e2e643fb7e9969432d111ed1e11946e5756b8ef5d58ed2c87909e46f4bb761973947863ecf7dd3cfa9f66395d988278b697dd33a59d408901b", "eip712Domain": {"types": {"Proof": [{"name": "@context", "type": "string"}, {"name": "created", "type": "string"}, {"name": "proofPurpose", "type": "string"}, {"name": "type", "type": "string"}, {"name": "verificationMethod", "type": "string"}], "@context": [{"name": "nullifiers", "type": "NullifiersContext"}, {"name": "provider", "type": "string"}], "Document": [{"name": "@context", "type": "string[]"}, {"name": "credentialSubject", "type": "CredentialSubject"}, {"name": "expirationDate", "type": "string"}, {"name": "issuanceDate", "type": "string"}, {"name": "issuer", "type": "string"}, {"name": "proof", "type": "Proof"}, {"name": "type", "type": "string[]"}], "EIP712Domain": [{"name": "name", "type": "string"}], "CredentialSubject": [{"name": "@context", "type": "@context"}, {"name": "nullifiers", "type": "string[]"}, {"name": "id", "type": "string"}, {"name": "provider", "type": "string"}], "NullifiersContext": [{"name": "@container", "type": "string"}, {"name": "@type", "type": "string"}]}, "domain": {"name": "VerifiableCredential"}, "primaryType": "Document"}, "proofPurpose": "assertionMethod", "verificationMethod": "did:ethr:0xd6f8d6ca86aa01e551a311d670a0d1bd8577e5fb#controller"}, "issuer": "did:ethr:0xd6f8d6ca86aa01e551a311d670a0d1bd8577e5fb", "@context": ["https://www.w3.org/2018/credentials/v1", "https://w3id.org/vc/status-list/2021/v1"], "issuanceDate": "2025-03-25T12:27:07.930Z", "expirationDate": "2025-06-23T12:27:07.930Z", "credentialSubject": {"id": "did:pkh:eip155:1:0xC8D0E78379d96D0A436b8597835670b13445A6Db", "@context": {"provider": "https://schema.org/Text", "nullifiers": {"@type": "https://schema.org/Text", "@container": "@list"}}, "provider": "ClearTextTwitter#bloomerstv", "nullifiers": ["v0.0.0:PdzhqF2c/ysaM7o83lHbGlP9xYmkVK4QY7ykOf6N2gE="]}}}, "description": "# BloomersTV is an open-source live-streaming platform on Lens Protocol. \n\n## Features\n\n- **Live Chat**: You can view live comments under the Lens stream post from all other Lens clients in real-time and send instant live messages from BloomersTV.\n- **Real-Time Moderation**: Block and remove unwanted users from the live chat in real-time.\n- **Super Chat**: Support live streamers by sending super chats using dozens of available tokens.\n- **Clip & Share**: Take clips from live streams and post them as videos on Lens.\n- **Content Management**: Manage all stream replays and clips via the content management page after the streams end.\n- **Super Bloomers Plan**: Support BloomersTV and gain additional features, including:\n  - 28 days of VOD (instead of 7 days for the free plan)\n  - Super Bloomers Badge\n  - Zero percent revenue split on collect features (compared to 5% for free plan)\n- **Watch Modes**: Choose between two watch modes:\n  - **Low Latency**: Lower latency but might experience occasional lags.\n  - **Quality**: Smoother viewing experience but with higher latency.\n- **Web Push Notifications**: Get notified when your subscribed streamer goes live with web push notifications.\n- **Mobile Optimization & PWA Support**: Enjoy a fully optimized mobile experience on both Android and iOS devices, with PWA support for quick access.\n- **Streaming Options**: Stream using OBS for the best quality (recommended) or stream directly from the browser by sharing your camera or screen quickly.\n- **Playback Control**: Select playback speed and adjust the quality for stream replays.\n- **Offline Page**: Show your last public stream replay on your offline page when not live.\n- **Community Posting**: Post text, and image Lens posts, and engage with the community through a dedicated posts section.\n- **Stream Replay Visibility**: Set replay visibility to public, unlisted, or private based on your preference.\n- **Profile Page Frame**: A unique frame that works on both lens & farcaster, for your profile page \n\n## How will the donations be used?\n\n- **Build Mobile Apps**: Create Android and iOS apps for BloomersTV to make it easier for users to access content.\n- **Streaming Costs**: Pay for Livepeer streaming to ensure high-quality broadcasts.\n- **Website & API Hosting**: Cover the costs of hosting the BloomersTV website for a smooth user experience.\n- **IPFS Storage**: Store images and videos securely on IPFS for reliable access.\n- **Open API**: Provide an open API for easy integration with Lens apps and custom stream frontends.\n\n## Technologies Used\n\n- **Frontend**: React, Next.js, Tailwind CSS\n- **Backend**: Node.js, Express, Apollo Client\n- **Blockchain & Web3**: Lens Protocol, Ethers.js, Wagmi, RainbowKit\n- **Database**: MongoDB\n- **Streaming**: Livepeer, HLS (HTTP Live Streaming)\n- **Package Manager**: pnpm\n- **File Storage**: IPFS (via 4everland STS Token)\n- **UI/UX**: MUI (Material-UI), Framer Motion\n- **State Management**: Zustand\n- **GraphQL**: GraphQL, Apollo Client, GraphQL Code Generator\n\n## Impact Goals:\n\nBloomersTV aims to transform live streaming by giving creators full control over their earnings and distributing streams across multiple platforms for greater reach. It fosters a creator-first ecosystem that encourages open participation and community-driven growth.\n\n### Follow the development of this platform [here](https://hey.xyz/u/bloomerstv?type=media)", "logoImgData": {}, "bannerImgData": {}, "projectGithub": "bloomerstv", "projectTwitter": "bloomerstv"}