Client GitHub avec cache, quota et tests ; README
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
1 parent
1885488d05
commit
9432a34e30
3 files changed
+416
-2
No files matched your search
@@ -1,3 +1,70 @@
|
||||
# searchgit
|
||||
# Searchgit
|
||||
|
||||
Outil Go de recherche de dépôts GitHub selon des critères, avec interface web responsive (light/dark) inspirée de LogStream.
|
||||
Search GitHub repositories with criteria and browse the results in a clean web interface
|
||||
(light/dark theme, responsive, English/French UI). The interface reuses the look of
|
||||
[Logstream](https://gitea.vlab.bzh/cedric/logstream).
|
||||
|
||||
```
|
||||
browser ──/api/search──▶ searchgit (Go) ──REST──▶ api.github.com/search/repositories
|
||||
└── 5 min cache
|
||||
```
|
||||
|
||||
## Getting started
|
||||
|
||||
```bash
|
||||
cp .env.example .env # optional: set GITHUB_TOKEN
|
||||
docker compose up -d --build
|
||||
```
|
||||
|
||||
Then open <http://localhost:8080>.
|
||||
|
||||
Without Docker: `go run .` (Go 1.23 or newer), then open <http://localhost:8080>.
|
||||
|
||||
## Criteria
|
||||
|
||||
| Filter | GitHub qualifier |
|
||||
|---|---|
|
||||
| Search field | free text, plus any GitHub qualifier (`user:`, `org:`, `NOT`, `"exact phrase"`, `size:`…) |
|
||||
| Everywhere / Name / Description / README | `in:name`, `in:description`, `in:readme` |
|
||||
| Language | `language:Go` (click a language in the list to filter on it) |
|
||||
| Stars | `stars:>=100` |
|
||||
| Activity | `pushed:>=YYYY-MM-DD` (1 month to 2 years) |
|
||||
| Creation date | `created:>=YYYY-MM-DD` |
|
||||
| License | `license:mit`… |
|
||||
| Topic | `topic:cli` (click a topic in the list to filter on it) |
|
||||
| Good first issues | `good-first-issues:>0` |
|
||||
| Forks / Archived | forks and archived repositories are hidden unless enabled |
|
||||
| Sort | best match, stars, forks, recently updated, help wanted issues |
|
||||
|
||||
The filters are kept in the page URL, so a search can be bookmarked or shared. The footer
|
||||
shows the exact query sent to GitHub (click it to open the same search on github.com).
|
||||
**CSV** downloads the loaded results (semicolon separated when the UI is in French, for Excel).
|
||||
|
||||
GitHub returns at most the first 1,000 results of a search.
|
||||
|
||||
## Configuration
|
||||
|
||||
| Variable | Default | Role |
|
||||
|---|---|---|
|
||||
| `HTTP_ADDR` | `:8080` | listening address |
|
||||
| `GITHUB_TOKEN` | empty | GitHub token; raises the search quota from 10 to 30 requests per minute |
|
||||
| `CACHE_TTL` | `5m` | identical searches are served from memory for this long |
|
||||
| `AUTH_USER` / `AUTH_PASS` | empty | HTTP basic authentication (except `/healthz`) |
|
||||
| `GITHUB_API` | `https://api.github.com` | API base URL (GitHub Enterprise) |
|
||||
|
||||
## API
|
||||
|
||||
- `GET /api/search?q=&in=&language=&stars=&maxstars=&minforks=&topic=&license=&pushed=&created=&goodfirst=1&forks=1&archived=1&sort=&order=&page=&per_page=`
|
||||
(`pushed` / `created`: `1w`, `1m`, `3m`, `6m`, `1y`, `2y`, `5y`)
|
||||
- `GET /api/status`: token configured and last known search quota
|
||||
- `GET /healthz`
|
||||
|
||||
## Development
|
||||
|
||||
```bash
|
||||
go test ./...
|
||||
go run .
|
||||
```
|
||||
|
||||
The web interface is plain HTML, CSS and JavaScript in `web/`, embedded in the binary
|
||||
(no build step).
|
||||
Reference in new issue
Block a user