From 025c78b4e742ada6de0cdb87bca1577d0b4c18e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D0=B8=D0=BA=D1=82=D0=BE=D1=80?= <78488229+viktor138irk@users.noreply.github.com> Date: Mon, 11 May 2026 23:33:09 +0900 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=20API=20registry=20=D0=BF=D1=80=D0=BE=D0=B5=D0=BA=D1=82?= =?UTF-8?q?=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/projects_api.py | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 backend/projects_api.py diff --git a/backend/projects_api.py b/backend/projects_api.py new file mode 100644 index 0000000..de9596f --- /dev/null +++ b/backend/projects_api.py @@ -0,0 +1,36 @@ +from fastapi import APIRouter +from pydantic import BaseModel + +from backend.projects_registry import load_projects, save_project + +router = APIRouter(prefix='/api/projects', tags=['projects']) + + +class ProjectRegistryRequest(BaseModel): + name: str + repo_url: str + workspace: str + stack: str | None = None + + +@router.get('/list') +async def projects_list(): + return { + 'success': True, + 'projects': load_projects(), + } + + +@router.post('/register') +async def register_project(payload: ProjectRegistryRequest): + projects = save_project({ + 'name': payload.name, + 'repo_url': payload.repo_url, + 'workspace': payload.workspace, + 'stack': payload.stack, + }) + + return { + 'success': True, + 'projects': projects, + }