# CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

## Project Overview

This is a full-stack DZTPS (Users database system) application with a React frontend and Node.js/Express backend. The application appears to be a management system with CRUD operations for languages and other entities, using Firebase Authentication and MySQL database.

## Project Structure

- **client/**: React frontend application using Vite
- **server/**: Node.js/Express backend API server
  - **server/server/**: Main server code
  - **server/server/config/**: Firebase service account configuration
  - **server/.env**: Database and environment configuration

## Development Commands

### Client (Frontend)
```bash
cd client
npm run dev        # Start development server
npm run build      # Build for production
npm run lint       # Run ESLint
npm run preview    # Preview production build
```

### Server (Backend)
```bash
cd server
npm start          # Start server with nodemon (auto-reload)
```

## Architecture Details

### Frontend
- **Framework**: React 19 with Vite
- **Styling**: CSS modules
- **Build Tool**: Vite with HMR support
- **Linting**: ESLint with React plugins
- **Main Components**: Located in `client/src/` with App.jsx as entry point
- **Development Server**: Runs on Vite's default port
- **API Endpoint**: Configured to connect to `http://localhost:3000`

### Backend
- **Framework**: Express.js server
- **Authentication**: Firebase Admin SDK
- **Database**: MySQL with connection pooling
- **Environment**: Configured via .env file
- **Port**: 3000 (configurable via PORT env var)
- **CORS**: Enabled for cross-origin requests
- **Main Server**: `server/server/index.js`

### Database Configuration
The MySQL database connection uses these environment variables:
- MYSQL_HOST (default: localhost)
- MYSQL_USER (default: root)
- MYSQL_PASSWORD (default: root)
- MYSQL_DATABASE (default: dztps)
- MYSQL_PORT (default: 3306)

### Firebase Setup
The server requires a `serviceAccountKey.json` file in `server/server/config/` for Firebase Admin SDK initialization.

## Development Workflow

1. **Starting Development**:
   - Start MySQL database service
   - Start backend: `cd server && npm start`
   - Start frontend: `cd client && npm run dev`

2. **Making Changes**:
   - Frontend changes auto-reload via Vite HMR
   - Backend changes auto-reload via nodemon

3. **Code Quality**:
   - Run `npm run lint` in client directory for ESLint checks
   - The project uses modern ES6+ JavaScript/JSX

## Key Dependencies

### Client
- React 19 with modern hooks
- Vite for build tooling and development server
- ESLint with React-specific rules

### Server
- Express.js for REST API
- Firebase Admin SDK for authentication
- MySQL driver for database operations
- CORS middleware for cross-origin support
- dotenv for environment configuration
- nodemon for development auto-reload

## Important Notes

- The server expects Firebase service account credentials to be properly configured
- Database connection parameters are environment-dependent
- The frontend is configured to make API calls to localhost:3000
- Both client and server have separate package.json files and dependency management