zephyrdark 51fb812d57 fix: run data collectors in background threads to prevent server blocking
The collect endpoints were defined as async def but called synchronous
collector.run() directly, blocking the single uvicorn event loop for
up to 15+ minutes during price collection. This caused all other
requests (including auth/login) to hang, making the app unusable.

Backend: Run each collector in a daemon thread with its own DB session,
returning HTTP 200 immediately. The collector logs status to JobLog as
before, which the frontend can poll.

Frontend: Auto-poll job status every 3s while any job is "running",
with a visual indicator. Disable collect buttons during active jobs.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 23:17:25 +09:00
2026-02-03 12:27:34 +09:00

Galaxis-Po

Integrated Quant Portfolio Management Application

Tech Stack

  • Backend: FastAPI, Python 3.12, SQLAlchemy, PostgreSQL
  • Frontend: Next.js 15, React 19, TypeScript, Tailwind CSS
  • Infrastructure: Docker, Docker Compose, uv

Development

Prerequisites

  • Docker & Docker Compose
  • Python 3.12
  • Node.js 24
  • uv (Python package manager)

Quick Start

# Start all services
docker-compose up -d

# Backend only (development)
cd backend
uv sync
uv run uvicorn app.main:app --reload

# Frontend only (development)
cd frontend
npm install
npm run dev

Project Structure

galaxis-po/
├── backend/           # FastAPI backend
├── frontend/          # Next.js frontend
├── docker-compose.yml
└── docs/plans/        # Implementation plans
Description
No description provided
Readme 1.4 MiB
Languages
Python 50.6%
TypeScript 48.7%
CSS 0.3%
Dockerfile 0.3%