{"id":31765137,"url":"https://github.com/shuklax/infostash","last_synced_at":"2026-04-30T08:33:57.789Z","repository":{"id":315585071,"uuid":"1052825205","full_name":"Shuklax/InfoStash","owner":"Shuklax","description":"Advanced search application with three query modes: structured search builder with AND/OR/NOT logic, LLM-powered natural language processing, and external API integration. Features real-time filtering, multi-column sorting, CSV/JSON export, and comprehensive test coverage.","archived":false,"fork":false,"pushed_at":"2025-09-29T09:35:06.000Z","size":217,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-29T10:26:46.249Z","etag":null,"topics":["dockerfile","jest","kysely","lodash","nextjs","openrouter-api","search-builder","sqlite3","trpc","typescript","zod"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","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/Shuklax.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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-08T15:46:40.000Z","updated_at":"2025-09-29T09:35:02.000Z","dependencies_parsed_at":"2025-09-19T13:31:20.839Z","dependency_job_id":"b1b34358-49b6-4a45-9e74-ee2a2a5a6ad1","html_url":"https://github.com/Shuklax/InfoStash","commit_stats":null,"previous_names":["shuklax/infostash"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Shuklax/InfoStash","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shuklax%2FInfoStash","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shuklax%2FInfoStash/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shuklax%2FInfoStash/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shuklax%2FInfoStash/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Shuklax","download_url":"https://codeload.github.com/Shuklax/InfoStash/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shuklax%2FInfoStash/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279002383,"owners_count":26083356,"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-10-09T02:00:07.460Z","response_time":59,"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":["dockerfile","jest","kysely","lodash","nextjs","openrouter-api","search-builder","sqlite3","trpc","typescript","zod"],"created_at":"2025-10-10T00:13:38.838Z","updated_at":"2025-10-10T00:13:40.929Z","avatar_url":"https://github.com/Shuklax.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cimg width=\"1912\" height=\"912\" alt=\"image\" src=\"https://github.com/user-attachments/assets/3956a629-5573-4240-b8bd-e48f1d11767b\" /\u003e\n\n## Setup\n\nMake sure you've installed Node.js (version 22+). Then run:\n\n```bash\nnpm install\n```\n\nCreate a DB file named data.db in the root\n\nTo setup the dataset:\n\n```bash\nnpm run setup\n```\n\nCreate a env file as given in the example with your openRouter API_KEY\n\nTo run your server:\n\n```bash\nnpm run dev\n```\n\nTo check that your code compiles successfully:\n\n```bash\nnpm run build\n```\n\n## Then open \u003chttp://localhost:3000\u003e to see your site.\n\n# Run through Dockerfile\n\nAfter cloning the Repo locally\n\nBuild the image locally\n\n```bash\ndocker build -t infostash:0.1.0 .\n```\n\nRun the container\n\n```bash\ndocker run -p 3000:3000 \\\n  -e OPENROUTER_API_KEY=\"your-api-key-here\" \\\n  infostash\n\n```\n---\n\u003cimg width=\"4662\" height=\"5725\" alt=\"image\" src=\"https://github.com/user-attachments/assets/f1dd1c84-3836-480a-9789-6a44d3548230\" /\u003e\n\n\u003cimg width=\"4430\" height=\"7980\" alt=\"image\" src=\"https://github.com/user-attachments/assets/df7427b1-5aff-4e6e-abd7-cf66b9fdd3ba\" /\u003e\n\n\u003cimg width=\"4428\" height=\"7953\" alt=\"image\" src=\"https://github.com/user-attachments/assets/36d7eac0-699c-4110-8b03-1a0859b2c5c2\" /\u003e\n\n---\n# InfoStash Search API\n\n## Base URL\n\nhttps://your-domain.com/api\n\n## Single Endpoint\n\n**POST** `/search`\n\nSearch companies using structured filters.\n\n## Request Format\n\nSend a JSON object with these filters:\n\n```json\n{\n  \"technologyFilter\": {\n    \"and\": [\"React\", \"Node.js\"],\n    \"or\": [\"TypeScript\"],\n    \"none\": [\"PHP\"],\n    \"removeDuplicates\": false,\n    \"filteringType\": \"together\"\n  },\n  \"countryFilter\": {\n    \"and\": [],\n    \"or\": [\"US\", \"UK\"],\n    \"none\": [],\n    \"removeDuplicates\": false,\n    \"filteringType\": \"together\"\n  },\n  \"categoryFilter\": {\n    \"and\": [\"Technology\"],\n    \"or\": [],\n    \"none\": [],\n    \"removeDuplicates\": false,\n    \"filteringType\": \"together\"\n  },\n  \"nameFilter\": {\n    \"and\": [],\n    \"or\": [\"Google\", \"Microsoft\"],\n    \"none\": [\"Facebook\"],\n    \"removeDuplicates\": false,\n    \"filteringType\": \"together\"\n  },\n  \"domainFilter\": {\n    \"and\": [],\n    \"or\": [],\n    \"none\": [\"spam.com\"],\n    \"removeDuplicates\": false,\n    \"filteringType\": \"together\"\n  },\n  \"numberFilter\": {\n    \"totalTechnologies\": 5,\n    \"technologiesPerCategory\": 2\n  }\n}\n```\n\n## Filter Logic\n\n- **`and`**: ALL items must be present\n- **`or`**: ANY item can be present\n- **`none`**: NO items can be present\n- **`filteringType`**: Use `\"together\"` (recommended)\n- **`totalTechnologies`**: Minimum total techs required\n- **`technologiesPerCategory`**: Minimum techs per category\n\n## Response\n\n```json\n{\n  \"success\": true,\n  \"data\": [\n    {\n      \"domain\": \"google.com\",\n      \"name\": \"Google\",\n      \"category\": \"Technology\",\n      \"country\": \"US\",\n      \"city\": \"Mountain View\",\n      \"technologies\": 15\n    }\n  ],\n  \"totalResults\": 1,\n  \"source\": \"external\"\n}\n```\n\n## Example Usage\n\n### Find React companies in US:\n\n```json\n{\n  \"technologyFilter\": {\n    \"and\": [],\n    \"or\": [\"React\"],\n    \"none\": [],\n    \"removeDuplicates\": false,\n    \"filteringType\": \"together\"\n  },\n  \"countryFilter\": {\n    \"and\": [\"US\"],\n    \"or\": [],\n    \"none\": [],\n    \"removeDuplicates\": false,\n    \"filteringType\": \"together\"\n  },\n  \"categoryFilter\": {\n    \"and\": [],\n    \"or\": [],\n    \"none\": [],\n    \"removeDuplicates\": false,\n    \"filteringType\": \"together\"\n  },\n  \"nameFilter\": {\n    \"and\": [],\n    \"or\": [],\n    \"none\": [],\n    \"removeDuplicates\": false,\n    \"filteringType\": \"together\"\n  },\n  \"domainFilter\": {\n    \"and\": [],\n    \"or\": [],\n    \"none\": [],\n    \"removeDuplicates\": false,\n    \"filteringType\": \"together\"\n  },\n  \"numberFilter\": {\n    \"totalTechnologies\": 0,\n    \"technologiesPerCategory\": 0\n  }\n}\n```\n\n### Find large tech companies (not Facebook):\n\n```json\n{\n  \"technologyFilter\": {\n    \"and\": [],\n    \"or\": [],\n    \"none\": [],\n    \"removeDuplicates\": false,\n    \"filteringType\": \"together\"\n  },\n  \"countryFilter\": {\n    \"and\": [],\n    \"or\": [],\n    \"none\": [],\n    \"removeDuplicates\": false,\n    \"filteringType\": \"together\"\n  },\n  \"categoryFilter\": {\n    \"and\": [\"Technology\"],\n    \"or\": [],\n    \"none\": [],\n    \"removeDuplicates\": false,\n    \"filteringType\": \"together\"\n  },\n  \"nameFilter\": {\n    \"and\": [],\n    \"or\": [],\n    \"none\": [\"Facebook\"],\n    \"removeDuplicates\": false,\n    \"filteringType\": \"together\"\n  },\n  \"domainFilter\": {\n    \"and\": [],\n    \"or\": [],\n    \"none\": [],\n    \"removeDuplicates\": false,\n    \"filteringType\": \"together\"\n  },\n  \"numberFilter\": {\n    \"totalTechnologies\": 10,\n    \"technologiesPerCategory\": 0\n  }\n}\n```\n\n## Curl Example\n\n```bash\ncurl -X POST https://your-domain.com/api/search \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"technologyFilter\": {\n      \"and\": [],\n      \"or\": [\"React\"],\n      \"none\": [],\n      \"removeDuplicates\": false,\n      \"filteringType\": \"together\"\n    },\n    \"countryFilter\": {\n      \"and\": [\"US\"],\n      \"or\": [],\n      \"none\": [],\n      \"removeDuplicates\": false,\n      \"filteringType\": \"together\"\n    },\n    \"categoryFilter\": {\n      \"and\": [],\n      \"or\": [],\n      \"none\": [],\n      \"removeDuplicates\": false,\n      \"filteringType\": \"together\"\n    },\n    \"nameFilter\": {\n      \"and\": [],\n      \"or\": [],\n      \"none\": [],\n      \"removeDuplicates\": false,\n      \"filteringType\": \"together\"\n    },\n    \"domainFilter\": {\n      \"and\": [],\n      \"or\": [],\n      \"none\": [],\n      \"removeDuplicates\": false,\n      \"filteringType\": \"together\"\n    },\n    \"numberFilter\": {\n      \"totalTechnologies\": 0,\n      \"technologiesPerCategory\": 0\n    }\n  }'\n```\n\n## Error Responses\n\n- `400`: Bad JSON format\n- `500`: Server error\n\nThat's it. One endpoint, send JSON, get companies.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshuklax%2Finfostash","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fshuklax%2Finfostash","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshuklax%2Finfostash/lists"}