feat(A1.1): Add Config API endpoint with FastAPI backend

Implements Task A1.1 - Config Sharing JSON API

Features:
- FastAPI backend with 6 endpoints
- Config analyzer with auto-categorization
- Full metadata extraction (24 fields per config)
- Category/tag/type filtering
- Direct config download endpoint
- Render deployment configuration

Endpoints:
- GET / - API information
- GET /api/configs - List all configs (filterable)
- GET /api/configs/{name} - Get specific config
- GET /api/categories - List categories with counts
- GET /api/download/{config_name} - Download config file
- GET /health - Health check

Metadata:
- name, description, type (single-source/unified)
- category (8 auto-detected categories)
- tags (language, domain, tech)
- primary_source (URL/repo)
- max_pages, file_size, last_updated
- download_url (skillseekersweb.com)

Categories:
- web-frameworks (12 configs)
- game-engines (4 configs)
- devops (2 configs)
- css-frameworks (1 config)
- development-tools (1 config)
- gaming (1 config)
- testing (2 configs)
- uncategorized (1 config)

Deployment:
- Configured for Render via render.yaml
- Domain: skillseekersweb.com
- Auto-deploys from main branch

Tests:
-  All endpoints tested locally
-  24 configs discovered and analyzed
-  Filtering works (category/tag/type)
-  Download works for all configs

Issue: #9
Roadmap: FLEXIBLE_ROADMAP.md Task A1.1
This commit is contained in:
yusyus
2025-11-30 13:15:34 +03:00
parent a4e5025dd1
commit 13bcb6beda
7 changed files with 888 additions and 0 deletions

267
api/README.md Normal file
View File

@@ -0,0 +1,267 @@
# Skill Seekers Config API
FastAPI backend for discovering and downloading Skill Seekers configuration files.
## 🚀 Endpoints
### Base URL
- **Production**: `https://skillseekersweb.com`
- **Local**: `http://localhost:8000`
### Available Endpoints
#### 1. **GET /** - API Information
Returns API metadata and available endpoints.
```bash
curl https://skillseekersweb.com/
```
**Response:**
```json
{
"name": "Skill Seekers Config API",
"version": "1.0.0",
"endpoints": {
"/api/configs": "List all available configs",
"/api/configs/{name}": "Get specific config details",
"/api/categories": "List all categories",
"/docs": "API documentation"
},
"repository": "https://github.com/yusufkaraaslan/Skill_Seekers",
"website": "https://skillseekersweb.com"
}
```
---
#### 2. **GET /api/configs** - List All Configs
Returns list of all available configs with metadata.
**Query Parameters:**
- `category` (optional) - Filter by category (e.g., `web-frameworks`)
- `tag` (optional) - Filter by tag (e.g., `javascript`)
- `type` (optional) - Filter by type (`single-source` or `unified`)
```bash
# Get all configs
curl https://skillseekersweb.com/api/configs
# Filter by category
curl https://skillseekersweb.com/api/configs?category=web-frameworks
# Filter by tag
curl https://skillseekersweb.com/api/configs?tag=javascript
# Filter by type
curl https://skillseekersweb.com/api/configs?type=unified
```
**Response:**
```json
{
"version": "1.0.0",
"total": 24,
"filters": null,
"configs": [
{
"name": "react",
"description": "React framework for building user interfaces...",
"type": "single-source",
"category": "web-frameworks",
"tags": ["javascript", "frontend", "documentation"],
"primary_source": "https://react.dev/",
"max_pages": 300,
"file_size": 1055,
"last_updated": "2025-11-30T09:26:07+00:00",
"download_url": "https://skillseekersweb.com/api/download/react.json",
"config_file": "react.json"
}
]
}
```
---
#### 3. **GET /api/configs/{name}** - Get Specific Config
Returns detailed information about a specific config.
```bash
curl https://skillseekersweb.com/api/configs/react
```
**Response:**
```json
{
"name": "react",
"description": "React framework for building user interfaces...",
"type": "single-source",
"category": "web-frameworks",
"tags": ["javascript", "frontend", "documentation"],
"primary_source": "https://react.dev/",
"max_pages": 300,
"file_size": 1055,
"last_updated": "2025-11-30T09:26:07+00:00",
"download_url": "https://skillseekersweb.com/api/download/react.json",
"config_file": "react.json"
}
```
---
#### 4. **GET /api/categories** - List Categories
Returns all available categories with config counts.
```bash
curl https://skillseekersweb.com/api/categories
```
**Response:**
```json
{
"total_categories": 5,
"categories": {
"web-frameworks": 7,
"game-engines": 2,
"devops": 2,
"css-frameworks": 1,
"uncategorized": 12
}
}
```
---
#### 5. **GET /api/download/{config_name}** - Download Config File
Downloads the actual config JSON file.
```bash
# Download react config
curl -O https://skillseekersweb.com/api/download/react.json
# Download with just name (auto-adds .json)
curl -O https://skillseekersweb.com/api/download/react
```
---
#### 6. **GET /health** - Health Check
Health check endpoint for monitoring.
```bash
curl https://skillseekersweb.com/health
```
**Response:**
```json
{
"status": "healthy",
"service": "skill-seekers-api"
}
```
---
#### 7. **GET /docs** - API Documentation
Interactive OpenAPI documentation (Swagger UI).
Visit: `https://skillseekersweb.com/docs`
---
## 📦 Metadata Fields
Each config includes the following metadata:
| Field | Type | Description |
|-------|------|-------------|
| `name` | string | Config identifier (e.g., "react") |
| `description` | string | What the config is used for |
| `type` | string | "single-source" or "unified" |
| `category` | string | Auto-categorized (e.g., "web-frameworks") |
| `tags` | array | Relevant tags (e.g., ["javascript", "frontend"]) |
| `primary_source` | string | Main documentation URL or repo |
| `max_pages` | int | Estimated page count for scraping |
| `file_size` | int | Config file size in bytes |
| `last_updated` | string | ISO 8601 date of last update |
| `download_url` | string | Direct download link |
| `config_file` | string | Filename (e.g., "react.json") |
---
## 🏗️ Categories
Configs are auto-categorized into:
- **web-frameworks** - Web development frameworks (React, Django, FastAPI, etc.)
- **game-engines** - Game development engines (Godot, Unity, etc.)
- **devops** - DevOps tools (Kubernetes, Ansible, etc.)
- **css-frameworks** - CSS frameworks (Tailwind, etc.)
- **development-tools** - Dev tools (Claude Code, etc.)
- **gaming** - Gaming platforms (Steam, etc.)
- **uncategorized** - Other configs
---
## 🏷️ Tags
Common tags include:
- **Language**: `javascript`, `python`, `php`
- **Domain**: `frontend`, `backend`, `devops`, `game-development`
- **Type**: `documentation`, `github`, `pdf`, `multi-source`
- **Tech**: `css`, `testing`, `api`
---
## 🚀 Local Development
### Setup
```bash
# Install dependencies
cd api
pip install -r requirements.txt
# Run server
python main.py
```
API will be available at `http://localhost:8000`
### Testing
```bash
# Test health check
curl http://localhost:8000/health
# List all configs
curl http://localhost:8000/api/configs
# Get specific config
curl http://localhost:8000/api/configs/react
# Download config
curl -O http://localhost:8000/api/download/react.json
```
---
## 📝 Deployment
### Render
This API is configured for Render deployment via `render.yaml`.
1. Push to GitHub
2. Connect repository to Render
3. Render auto-deploys from `render.yaml`
4. Configure custom domain: `skillseekersweb.com`
---
## 🔗 Links
- **API Documentation**: https://skillseekersweb.com/docs
- **GitHub Repository**: https://github.com/yusufkaraaslan/Skill_Seekers
- **Main Project**: https://github.com/yusufkaraaslan/Skill_Seekers#readme