gitradar 0.1.5__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- gitradar-0.1.5/LICENSE +21 -0
- gitradar-0.1.5/PKG-INFO +251 -0
- gitradar-0.1.5/README.md +228 -0
- gitradar-0.1.5/demo/api/index.py +14 -0
- gitradar-0.1.5/demo/gitradar/__init__.py +22 -0
- gitradar-0.1.5/demo/gitradar/cli.py +214 -0
- gitradar-0.1.5/demo/gitradar/config.py +117 -0
- gitradar-0.1.5/demo/gitradar/models.py +67 -0
- gitradar-0.1.5/demo/gitradar/prompts/__init__.py +18 -0
- gitradar-0.1.5/demo/gitradar/services/github.py +179 -0
- gitradar-0.1.5/demo/gitradar/services/llm.py +342 -0
- gitradar-0.1.5/demo/gitradar/utils/ui.py +196 -0
- gitradar-0.1.5/demo/gitradar/web/__init__.py +7 -0
- gitradar-0.1.5/demo/gitradar/web/app.py +173 -0
- gitradar-0.1.5/examples/python_sdk_usage.py +48 -0
- gitradar-0.1.5/gitradar/__init__.py +22 -0
- gitradar-0.1.5/gitradar/cli.py +214 -0
- gitradar-0.1.5/gitradar/config.py +117 -0
- gitradar-0.1.5/gitradar/models.py +67 -0
- gitradar-0.1.5/gitradar/prompts/__init__.py +18 -0
- gitradar-0.1.5/gitradar/prompts/gap_analysis_system.j2 +36 -0
- gitradar-0.1.5/gitradar/prompts/gap_analysis_user.j2 +21 -0
- gitradar-0.1.5/gitradar/prompts/query_expansion_system.j2 +19 -0
- gitradar-0.1.5/gitradar/prompts/query_expansion_user.j2 +1 -0
- gitradar-0.1.5/gitradar/prompts/relevance_evaluation_system.j2 +22 -0
- gitradar-0.1.5/gitradar/prompts/relevance_evaluation_user.j2 +14 -0
- gitradar-0.1.5/gitradar/services/github.py +179 -0
- gitradar-0.1.5/gitradar/services/llm.py +342 -0
- gitradar-0.1.5/gitradar/utils/ui.py +196 -0
- gitradar-0.1.5/gitradar/web/__init__.py +7 -0
- gitradar-0.1.5/gitradar/web/app.py +173 -0
- gitradar-0.1.5/gitradar/web/static/apple-touch-icon.png +0 -0
- gitradar-0.1.5/gitradar/web/static/css/style.css +1430 -0
- gitradar-0.1.5/gitradar/web/static/favicon-96x96.png +0 -0
- gitradar-0.1.5/gitradar/web/static/favicon.ico +0 -0
- gitradar-0.1.5/gitradar/web/static/favicon.svg +1 -0
- gitradar-0.1.5/gitradar/web/static/js/app.js +1206 -0
- gitradar-0.1.5/gitradar/web/static/site.webmanifest +21 -0
- gitradar-0.1.5/gitradar/web/static/web-app-manifest-192x192.png +0 -0
- gitradar-0.1.5/gitradar/web/static/web-app-manifest-512x512.png +0 -0
- gitradar-0.1.5/gitradar/web/templates/index.html +521 -0
- gitradar-0.1.5/gitradar.egg-info/PKG-INFO +251 -0
- gitradar-0.1.5/gitradar.egg-info/SOURCES.txt +54 -0
- gitradar-0.1.5/gitradar.egg-info/dependency_links.txt +1 -0
- gitradar-0.1.5/gitradar.egg-info/entry_points.txt +2 -0
- gitradar-0.1.5/gitradar.egg-info/requires.txt +14 -0
- gitradar-0.1.5/gitradar.egg-info/top_level.txt +6 -0
- gitradar-0.1.5/pyproject.toml +40 -0
- gitradar-0.1.5/setup.cfg +4 -0
- gitradar-0.1.5/tests/conftest.py +27 -0
- gitradar-0.1.5/tests/test_cli.py +29 -0
- gitradar-0.1.5/tests/test_llm.py +163 -0
- gitradar-0.1.5/tests/test_models.py +90 -0
- gitradar-0.1.5/tests/test_prompts.py +58 -0
- gitradar-0.1.5/tests/test_relevance.py +75 -0
- gitradar-0.1.5/tests/test_web.py +81 -0
gitradar-0.1.5/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 GitRadar Contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO берез, INCLUDING BUT NOT LIMITED TO THE
|
|
17
|
+
WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
18
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
|
|
19
|
+
FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
|
20
|
+
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
|
|
21
|
+
THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
gitradar-0.1.5/PKG-INFO
ADDED
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: gitradar
|
|
3
|
+
Version: 0.1.5
|
|
4
|
+
Summary: CLI tool for GitHub market & gap analysis using LLM and GitHub REST API
|
|
5
|
+
Author-email: GitRadar Developer <developer@example.com>
|
|
6
|
+
Requires-Python: >=3.10
|
|
7
|
+
Description-Content-Type: text/markdown
|
|
8
|
+
License-File: LICENSE
|
|
9
|
+
Requires-Dist: typer[all]>=0.9.0
|
|
10
|
+
Requires-Dist: rich>=13.0.0
|
|
11
|
+
Requires-Dist: openai>=1.0.0
|
|
12
|
+
Requires-Dist: httpx>=0.25.0
|
|
13
|
+
Requires-Dist: pydantic>=2.0.0
|
|
14
|
+
Requires-Dist: pydantic-settings>=2.0.0
|
|
15
|
+
Requires-Dist: python-dotenv>=1.0.0
|
|
16
|
+
Requires-Dist: jinja2>=3.0.0
|
|
17
|
+
Requires-Dist: flask>=3.0.0
|
|
18
|
+
Requires-Dist: typing-extensions>=4.0.0
|
|
19
|
+
Provides-Extra: dev
|
|
20
|
+
Requires-Dist: pytest>=7.0.0; extra == "dev"
|
|
21
|
+
Requires-Dist: pytest-asyncio>=0.21.0; extra == "dev"
|
|
22
|
+
Dynamic: license-file
|
|
23
|
+
|
|
24
|
+
# 📡 GitRadar
|
|
25
|
+
|
|
26
|
+
<p align="center">
|
|
27
|
+
<img src="./assets/gitradar-banner.jpg" alt="GitRadar Banner" width="850"/>
|
|
28
|
+
</p>
|
|
29
|
+
|
|
30
|
+
<p align="center">
|
|
31
|
+
<b>Smart GitHub Market & Gap Analysis Tool Driven by AI & GitHub REST API</b><br>
|
|
32
|
+
<i>Validate your developer project ideas in seconds — via Rich Terminal CLI, Interactive Web Dashboard, or 1-Click Vercel Web Demo.</i>
|
|
33
|
+
</p>
|
|
34
|
+
|
|
35
|
+
<p align="center">
|
|
36
|
+
<a href="https://github.com/AtaCanYmc/GitRadar/actions"><img src="https://img.shields.io/github/actions/workflow/status/AtaCanYmc/GitRadar/ci.yml?branch=main&style=flat-square&logo=github&label=CI" alt="CI Status"></a>
|
|
37
|
+
<a href="https://pypi.org/project/gitradar/"><img src="https://img.shields.io/pypi/v/gitradar?style=flat-square&color=blue&logo=pypi" alt="PyPI Version"></a>
|
|
38
|
+
<a href="https://pypi.org/project/gitradar/"><img src="https://img.shields.io/pypi/pyversions/gitradar?style=flat-square&logo=python" alt="Python Versions"></a>
|
|
39
|
+
<a href="./LICENSE"><img src="https://img.shields.io/github/license/AtaCanYmc/GitRadar?style=flat-square" alt="License"></a>
|
|
40
|
+
<a href="https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2FAtaCanYmc%2FGitRadar&root-directory=demo"><img src="https://vercel.com/button" alt="Deploy with Vercel"></a>
|
|
41
|
+
</p>
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## 💡 What is GitRadar?
|
|
46
|
+
|
|
47
|
+
**GitRadar** is an open-source AI developer tool designed for developers, creators, and founders to perform instant **Market & Gap Analysis** on software project concepts.
|
|
48
|
+
|
|
49
|
+
Before spending weeks building a new side project or open-source tool, GitRadar helps you answer critical questions:
|
|
50
|
+
- *What open-source repositories already exist for this concept on GitHub?*
|
|
51
|
+
- *What capabilities are existing repos missing (unmet market needs)?*
|
|
52
|
+
- *What unique differentiators will make your project stand out?*
|
|
53
|
+
- *How should you architect the software, what technology stack to choose, and what open-source building blocks can you leverage?*
|
|
54
|
+
|
|
55
|
+
GitRadar expands your raw idea into intelligent GitHub queries, fetches candidate repositories via the GitHub REST API, semantically analyzes competitors using direct **OpenAI-compatible AI connections** (supporting OpenAI, Groq, DeepSeek, OpenRouter, and Ollama), and renders an executive report in your terminal, local **Web Dashboard**, or hosted **Vercel Web Demo**.
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## ✨ Key Features
|
|
60
|
+
|
|
61
|
+
- 🧠 **AI Query Expansion**: Translates raw developer ideas into optimized search keywords, language filters, and GitHub topic tags (`#cli`, `#ai`, `#devtools`).
|
|
62
|
+
- 🛠️ **Technical Implementation & Open-Source Roadmap**: Recommends architecture overviews, tech stacks, and relevant open-source libraries (`Typer`, `LiteLLM`, `Qdrant`, `Tree-sitter`, etc.) to build your idea.
|
|
63
|
+
- 🌐 **AI Response Language Choice**: Choose report output languages (`English`, `Turkish`, `Spanish`, `German`, `French`, etc.) via `--lang` flag or Web UI settings.
|
|
64
|
+
- 📥 **Web UI Report Export**: Export generated reports directly to **Markdown (`.md`)**, **JSON (`.json`)**, or **Copy to Clipboard**.
|
|
65
|
+
- ⚙️ **In-Browser Settings Modal**: Configure models, repository limits, AI response language, and custom Groq / GitHub API keys on the fly.
|
|
66
|
+
- ⚡ **1-Click Vercel Web Demo (`demo/`)**: Deploy a serverless web demo on Vercel where anyone can run GitRadar using their own API keys safely.
|
|
67
|
+
- 🎯 **Semantic Gap Analysis**: Synthesizes market saturation levels, competitor profiles, unmet needs, differentiators, and strategic recommendations.
|
|
68
|
+
- 🎨 **Rich Terminal UX & Web Dashboard**: Color-coded terminal panels via Rich, glassmorphic dark/light UI modes, EN/TR UI i18n translation switcher, and RealFaviconGenerator favicons.
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## 🚀 1-Click Vercel Web Demo
|
|
73
|
+
|
|
74
|
+
Deploy your own Web Demo instance to Vercel instantly:
|
|
75
|
+
|
|
76
|
+
[](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2FAtaCanYmc%2FGitRadar&root-directory=demo)
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## 🛠️ Quick Start & Installation
|
|
81
|
+
|
|
82
|
+
Install GitRadar from PyPI or locally:
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
pip install gitradar
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
Or install from source in editable mode:
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
git clone https://github.com/AtaCanYmc/GitRadar.git
|
|
92
|
+
cd GitRadar
|
|
93
|
+
pip install -e ".[dev]"
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
## 🔑 Configuration
|
|
99
|
+
|
|
100
|
+
GitRadar uses a universal **OpenAI-compatible connection schema** (`api_key`, `base_url`, `model`). It works out-of-the-box with **OpenAI**, **Groq**, **DeepSeek**, **OpenRouter**, or local self-hosted models (**Ollama**, **vLLM**, **LM Studio**).
|
|
101
|
+
|
|
102
|
+
1. **Set your API Key** (OpenAI, Groq, or compatible provider):
|
|
103
|
+
```bash
|
|
104
|
+
# Standard OpenAI
|
|
105
|
+
gitradar config --openai-api-key "sk-..."
|
|
106
|
+
|
|
107
|
+
# Or Groq (auto-routed to Groq OpenAI endpoint)
|
|
108
|
+
gitradar config --openai-api-key "gsk_..."
|
|
109
|
+
# Or legacy flag: gitradar config --groq-api-key "gsk_..."
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
2. *(Optional)* **Set a Custom Base URL** for alternative providers:
|
|
113
|
+
```bash
|
|
114
|
+
# Groq
|
|
115
|
+
gitradar config --base-url "https://api.groq.com/openai/v1" --model "llama-3.3-70b-versatile"
|
|
116
|
+
|
|
117
|
+
# DeepSeek
|
|
118
|
+
gitradar config --base-url "https://api.deepseek.com" --model "deepseek-chat"
|
|
119
|
+
|
|
120
|
+
# Local Ollama
|
|
121
|
+
gitradar config --base-url "http://localhost:11434/v1" --model "llama3.2"
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
3. *(Optional)* **Set a GitHub Access Token** to boost API rate limits (from 60 to 5,000 requests/hour):
|
|
125
|
+
```bash
|
|
126
|
+
gitradar config --github-token "ghp_your_github_token_here"
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
4. *(Optional)* **Set Default Output Language & Model**:
|
|
130
|
+
```bash
|
|
131
|
+
gitradar config --lang Turkish --model gpt-4o-mini
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
5. **Inspect Active Settings**:
|
|
135
|
+
```bash
|
|
136
|
+
gitradar config --show
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
---
|
|
140
|
+
|
|
141
|
+
## 💻 CLI Commands & Usage
|
|
142
|
+
|
|
143
|
+
### 💡 1. `gitradar analyze <IDEA>`
|
|
144
|
+
|
|
145
|
+
Executes the full end-to-end AI market and gap analysis workflow in the terminal:
|
|
146
|
+
|
|
147
|
+
```bash
|
|
148
|
+
gitradar analyze "AI powered code review tool for terminal and git hooks" --lang Turkish
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
**Options:**
|
|
152
|
+
- `--limit` / `-l`: Maximum repositories to evaluate (Default: `10`)
|
|
153
|
+
- `--min-relevance` / `-r`: Minimum relevance score threshold percentage (Default: `50`)
|
|
154
|
+
- `--model` / `-m`: Override AI model (e.g. `gpt-4o-mini`, `gpt-4o`, `llama-3.3-70b-versatile`, `deepseek-chat`)
|
|
155
|
+
- `--api-key` / `-k`: Override API Key for this run
|
|
156
|
+
- `--base-url` / `-u`: Override Base URL endpoint for this run
|
|
157
|
+
- `--lang` / `--language`: Set output language for AI report (e.g. `Turkish`, `English`, `Spanish`)
|
|
158
|
+
|
|
159
|
+
---
|
|
160
|
+
|
|
161
|
+
### 🌐 2. `gitradar ui`
|
|
162
|
+
|
|
163
|
+
Launches the local interactive web dashboard in your default browser:
|
|
164
|
+
|
|
165
|
+
```bash
|
|
166
|
+
gitradar ui --port 5000
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
---
|
|
170
|
+
|
|
171
|
+
### 🔍 3. `gitradar search <QUERY>`
|
|
172
|
+
|
|
173
|
+
Performs a fast, direct GitHub repository search without LLM synthesis:
|
|
174
|
+
|
|
175
|
+
```bash
|
|
176
|
+
gitradar search "terminal devtools" --limit 5 --sort stars
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
---
|
|
180
|
+
|
|
181
|
+
### ⚙️ 4. `gitradar config`
|
|
182
|
+
|
|
183
|
+
View or update credentials and preferences:
|
|
184
|
+
|
|
185
|
+
```bash
|
|
186
|
+
gitradar config --show
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
---
|
|
190
|
+
|
|
191
|
+
## 🐍 Python SDK Usage
|
|
192
|
+
|
|
193
|
+
Import GitRadar services directly in Python scripts:
|
|
194
|
+
|
|
195
|
+
```python
|
|
196
|
+
import asyncio
|
|
197
|
+
from gitradar.services.github import GitHubService
|
|
198
|
+
from gitradar.services.llm import LLMService
|
|
199
|
+
|
|
200
|
+
async def main():
|
|
201
|
+
idea = "AI automated documentation generator"
|
|
202
|
+
|
|
203
|
+
github_service = GitHubService()
|
|
204
|
+
llm_service = LLMService(language="Turkish")
|
|
205
|
+
|
|
206
|
+
# 1. Expand idea into search keywords
|
|
207
|
+
queries = llm_service.expand_idea_to_queries(idea, language="Turkish")
|
|
208
|
+
|
|
209
|
+
# 2. Fetch candidate repos
|
|
210
|
+
repos = await github_service.search_and_enrich(
|
|
211
|
+
keywords=queries.search_keywords,
|
|
212
|
+
topics=queries.github_topics,
|
|
213
|
+
limit=5,
|
|
214
|
+
)
|
|
215
|
+
|
|
216
|
+
# 3. Synthesize Market & Gap Report with Tech Roadmap
|
|
217
|
+
report = llm_service.analyze_market_and_gaps(idea, repos, language="Turkish")
|
|
218
|
+
print("Market Saturation:", report.market_saturation)
|
|
219
|
+
print("Opportunity Score:", report.opportunity_score)
|
|
220
|
+
if report.implementation_guide:
|
|
221
|
+
print("Recommended Stack:", report.implementation_guide.recommended_tech_stack)
|
|
222
|
+
|
|
223
|
+
asyncio.run(main())
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
---
|
|
227
|
+
|
|
228
|
+
## 🧪 Testing
|
|
229
|
+
|
|
230
|
+
Run unit and integration tests with `pytest`:
|
|
231
|
+
|
|
232
|
+
```bash
|
|
233
|
+
pytest
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
---
|
|
237
|
+
|
|
238
|
+
## 📚 Documentation Index
|
|
239
|
+
|
|
240
|
+
- [ARCHITECTURE.md](./ARCHITECTURE.md): Deep-dive into technical design, data models, and prompt engine.
|
|
241
|
+
- [demo/README.md](./demo/README.md): Step-by-step Vercel Web Demo deployment guide.
|
|
242
|
+
- [CONTRIBUTING.md](./CONTRIBUTING.md): PR guidelines, coding standards, and conventional commits.
|
|
243
|
+
- [SECURITY.md](./SECURITY.md): Security policy and vulnerability reporting.
|
|
244
|
+
- [CHANGELOG.md](./CHANGELOG.md): Semantic release history.
|
|
245
|
+
- [examples/README.md](./examples/README.md): Code samples and JSON report schemas.
|
|
246
|
+
|
|
247
|
+
---
|
|
248
|
+
|
|
249
|
+
## 📄 License
|
|
250
|
+
|
|
251
|
+
GitRadar is open-source software licensed under the [MIT License](./LICENSE).
|
gitradar-0.1.5/README.md
ADDED
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
# 📡 GitRadar
|
|
2
|
+
|
|
3
|
+
<p align="center">
|
|
4
|
+
<img src="./assets/gitradar-banner.jpg" alt="GitRadar Banner" width="850"/>
|
|
5
|
+
</p>
|
|
6
|
+
|
|
7
|
+
<p align="center">
|
|
8
|
+
<b>Smart GitHub Market & Gap Analysis Tool Driven by AI & GitHub REST API</b><br>
|
|
9
|
+
<i>Validate your developer project ideas in seconds — via Rich Terminal CLI, Interactive Web Dashboard, or 1-Click Vercel Web Demo.</i>
|
|
10
|
+
</p>
|
|
11
|
+
|
|
12
|
+
<p align="center">
|
|
13
|
+
<a href="https://github.com/AtaCanYmc/GitRadar/actions"><img src="https://img.shields.io/github/actions/workflow/status/AtaCanYmc/GitRadar/ci.yml?branch=main&style=flat-square&logo=github&label=CI" alt="CI Status"></a>
|
|
14
|
+
<a href="https://pypi.org/project/gitradar/"><img src="https://img.shields.io/pypi/v/gitradar?style=flat-square&color=blue&logo=pypi" alt="PyPI Version"></a>
|
|
15
|
+
<a href="https://pypi.org/project/gitradar/"><img src="https://img.shields.io/pypi/pyversions/gitradar?style=flat-square&logo=python" alt="Python Versions"></a>
|
|
16
|
+
<a href="./LICENSE"><img src="https://img.shields.io/github/license/AtaCanYmc/GitRadar?style=flat-square" alt="License"></a>
|
|
17
|
+
<a href="https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2FAtaCanYmc%2FGitRadar&root-directory=demo"><img src="https://vercel.com/button" alt="Deploy with Vercel"></a>
|
|
18
|
+
</p>
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## 💡 What is GitRadar?
|
|
23
|
+
|
|
24
|
+
**GitRadar** is an open-source AI developer tool designed for developers, creators, and founders to perform instant **Market & Gap Analysis** on software project concepts.
|
|
25
|
+
|
|
26
|
+
Before spending weeks building a new side project or open-source tool, GitRadar helps you answer critical questions:
|
|
27
|
+
- *What open-source repositories already exist for this concept on GitHub?*
|
|
28
|
+
- *What capabilities are existing repos missing (unmet market needs)?*
|
|
29
|
+
- *What unique differentiators will make your project stand out?*
|
|
30
|
+
- *How should you architect the software, what technology stack to choose, and what open-source building blocks can you leverage?*
|
|
31
|
+
|
|
32
|
+
GitRadar expands your raw idea into intelligent GitHub queries, fetches candidate repositories via the GitHub REST API, semantically analyzes competitors using direct **OpenAI-compatible AI connections** (supporting OpenAI, Groq, DeepSeek, OpenRouter, and Ollama), and renders an executive report in your terminal, local **Web Dashboard**, or hosted **Vercel Web Demo**.
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## ✨ Key Features
|
|
37
|
+
|
|
38
|
+
- 🧠 **AI Query Expansion**: Translates raw developer ideas into optimized search keywords, language filters, and GitHub topic tags (`#cli`, `#ai`, `#devtools`).
|
|
39
|
+
- 🛠️ **Technical Implementation & Open-Source Roadmap**: Recommends architecture overviews, tech stacks, and relevant open-source libraries (`Typer`, `LiteLLM`, `Qdrant`, `Tree-sitter`, etc.) to build your idea.
|
|
40
|
+
- 🌐 **AI Response Language Choice**: Choose report output languages (`English`, `Turkish`, `Spanish`, `German`, `French`, etc.) via `--lang` flag or Web UI settings.
|
|
41
|
+
- 📥 **Web UI Report Export**: Export generated reports directly to **Markdown (`.md`)**, **JSON (`.json`)**, or **Copy to Clipboard**.
|
|
42
|
+
- ⚙️ **In-Browser Settings Modal**: Configure models, repository limits, AI response language, and custom Groq / GitHub API keys on the fly.
|
|
43
|
+
- ⚡ **1-Click Vercel Web Demo (`demo/`)**: Deploy a serverless web demo on Vercel where anyone can run GitRadar using their own API keys safely.
|
|
44
|
+
- 🎯 **Semantic Gap Analysis**: Synthesizes market saturation levels, competitor profiles, unmet needs, differentiators, and strategic recommendations.
|
|
45
|
+
- 🎨 **Rich Terminal UX & Web Dashboard**: Color-coded terminal panels via Rich, glassmorphic dark/light UI modes, EN/TR UI i18n translation switcher, and RealFaviconGenerator favicons.
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## 🚀 1-Click Vercel Web Demo
|
|
50
|
+
|
|
51
|
+
Deploy your own Web Demo instance to Vercel instantly:
|
|
52
|
+
|
|
53
|
+
[](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2FAtaCanYmc%2FGitRadar&root-directory=demo)
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## 🛠️ Quick Start & Installation
|
|
58
|
+
|
|
59
|
+
Install GitRadar from PyPI or locally:
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
pip install gitradar
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
Or install from source in editable mode:
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
git clone https://github.com/AtaCanYmc/GitRadar.git
|
|
69
|
+
cd GitRadar
|
|
70
|
+
pip install -e ".[dev]"
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
## 🔑 Configuration
|
|
76
|
+
|
|
77
|
+
GitRadar uses a universal **OpenAI-compatible connection schema** (`api_key`, `base_url`, `model`). It works out-of-the-box with **OpenAI**, **Groq**, **DeepSeek**, **OpenRouter**, or local self-hosted models (**Ollama**, **vLLM**, **LM Studio**).
|
|
78
|
+
|
|
79
|
+
1. **Set your API Key** (OpenAI, Groq, or compatible provider):
|
|
80
|
+
```bash
|
|
81
|
+
# Standard OpenAI
|
|
82
|
+
gitradar config --openai-api-key "sk-..."
|
|
83
|
+
|
|
84
|
+
# Or Groq (auto-routed to Groq OpenAI endpoint)
|
|
85
|
+
gitradar config --openai-api-key "gsk_..."
|
|
86
|
+
# Or legacy flag: gitradar config --groq-api-key "gsk_..."
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
2. *(Optional)* **Set a Custom Base URL** for alternative providers:
|
|
90
|
+
```bash
|
|
91
|
+
# Groq
|
|
92
|
+
gitradar config --base-url "https://api.groq.com/openai/v1" --model "llama-3.3-70b-versatile"
|
|
93
|
+
|
|
94
|
+
# DeepSeek
|
|
95
|
+
gitradar config --base-url "https://api.deepseek.com" --model "deepseek-chat"
|
|
96
|
+
|
|
97
|
+
# Local Ollama
|
|
98
|
+
gitradar config --base-url "http://localhost:11434/v1" --model "llama3.2"
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
3. *(Optional)* **Set a GitHub Access Token** to boost API rate limits (from 60 to 5,000 requests/hour):
|
|
102
|
+
```bash
|
|
103
|
+
gitradar config --github-token "ghp_your_github_token_here"
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
4. *(Optional)* **Set Default Output Language & Model**:
|
|
107
|
+
```bash
|
|
108
|
+
gitradar config --lang Turkish --model gpt-4o-mini
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
5. **Inspect Active Settings**:
|
|
112
|
+
```bash
|
|
113
|
+
gitradar config --show
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
---
|
|
117
|
+
|
|
118
|
+
## 💻 CLI Commands & Usage
|
|
119
|
+
|
|
120
|
+
### 💡 1. `gitradar analyze <IDEA>`
|
|
121
|
+
|
|
122
|
+
Executes the full end-to-end AI market and gap analysis workflow in the terminal:
|
|
123
|
+
|
|
124
|
+
```bash
|
|
125
|
+
gitradar analyze "AI powered code review tool for terminal and git hooks" --lang Turkish
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
**Options:**
|
|
129
|
+
- `--limit` / `-l`: Maximum repositories to evaluate (Default: `10`)
|
|
130
|
+
- `--min-relevance` / `-r`: Minimum relevance score threshold percentage (Default: `50`)
|
|
131
|
+
- `--model` / `-m`: Override AI model (e.g. `gpt-4o-mini`, `gpt-4o`, `llama-3.3-70b-versatile`, `deepseek-chat`)
|
|
132
|
+
- `--api-key` / `-k`: Override API Key for this run
|
|
133
|
+
- `--base-url` / `-u`: Override Base URL endpoint for this run
|
|
134
|
+
- `--lang` / `--language`: Set output language for AI report (e.g. `Turkish`, `English`, `Spanish`)
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
### 🌐 2. `gitradar ui`
|
|
139
|
+
|
|
140
|
+
Launches the local interactive web dashboard in your default browser:
|
|
141
|
+
|
|
142
|
+
```bash
|
|
143
|
+
gitradar ui --port 5000
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
### 🔍 3. `gitradar search <QUERY>`
|
|
149
|
+
|
|
150
|
+
Performs a fast, direct GitHub repository search without LLM synthesis:
|
|
151
|
+
|
|
152
|
+
```bash
|
|
153
|
+
gitradar search "terminal devtools" --limit 5 --sort stars
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
---
|
|
157
|
+
|
|
158
|
+
### ⚙️ 4. `gitradar config`
|
|
159
|
+
|
|
160
|
+
View or update credentials and preferences:
|
|
161
|
+
|
|
162
|
+
```bash
|
|
163
|
+
gitradar config --show
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
---
|
|
167
|
+
|
|
168
|
+
## 🐍 Python SDK Usage
|
|
169
|
+
|
|
170
|
+
Import GitRadar services directly in Python scripts:
|
|
171
|
+
|
|
172
|
+
```python
|
|
173
|
+
import asyncio
|
|
174
|
+
from gitradar.services.github import GitHubService
|
|
175
|
+
from gitradar.services.llm import LLMService
|
|
176
|
+
|
|
177
|
+
async def main():
|
|
178
|
+
idea = "AI automated documentation generator"
|
|
179
|
+
|
|
180
|
+
github_service = GitHubService()
|
|
181
|
+
llm_service = LLMService(language="Turkish")
|
|
182
|
+
|
|
183
|
+
# 1. Expand idea into search keywords
|
|
184
|
+
queries = llm_service.expand_idea_to_queries(idea, language="Turkish")
|
|
185
|
+
|
|
186
|
+
# 2. Fetch candidate repos
|
|
187
|
+
repos = await github_service.search_and_enrich(
|
|
188
|
+
keywords=queries.search_keywords,
|
|
189
|
+
topics=queries.github_topics,
|
|
190
|
+
limit=5,
|
|
191
|
+
)
|
|
192
|
+
|
|
193
|
+
# 3. Synthesize Market & Gap Report with Tech Roadmap
|
|
194
|
+
report = llm_service.analyze_market_and_gaps(idea, repos, language="Turkish")
|
|
195
|
+
print("Market Saturation:", report.market_saturation)
|
|
196
|
+
print("Opportunity Score:", report.opportunity_score)
|
|
197
|
+
if report.implementation_guide:
|
|
198
|
+
print("Recommended Stack:", report.implementation_guide.recommended_tech_stack)
|
|
199
|
+
|
|
200
|
+
asyncio.run(main())
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
---
|
|
204
|
+
|
|
205
|
+
## 🧪 Testing
|
|
206
|
+
|
|
207
|
+
Run unit and integration tests with `pytest`:
|
|
208
|
+
|
|
209
|
+
```bash
|
|
210
|
+
pytest
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
---
|
|
214
|
+
|
|
215
|
+
## 📚 Documentation Index
|
|
216
|
+
|
|
217
|
+
- [ARCHITECTURE.md](./ARCHITECTURE.md): Deep-dive into technical design, data models, and prompt engine.
|
|
218
|
+
- [demo/README.md](./demo/README.md): Step-by-step Vercel Web Demo deployment guide.
|
|
219
|
+
- [CONTRIBUTING.md](./CONTRIBUTING.md): PR guidelines, coding standards, and conventional commits.
|
|
220
|
+
- [SECURITY.md](./SECURITY.md): Security policy and vulnerability reporting.
|
|
221
|
+
- [CHANGELOG.md](./CHANGELOG.md): Semantic release history.
|
|
222
|
+
- [examples/README.md](./examples/README.md): Code samples and JSON report schemas.
|
|
223
|
+
|
|
224
|
+
---
|
|
225
|
+
|
|
226
|
+
## 📄 License
|
|
227
|
+
|
|
228
|
+
GitRadar is open-source software licensed under the [MIT License](./LICENSE).
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import os
|
|
2
|
+
import sys
|
|
3
|
+
from pathlib import Path
|
|
4
|
+
|
|
5
|
+
# Add demo directory to sys.path so bundled gitradar package is importable on Vercel
|
|
6
|
+
DEMO_DIR = Path(__file__).parent.parent
|
|
7
|
+
if str(DEMO_DIR) not in sys.path:
|
|
8
|
+
sys.path.insert(0, str(DEMO_DIR))
|
|
9
|
+
|
|
10
|
+
# Import monkeypatch for Python compatibility
|
|
11
|
+
import gitradar # noqa: F401
|
|
12
|
+
from gitradar.web.app import create_app
|
|
13
|
+
|
|
14
|
+
app = create_app()
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"""
|
|
2
|
+
GitRadar: Smart GitHub Market & Gap Analysis CLI tool.
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
import sys
|
|
6
|
+
import typing
|
|
7
|
+
|
|
8
|
+
# Fix compatibility issue on Python < 3.11 where third-party packages (e.g. litellm)
|
|
9
|
+
# attempt to import 'NotRequired' or other PEP 655/673 types directly from 'typing'.
|
|
10
|
+
if sys.version_info < (3, 11):
|
|
11
|
+
try:
|
|
12
|
+
import typing_extensions
|
|
13
|
+
|
|
14
|
+
for _name in ("NotRequired", "Required", "Self", "Never", "LiteralString", "TypeAlias", "Override", "dataclass_transform"):
|
|
15
|
+
if not hasattr(typing, _name) and hasattr(typing_extensions, _name):
|
|
16
|
+
setattr(typing, _name, getattr(typing_extensions, _name))
|
|
17
|
+
except ImportError:
|
|
18
|
+
pass
|
|
19
|
+
|
|
20
|
+
__version__ = "0.2.0"
|
|
21
|
+
__author__ = "GitRadar Developer"
|
|
22
|
+
|