{"id":31045339,"url":"https://github.com/rajjitlai/disappearo","last_synced_at":"2025-09-14T17:02:16.977Z","repository":{"id":314051084,"uuid":"1046717219","full_name":"rajjitlai/Disappearo","owner":"rajjitlai","description":"Disappearo - A secure, ephemeral messaging platform where conversations disappear automatically, ensuring complete privacy and data protection.","archived":false,"fork":false,"pushed_at":"2025-09-10T07:38:24.000Z","size":2264,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-10T10:00:07.915Z","etag":null,"topics":["appwrite","ephemeral","full-stack","hackathon","messaging","secure","tailwindcss","ts","website"],"latest_commit_sha":null,"homepage":"https://disappearo.appwrite.network/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rajjitlai.png","metadata":{"files":{"readme":"Readme.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-08-29T05:43:37.000Z","updated_at":"2025-09-10T07:38:28.000Z","dependencies_parsed_at":"2025-09-10T10:00:12.689Z","dependency_job_id":"def49632-06af-4e93-a4eb-fc4b2b0a1766","html_url":"https://github.com/rajjitlai/Disappearo","commit_stats":null,"previous_names":["rajjitlai/disappearo"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/rajjitlai/Disappearo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rajjitlai%2FDisappearo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rajjitlai%2FDisappearo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rajjitlai%2FDisappearo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rajjitlai%2FDisappearo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rajjitlai","download_url":"https://codeload.github.com/rajjitlai/Disappearo/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rajjitlai%2FDisappearo/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":275136762,"owners_count":25411709,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-14T02:00:10.474Z","response_time":75,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["appwrite","ephemeral","full-stack","hackathon","messaging","secure","tailwindcss","ts","website"],"created_at":"2025-09-14T17:01:28.082Z","updated_at":"2025-09-14T17:02:16.960Z","avatar_url":"https://github.com/rajjitlai.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Disappearo\n\n## Ephemeral Privacy-First Chat\n\n[![Appwrite Sites Hackathon 2025](https://img.shields.io/badge/Appwrite%20Sites%20Hackathon-2025-blue)](https://hackathon.appwrite.network/)\n[![Next.js 15](https://img.shields.io/badge/Next.js-15-black)](https://nextjs.org/)\n[![React 19](https://img.shields.io/badge/React-19-blue)](https://reactjs.org/)\n[![Appwrite](https://img.shields.io/badge/Appwrite-Backend%20as%20a%20Service-red)](https://appwrite.io/)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\n\u003e **Built for the [Appwrite Sites Hackathon 2025](https://hackathon.appwrite.network/)** - A secure, ephemeral messaging platform where conversations disappear automatically, ensuring complete privacy and data protection.\n\n## 🚀 Live Demo\n\n- **Deployed Site**: \u003chttps://disappearo.appwrite.network\u003e\n- **GitHub Repository**: \u003chttps://github.com/rajjitlai/Disappearo\u003e\n\n## 👤 Author \u0026 Credits\n\n- **Author**: Rajjit Laishram (\u003chttps://github.com/rajjitai\u003e)\n- **Repository**: \u003chttps://github.com/rajjitlai/Disappearo\u003e\n- **Built with**: Next.js 15, React 19, Tailwind v4, Appwrite\n- **Assisted by**: ChatGPT and Cursor AI for code optimization and documentation\n- **Logo**: Designed with Canva\n\n## 🎯 Problem \u0026 Solution\n\n### The Problem\n\n- 📱 **Permanent Data**: Digital conversations leave permanent traces\n- 🔒 **Privacy Concerns**: Data breaches and surveillance risks\n- 🚫 **No Control**: Users can't control their conversation data\n- ⚠️ **Content Safety**: Harmful content spreads without proper moderation\n\n### Our Solution\n\n- ⏰ **Ephemeral Messaging**: Messages auto-delete after 5 minutes of inactivity\n- 🛡️ **Privacy First**: No permanent data storage, complete user control\n- 🤖 **AI Safety**: Smart content moderation with progressive enforcement\n- 🔐 **Secure Authentication**: Passwordless magic link authentication\n\n## ✨ Features\n\n### Core Features\n\n- **Ephemeral Messaging**: Messages disappear automatically after 5 minutes of inactivity\n- **Magic Link Authentication**: Secure, passwordless login via Appwrite\n- **Real-time Communication**: Instant messaging with Appwrite Realtime\n- **Dual-Approval Exports**: Both participants must consent to save conversations\n- **No Message Editing**: Messages cannot be edited after sending to preserve moderation integrity\n- **Image Sharing**: Secure image uploads with AI moderation\n- **Responsive Design**: Works perfectly on all devices\n\n### Privacy \u0026 Security\n\n- **No Data Persistence**: Conversations are truly temporary\n- **AI-Powered Moderation**: OpenModerator integration for content safety\n- **Strike System**: Progressive enforcement (3 strikes = temporary ban)\n- **Auto-Unban**: 10-minute temporary bans with automatic restoration\n- **Security Headers**: Comprehensive CSP and security policies\n- **Rate Limiting**: API abuse prevention\n\n### User Experience\n\n- **Light/Dark Theme**: System preference detection with manual toggle\n- **Emoji Picker**: Enhanced communication with emoji support\n- **Loading States**: Smooth user experience with proper feedback\n- **Error Handling**: Graceful failure states and recovery\n- **Mobile-First**: Optimized for mobile and desktop devices\n\n## 🛠️ Tech Stack\n\n### Frontend\n\n- **Next.js 15**: Latest React framework with App Router\n- **React 19**: Modern UI with latest hooks and patterns\n- **TypeScript**: Full type safety throughout the application\n- **Tailwind CSS v4**: Utility-first styling with custom CSS variables\n- **React Hot Toast**: User feedback and notifications\n\n### Backend \u0026 Services\n\n- **Appwrite Cloud**: Complete Backend-as-a-Service solution\n- **Appwrite Database**: User profiles, messages, and session management\n- **Appwrite Realtime**: Live messaging and real-time updates\n- **Appwrite Storage**: Secure file uploads and image sharing\n- **Appwrite Auth**: Magic link authentication system\n- **content-checker**: OpenModerator's TypeScript package for AI content moderation\n\n### Security \u0026 Performance\n\n- **Content Security Policy**: XSS prevention and security headers\n- **Rate Limiting**: API endpoint protection\n- **Input Validation**: Sanitized user inputs and XSS protection\n- **Secure Cookies**: SameSite cookie implementation\n- **Global CDN**: Fast worldwide delivery via Appwrite Sites\n\n## 🚀 Getting Started\n\n### Prerequisites\n\n- Node.js 18+\n- Appwrite Cloud account\n- OpenModerator API key (get free at \u003chttps://www.openmoderator.com\u003e)\n\n### Installation\n\n1. **Clone the repository**\n\n```bash\ngit clone https://github.com/rajjitlai/Disappearo.git\ncd Disappearo\n```\n\n2. **Install dependencies**\n\n```bash\nnpm install\n```\n\n3. **Configure environment variables**\nCreate a `.env.local` file with the following variables:\n\n```bash\n# Appwrite Configuration\nNEXT_PUBLIC_APPWRITE_ENDPOINT=your_appwrite_endpoint\nNEXT_PUBLIC_APPWRITE_PROJECT=your_project_id\nNEXT_PUBLIC_APPWRITE_DATABASE_ID=your_database_id\nNEXT_PUBLIC_APPWRITE_PROFILE_COLLECTION_ID=your_profile_collection_id\nNEXT_PUBLIC_APPWRITE_CHATREQUESTS_COLLECTION_ID=your_chatrequests_collection_id\nNEXT_PUBLIC_APPWRITE_CHATSESSIONS_COLLECTION_ID=your_chatsessions_collection_id\nNEXT_PUBLIC_APPWRITE_MESSAGES_COLLECTION_ID=your_messages_collection_id\nNEXT_PUBLIC_APPWRITE_BUCKET_ID=your_storage_bucket_id\nNEXT_PUBLIC_APPWRITE_BAD_WORDS_COLLECTION_ID=your_bad_words_collection_id\nNEXT_PUBLIC_APPWRITE_CONTACT_COLLECTION_ID=your_contact_collection_id\n\n# OpenModerator AI Moderation via content-checker package\n# Get your free API key at https://www.openmoderator.com\nOPENMODERATOR_API_KEY=your_openmoderator_api_key\nUSE_OPENMODERATOR_MODERATION=true\n\n# Optional: Disable image moderation for development\nDISABLE_IMAGE_MODERATION=false\n```\n\n4. **Set up Appwrite Collections**\nFollow the [Appwrite Setup Guide](docs/APPWRITE_SETUP.md) to configure your database collections.\n\n5. **Run the development server**\n\n```bash\nnpm run dev\n```\n\n6. **Open your browser**\nNavigate to [http://localhost:3000](http://localhost:3000)\n\n## 🏗️ Project Structure\n\n```\ndisappearo/\n├── src/\n│   ├── app/\n│   │   ├── api/moderate/          # AI moderation API endpoint\n│   │   ├── chat/[roomId]/         # Dynamic chat interface\n│   │   ├── components/            # Reusable UI components\n│   │   │   ├── ui/                # Base UI components\n│   │   │   ├── Footer.tsx         # Site footer\n│   │   │   ├── MessageBubble.tsx  # Chat message component\n│   │   │   ├── MessageInput.tsx   # Message input component\n│   │   │   ├── ResponsiveNav.tsx  # Navigation component\n│   │   │   └── ThemeToggle.tsx    # Theme switcher\n│   │   ├── hooks/                 # Custom React hooks\n│   │   ├── lib/                   # Appwrite configuration \u0026 utilities\n│   │   ├── state/                 # Authentication context\n│   │   └── [pages]/               # Application pages\n│   ├── middleware.ts              # Security middleware\n│   └── globals.css               # Global styles \u0026 theme system\n├── public/                        # Static assets\n├── docs/                          # Documentation (slides, summary, setup)\n│   ├── APPWRITE_SETUP.md\n│   ├── PRESENTATION_SLIDES.md\n│   └── SUBMISSION_SUMMARY.md\n├── CHANGELOG.md                   # Changes during hackathon\n└── README.md                      # This file\n```\n\n## 🔧 Appwrite Setup\n\n### Required Collections\n\n1. **profiles** - User profiles and moderation data\n2. **chatrequests** - Chat request management\n3. **chatsessions** - Active chat sessions\n4. **messages** - Individual messages\n5. **bad_words** - Custom moderation word list\n6. **contact** - Contact form submissions\n\n### Storage Bucket\n\n- **images** - Secure image uploads with public view access\n\nSee [docs/APPWRITE_SETUP.md](docs/APPWRITE_SETUP.md) for detailed setup instructions.\n\n## 🖼️ Screenshots\n\nHome\n\n![Home](docs/assets/home.png)\n\n## 🚀 Deployment on Appwrite Sites\n\n### Prerequisites\n\n- Appwrite Cloud account\n- GitHub repository\n- Environment variables configured\n\n### Deployment Steps\n\n1. **Connect Repository**\n   - Go to Appwrite Console → Sites\n   - Click \"Create Site\"\n   - Connect your GitHub repository\n\n2. **Configure Build Settings**\n   - Framework: Next.js\n   - Build Command: `npm run build`\n   - Output Directory: `.next`\n   - Node Version: 18+\n\n3. **Set Environment Variables**\n   - Add all required environment variables\n   - Ensure `NEXT_PUBLIC_` variables are set\n\n4. **Deploy**\n   - Click \"Deploy\" to start the build process\n   - Your site will be available at `your-project.appwrite.network`\n\n5. **Custom Domain (Optional)**\n   - Configure custom domain in Appwrite Console\n   - Update DNS settings as instructed\n\n## 🎨 Theming System\n\nDisappearo features a sophisticated theming system with:\n\n- **CSS Variables**: Consistent color system across components\n- **System Preference Detection**: Automatic light/dark mode\n- **Manual Toggle**: User-controlled theme switching\n- **Smooth Transitions**: Animated theme changes\n- **Accessibility**: High contrast and readable colors\n\n### Theme Variables\n\n```css\n:root {\n  --background: #ffffff;\n  --foreground: #171717;\n  --card-background: #ffffff;\n  --muted: #f3f4f6;\n  --border: #e5e7eb;\n  /* ... more variables */\n}\n```\n\n## 🔒 Security Features\n\n### Content Security Policy\n\n- XSS prevention with comprehensive CSP headers\n- Frame-ancestors 'none' for clickjacking protection\n- Strict script and style source policies\n\n### Authentication Security\n\n- Magic link authentication (no passwords)\n- Secure session management\n- Automatic session cleanup on logout\n\n### Data Protection\n\n- No permanent message storage\n- Automatic data deletion\n- Encrypted data transmission\n- Input sanitization and validation\n\n### AI Moderation\n\n- Custom bad words filtering\n- content-checker package with Google's Perspective API\n- Image NSFW detection\n- Progressive enforcement system\n\n## 📊 Performance\n\n### Optimization Features\n\n- **Next.js 15**: Latest performance optimizations\n- **App Router**: Improved routing and code splitting\n- **Image Optimization**: Next.js image component\n- **Bundle Analysis**: Optimized JavaScript bundles\n\n### Appwrite Benefits\n\n- **Global CDN**: Fast worldwide delivery\n- **Auto-scaling**: Handles traffic spikes\n- **DDoS Protection**: Built-in security\n- **99.9% Uptime**: Reliable hosting\n\n## 🤝 Contributing\n\nThis project was built for the Appwrite Sites Hackathon 2025. While the hackathon version is complete, suggestions and improvements are welcome!\n\n### Development Guidelines\n\n1. Fork the repository\n2. Create a feature branch\n3. Make your changes\n4. Test thoroughly\n5. Submit a pull request\n\n## 📄 License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frajjitlai%2Fdisappearo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frajjitlai%2Fdisappearo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frajjitlai%2Fdisappearo/lists"}