# GitHub Copilot Instructions for Finance App ## Project Overview This project is a financial transaction management application built with Astro and TypeScript, using Prisma for database operations. It follows a two-column dashboard layout for managing bank accounts and transactions. ## Technology Stack * **Framework:** Astro (latest version) * **Language:** TypeScript, JavaScript (client-side scripts), HTML, CSS * **Styling:** Plain CSS (`src/styles/global.css`) * **Data:** Using Astro's built-in API routes in `src/pages/api/` with persistent database storage via Prisma ORM (`src/data/db.service.ts`). * **Development Environment:** Local development with Node.js, PostgreSQL, and standard tooling ## Development Environment * **Local Development:** The project uses standard Node.js development practices. * Node.js (version 18 or higher) * PostgreSQL for database storage * Prisma ORM for database operations * TypeScript for type safety * Biome.js for code formatting and linting * Husky for Git hooks and code quality enforcement ## Current State & Key Features * **Layout:** A two-column dashboard layout (`src/layouts/BaseLayout.astro`, `src/pages/index.astro`) is implemented. * **Sidebar:** (`src/components/Sidebar.astro`) Contains account selection dropdown and a collapsible section for adding new transactions. Includes an account summary section. * **Main Content:** (`src/components/MainContent.astro`) Displays the header with the current account name and the transaction list. * **Components:** Separate Astro components exist for major UI sections (Sidebar, MainContent, TransactionTable, AddTransactionForm, AccountSummary). * **API Integration:** * API routes structure implemented in `src/pages/api/` * Database integration using Prisma ORM in `src/data/db.service.ts` * All API endpoints implemented and fully functional: * GET /api/accounts - List all accounts * GET /api/accounts/:id - Get single account details * GET /api/accounts/:id/transactions - Get transactions for an account * POST /api/transactions - Create new transaction * PUT /api/transactions/:id - Update existing transaction * DELETE /api/transactions/:id - Delete transaction * Comprehensive error handling and validation * Database persistence with proper transaction support * **Account Switching:** Selecting an account from the dropdown in the sidebar correctly updates the Main Content area (header, transaction table) and the Account Summary section using client-side JavaScript (`