{"id":28655988,"url":"https://github.com/sarperavci/ctf-writeups-search","last_synced_at":"2025-06-13T08:09:41.191Z","repository":{"id":276305334,"uuid":"928823228","full_name":"sarperavci/ctf-writeups-search","owner":"sarperavci","description":"Search engine for CTF writeups with instant results.","archived":false,"fork":false,"pushed_at":"2025-03-06T13:39:16.000Z","size":81,"stargazers_count":111,"open_issues_count":1,"forks_count":5,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-06T14:33:41.805Z","etag":null,"topics":["ctf","ctf-writeups","hackthebox","tryhackme"],"latest_commit_sha":null,"homepage":"https://ctfsearch.hackmap.win","language":"SCSS","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/sarperavci.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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}},"created_at":"2025-02-07T09:56:27.000Z","updated_at":"2025-03-06T13:39:19.000Z","dependencies_parsed_at":null,"dependency_job_id":"a6a8419f-f316-441e-94be-68c4323ac097","html_url":"https://github.com/sarperavci/ctf-writeups-search","commit_stats":null,"previous_names":["sarperavci/ctf-writeups-search"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/sarperavci/ctf-writeups-search","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sarperavci%2Fctf-writeups-search","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sarperavci%2Fctf-writeups-search/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sarperavci%2Fctf-writeups-search/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sarperavci%2Fctf-writeups-search/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sarperavci","download_url":"https://codeload.github.com/sarperavci/ctf-writeups-search/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sarperavci%2Fctf-writeups-search/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259606984,"owners_count":22883563,"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","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":["ctf","ctf-writeups","hackthebox","tryhackme"],"created_at":"2025-06-13T08:09:33.147Z","updated_at":"2025-06-13T08:09:41.174Z","avatar_url":"https://github.com/sarperavci.png","language":"SCSS","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🔍 CTF Writeups Search\n\nA fast and efficient search engine for CTF (Capture The Flag) writeups and solutions, powered by Typesense. Search through a curated collection of 35,000+ CTF writeups with instant results and smart filtering.\n\nView it live here: [https://ctfsearch.hackmap.win](https://ctfsearch.hackmap.win)\n\n## Features\n\n- 🚀 Instant search with typo tolerance\n- 🏷️ Smart category filtering\n- 📱 Mobile-friendly interface\n- 🌓 Dark/Light theme support\n- ⚡ Fast and responsive UI\n\n## Tech Stack\n\nThis search experience is powered by [Typesense](https://typesense.org), an open-source, typo-tolerant search engine. It's designed as a faster alternative to Elasticsearch and an open-source alternative to Algolia.\n\nThe frontend is built with:\n- [InstantSearch.js](https://github.com/algolia/instantsearch.js)\n- [Typesense Instantsearch Adapter](https://github.com/typesense/typesense-instantsearch-adapter)\n- Bootstrap 4\n- Parcel bundler\n\nThe search backend runs on Typesense, which can be self-hosted or used via [Typesense Cloud](https://cloud.typesense.org).\n\n## Project Structure\n\n- `src/` - Frontend components and styles\n- `scripts/indexer/` - Python scripts for data indexing\n- `scripts/data/` - Sample dataset and transformation scripts\n\n## Development\n\nTo run this project locally:\n\n1. Install dependencies:\n```shell\nyarn\n```\n\n2. Start Typesense server (requires Docker):\n```shell\nyarn run typesenseServer\n```\n\n3. Set up environment:\n```shell\ncp .env.example .env\n```\n\n4. Index the data:\n```shell\nyarn run indexer:transformWriteups\nyarn run indexer:importToTypesense\n```\n\nData must be in the `scripts/data/writeups.json` file. In this format:\n\n```json\n{\n  \"documents\": [\n    {\n      \"title\": \"Writeup Title\",\n      \"url\": \"https://example.com/writeup\",\n      \"author\": \"Author Name\",\n      \"mirror_url\": \"https://example2.com/writeup\",\n      \"date\": \"2024-01-01\",\n      \"base64_content\": \"base64_encoded_content\"\n    }\n  ]\n}\n```\n\n5. Start development server:\n```shell\nyarn start\n```\n\nOpen http://localhost:3000 to see the app.\n\n## Environment Variables\n\nCreate a `.env` file with the following variables:\n\n```env\nTYPESENSE_API_KEY=xyz\nTYPESENSE_HOST=localhost\nTYPESENSE_PORT=8108\nTYPESENSE_PROTOCOL=http\nTYPESENSE_SEARCH_ONLY_API_KEY=xyz\n```\n\nEnsure you create a read-only API key with the `create_read_only_key.py` script and set both `TYPESENSE_API_KEY` and `TYPESENSE_SEARCH_ONLY_API_KEY` to the same value.\n\n## Deployment\n\nThe app is designed to be hosted on AWS S3 with CloudFront as CDN:\n\n```shell\nyarn build\nyarn deploy\n```\n\n## Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request.\n\n## License\n\nMIT License - feel free to use this code for your own projects.\n\n## References\n\n- [Based on Typesense showcase-books-search](https://github.com/typesense/showcase-books-search)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsarperavci%2Fctf-writeups-search","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsarperavci%2Fctf-writeups-search","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsarperavci%2Fctf-writeups-search/lists"}