Files
govin 5128e1551c feat: scaffold FastAPI backend and Vue 3 frontend
Backend (backend/):
- FastAPI app with layered app/{api,core,crud,db,models,schemas} structure
- TiDB connection via SQLAlchemy. The URL is built with URL.create rather
  than string formatting: the password contains '@', which would otherwise be
  parsed as the user/host separator and silently truncate the credential.
- Alembic environment wired to Base.metadata and the app settings, so
  backend/.env stays the single source of truth for credentials
- /api/health endpoint reporting database reachability
- models/ and crud/ are intentionally empty: no model classes are defined and
  no tables are created, at import time or otherwise

Frontend (frontend/):
- Vue 3 + Vite + TypeScript scaffold (create-vue, --bare)
- axios instance with a normalized error shape
- vue-router with a home route and a catch-all 404
- pinia + pinia-plugin-persistedstate; the app store persists selected keys
- Element Plus with its icons registered globally
- dev proxy forwards /api to the FastAPI service on port 8000

The database paper_doc was created in TiDB out of band; no table exists yet.
2026-09-17 12:51:37 +08:00

29 lines
405 B
Plaintext

# --- Python / backend ---
backend/.venv/
__pycache__/
*.py[cod]
*.egg-info/
.pytest_cache/
.mypy_cache/
.ruff_cache/
# Local secrets: real credentials live here, never in the repo.
backend/.env
.env
.env.*
!.env.example
# --- Node / frontend ---
node_modules/
frontend/dist/
frontend/dist-ssr/
*.tsbuildinfo
pnpm-debug.log*
npm-debug.log*
yarn-error.log*
# --- Editors / OS ---
.idea/
.DS_Store
*.swp