Big refactoring
This commit is contained in:
86
.kiro/steering/tech.md
Normal file
86
.kiro/steering/tech.md
Normal file
@@ -0,0 +1,86 @@
|
||||
# Tech Stack
|
||||
|
||||
## Backend
|
||||
|
||||
- Python 3.12+
|
||||
- FastAPI with Uvicorn
|
||||
- SQLAlchemy 2.0 (async) with asyncpg
|
||||
- PostgreSQL database
|
||||
- Alembic for migrations
|
||||
- APScheduler for scheduled jobs
|
||||
- JWT auth (python-jose, passlib with bcrypt)
|
||||
- Pydantic for validation and settings
|
||||
|
||||
## Frontend
|
||||
|
||||
- React 18 with TypeScript
|
||||
- Vite 5 (build tool)
|
||||
- TanStack React Query v5 (server state)
|
||||
- Zustand (client state, auth)
|
||||
- React Router v6 (SPA routing)
|
||||
- Axios with JWT interceptor
|
||||
- Tailwind CSS 3 with custom glassmorphism design system
|
||||
- Canvas 2D for candlestick charts
|
||||
|
||||
## Testing
|
||||
|
||||
- Backend: pytest, pytest-asyncio, Hypothesis (property-based testing)
|
||||
- Frontend: Vitest
|
||||
- Test database: In-memory SQLite (no PostgreSQL needed for tests)
|
||||
|
||||
## Common Commands
|
||||
|
||||
### Backend
|
||||
|
||||
```bash
|
||||
# Setup
|
||||
python -m venv .venv
|
||||
source .venv/bin/activate
|
||||
pip install -e ".[dev]"
|
||||
|
||||
# Database
|
||||
createdb stock_data_backend
|
||||
alembic upgrade head
|
||||
|
||||
# Run
|
||||
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000
|
||||
|
||||
# Test
|
||||
pytest tests/ -v
|
||||
```
|
||||
|
||||
### Frontend
|
||||
|
||||
```bash
|
||||
cd frontend
|
||||
|
||||
# Setup
|
||||
npm install
|
||||
|
||||
# Run dev server (proxies /api/v1/ to backend)
|
||||
npm run dev
|
||||
|
||||
# Build
|
||||
npm run build
|
||||
|
||||
# Test
|
||||
npm test # Single run
|
||||
npm run test:watch # Watch mode
|
||||
```
|
||||
|
||||
## Environment Variables
|
||||
|
||||
Required in `.env`:
|
||||
- `DATABASE_URL`: PostgreSQL connection string (postgresql+asyncpg://...)
|
||||
- `JWT_SECRET`: Random secret for JWT signing
|
||||
- `ALPACA_API_KEY`, `ALPACA_API_SECRET`: For OHLCV data
|
||||
- `GEMINI_API_KEY`: For sentiment analysis
|
||||
- `FMP_API_KEY`: For fundamental data
|
||||
|
||||
See `.env.example` for full list with defaults.
|
||||
|
||||
## API Documentation
|
||||
|
||||
- Swagger UI: http://localhost:8000/docs
|
||||
- ReDoc: http://localhost:8000/redoc
|
||||
- All endpoints under `/api/v1/`
|
||||
Reference in New Issue
Block a user