{"id":51594411,"url":"https://github.com/cfryerdev/interconnections","last_synced_at":"2026-07-11T17:02:36.873Z","repository":{"id":307870113,"uuid":"1030938677","full_name":"cfryerdev/interconnections","owner":"cfryerdev","description":"A free connections clone","archived":false,"fork":false,"pushed_at":"2025-08-02T17:29:59.000Z","size":260,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-08-02T19:33:12.602Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cfryerdev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-08-02T16:51:18.000Z","updated_at":"2025-08-02T17:30:03.000Z","dependencies_parsed_at":"2025-08-02T19:33:15.200Z","dependency_job_id":"1649689f-f97d-4048-99f7-6ea9f96eba74","html_url":"https://github.com/cfryerdev/interconnections","commit_stats":null,"previous_names":["cfryerdev/interconnections"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/cfryerdev/interconnections","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cfryerdev%2Finterconnections","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cfryerdev%2Finterconnections/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cfryerdev%2Finterconnections/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cfryerdev%2Finterconnections/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cfryerdev","download_url":"https://codeload.github.com/cfryerdev/interconnections/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cfryerdev%2Finterconnections/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35368768,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-11T02:00:05.354Z","response_time":104,"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":[],"created_at":"2026-07-11T17:02:36.082Z","updated_at":"2026-07-11T17:02:36.864Z","avatar_url":"https://github.com/cfryerdev.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Interconnections 🧩\n\nA fully functional clone of the New York Times Connections game built with React 19 and Tailwind CSS. Challenge yourself to find four groups of four related words from a grid of 16 words!\n\n![Interconnections Game Screenshot](screenshot.png)\n\n## 🎮 Features\n\n- **106 Unique Puzzles** - Months of engaging content with diverse themes\n- **Smart \"One Away\" Detection** - Get helpful feedback when you're close to the answer\n- **URL-Based Sharing** - Share specific puzzles with friends via unique URLs\n- **Random Puzzle Selection** - Discover new challenges with smart exclusion logic\n- **Toast Notifications** - Smooth slide-down animations for user feedback\n- **Responsive Design** - Play seamlessly on desktop, tablet, and mobile\n- **Mistake Tracking** - Visual indicator showing remaining attempts\n- **Word Selection Memory** - Keeps your selections when you're \"one away\"\n\n## 🚀 Getting Started\n\n### Prerequisites\n\n- Node.js (v14 or higher)\n- npm or yarn\n\n### Installation\n\n1. Clone the repository:\n```bash\ngit clone https://github.com/yourusername/interconnections.git\ncd interconnections\n```\n\n2. Install dependencies:\n```bash\nnpm install\n```\n\n3. Start the development server:\n```bash\nnpm start\n```\n\n4. Open [http://localhost:3000](http://localhost:3000) in your browser\n\n## 🎯 How to Play\n\n1. **Select Words**: Click up to 4 words that you think belong together\n2. **Submit**: Hit the Submit button when you have exactly 4 words selected\n3. **Find Groups**: Discover all four categories before making 4 mistakes\n4. **Get Hints**: Look for the \"One away!\" notification when you're close\n5. **Share**: Copy the URL to share specific puzzles with friends\n\n### Difficulty Levels\n\nCategories are color-coded by difficulty:\n- 🟢 **Green**: Easiest\n- 🟣 **Purple**: Medium\n- 🟡 **Yellow**: Hard  \n- 🔵 **Blue**: Hardest\n\n## 🛠️ Technology Stack\n\n- **React 19** - Modern React with hooks\n- **React Router DOM** - URL-based puzzle sharing\n- **Tailwind CSS** - Utility-first styling\n- **Local JSON** - 106 puzzle files with diverse themes\n\n## 🗂️ Project Structure\n\n```\nsrc/\n├── components/\n│   ├── ConnectionsGame.jsx      # Main game logic and state\n│   ├── WordGrid.jsx            # 4x4 word selection grid\n│   ├── CategoryResult.jsx      # Found category display\n│   ├── GameControls.jsx        # Shuffle, Deselect, Submit buttons\n│   └── RandomPuzzleRedirect.jsx # Home page redirect logic\n├── utils/\n│   └── puzzleLoader.js         # Puzzle loading and selection\n└── App.jsx                     # Router setup\n\npublic/\n└── puzzles/                    # 106 JSON puzzle files\n```\n\n## 🧩 Puzzle Themes\n\nOur 106 puzzles include diverse categories like:\n\n- **Entertainment**: Disney characters, Marvel heroes, musicians\n- **Food \u0026 Drink**: Coffee terms, pizza types, ice cream flavors\n- **Technology**: Programming languages, video games, apps\n- **Science**: Ocean animals, space objects, weather terms\n- **Sports**: Olympic events, board games, chess terms\n- **Word Play**: Compound words, prefixes, rhyming words\n- **Pop Culture**: Social media, streaming services, brands\n\n## 🔗 URL Sharing\n\nEach puzzle has a unique shareable URL:\n- Home: `https://yoursite.com/` (redirects to random puzzle)\n- Specific puzzle: `https://yoursite.com/puzzle/d7829759-c5fe-434a-ad38-8aee6e545df2`\n\n## 🎨 Game Mechanics\n\n### Smart Feedback System\n- **Correct Match**: Category revealed, words removed from grid\n- **One Away**: Toast notification appears, selections remain for easy adjustment\n- **Incorrect**: All selections cleared, mistake counter increments\n- **Game Over**: After 4 mistakes or completing all categories\n\n### Enhanced UX Features\n- **Word Selection Memory**: When \"one away,\" your selections stay active\n- **Smart Random**: Random button never picks the current puzzle\n- **Responsive Grid**: Adapts perfectly to any screen size\n- **Touch Friendly**: Optimized for mobile gameplay\n\n## 🏗️ Development\n\n### Available Scripts\n\n- `npm start` - Start development server\n- `npm run build` - Build for production\n- `npm test` - Run test suite\n- `npm run eject` - Eject from Create React App\n\n### Adding New Puzzles\n\n1. Create a new JSON file in `public/puzzles/` with a unique GUID filename\n2. Follow the puzzle format:\n```json\n{\n  \"id\": \"your-guid-here\",\n  \"date\": \"2025-XX-XX\",\n  \"items\": [\n    {\n      \"name\": \"Category Name\",\n      \"words\": [\"Word1\", \"Word2\", \"Word3\", \"Word4\"]\n    }\n    // ... 3 more categories\n  ]\n}\n```\n3. Add the GUID to `getAvailablePuzzleIds()` in `puzzleLoader.js`\n\n## 📝 Puzzle Creation Guidelines\n\nWant to contribute new puzzles? Follow these **CRITICAL RULES** to ensure quality and functionality:\n\n### 🚨 Must-Follow Rules (Game-Breaking if Violated)\n\n1. **NO DUPLICATE WORDS** - Each puzzle must have exactly 16 unique words\n   - Every word appears only once per puzzle\n   - Duplicates make puzzles unsolvable\n\n2. **EXACT COUNT** - 4 categories × 4 words each = 16 total words\n\n3. **UNIQUE GUID** - Generate a new GUID for each puzzle file\n\n### 📋 Quality Standards\n\n4. **Clear Categories** - All 4 words must obviously belong together\n5. **No Overlap** - Words shouldn't fit multiple categories  \n6. **Balanced Difficulty** - Mix easy and challenging categories\n7. **Broad Appeal** - Use commonly known references, avoid niche topics\n\n### ✅ Validation Checklist\n\nBefore submitting any puzzle:\n- [ ] Exactly 16 unique words (check for duplicates!)\n- [ ] 4 categories with 4 words each\n- [ ] Unique GUID filename and id\n- [ ] All words clearly belong to assigned category\n- [ ] No ambiguous words that fit multiple categories\n- [ ] Valid JSON format\n- [ ] Added GUID to `puzzleLoader.js`\n\n### 🎯 Great Category Examples\n\n- **Word Play**: Compound words, rhyming words, prefixes/suffixes\n- **Pop Culture**: Movie franchises, musicians, TV shows\n- **Everyday Items**: Kitchen tools, school supplies, clothing\n- **Science**: Animals, planets, body parts, elements\n- **Abstract**: Colors, emotions, time periods\n\n**Remember**: Quality over quantity! Well-tested puzzles are infinitely better than broken ones.\n\nFor complete rules and examples, see `CLAUDE.md`.\n\n## 🤝 Contributing\n\n1. Fork the repository\n2. Create a feature branch: `git checkout -b feature/amazing-feature`\n3. Commit changes: `git commit -m 'Add amazing feature'`\n4. Push to branch: `git push origin feature/amazing-feature`\n5. Open a Pull Request\n\n## 📝 License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## 🙏 Acknowledgments\n\n- Inspired by the [New York Times Connections](https://www.nytimes.com/games/connections) game\n- Built with [Create React App](https://create-react-app.dev/)\n- Styled with [Tailwind CSS](https://tailwindcss.com/)\n\n## 📱 Screenshots\n\n![Game in Progress](screenshot.png)\n*The main game interface showing word selection and category discovery*\n\n---\n\n**Enjoy playing Interconnections!** 🎉\n\nFound a bug or have a suggestion? [Open an issue](https://github.com/yourusername/interconnections/issues) or contribute to make the game even better!","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcfryerdev%2Finterconnections","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcfryerdev%2Finterconnections","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcfryerdev%2Finterconnections/lists"}