--- project_name: 'Data_analysis' user_name: 'Sepehr' date: '2026-01-10' sections_completed: ['technology_stack', 'language_rules', 'framework_rules', 'testing_rules', 'quality_rules', 'workflow_rules', 'anti_patterns'] status: 'complete' rule_count: 18 optimized_for_llm: true --- # Project Context for AI Agents _This file contains critical rules and patterns that AI agents must follow when implementing code in this project. Focus on unobvious details that agents might otherwise miss._ --- ## Technology Stack & Versions - **Backend:** Python 3.12, FastAPI, Pydantic v2, Pandas, Scikit-learn, Statsmodels, PyArrow v17.0+ (Managed by **uv**) - **Frontend:** Next.js 16 (Standalone mode), TypeScript, Tailwind CSS, Shadcn UI, TanStack Table, Recharts, Zustand v5, TanStack Query v5, Apache Arrow v17+ - **DevOps:** Docker, Docker Compose, multi-stage builds (distroless/alpine) ## Critical Implementation Rules ### Language & Framework Patterns - **Backend (Python):** PEP 8 (snake_case). Pydantic v2 for schema validation. Fast API async def for I/O bound routes. - **Frontend (TSX):** Shadcn UI + Tailwind. Feature-based organization in `src/features/`. - **Performance:** Use `apache-arrow` for data-heavy components. Virtualize all grids with 500+ rows. ### Data & State Architecture - **API Convention:** `snake_case` JSON keys to maintain consistency with Pandas DataFrame columns. - **Serialization:** `pyarrow.ipc` for binary streams to ensure zero-copy data transfer between services. - **State Management:** Zustand for localized UI/Grid state; TanStack Query for remote server state. ### Testing & Quality - **Location:** Centralized `/tests` directory at each service root (`backend/tests/`, `frontend/tests/`). - **Standard:** Use `pytest` for Python and `vitest` for TypeScript. - **Documentation:** Every exported function must have Docstrings/JSDoc explaining parameters and return types. ### Critical Anti-Patterns (DO NOT) - ❌ **DO NOT** use standard JSON for transferring datasets > 5,000 rows (use Apache Arrow). - ❌ **DO NOT** use deep React Context for high-frequency state updates (use Zustand). - ❌ **DO NOT** implement "Black Box" algorithms; all data exclusions must be logged and visualized in the `InsightPanel`. - ❌ **DO NOT** perform heavy blocking computations on the main FastAPI process; use background tasks for jobs expected to take > 5 seconds. --- ## Usage Guidelines **For AI Agents:** - Read this file before implementing any code. - Follow ALL rules exactly as documented. - When in doubt, prefer the more restrictive option. - Update this file if new patterns emerge. **For Humans:** - Keep this file lean and focused on agent needs. - Update when technology stack changes. - Review quarterly for outdated rules. Last Updated: 2026-01-10