# Goa GEL Frontend

Government of Goa - e-Licensing Blockchain Platform (Frontend)

Built with [Angular CLI](https://github.com/angular/angular-cli) version 21.1.2.

## Prerequisites

- Node.js v20+ (LTS recommended)
- npm v10+
- Backend API running on `http://localhost:3001`

## Quick Start

```bash
# Install dependencies
npm install

# Start development server
ng serve
```

Open `http://localhost:4200/` in your browser.

## Environment Configuration

Environment files are located in `src/environments/`:

| File | Purpose |
|------|---------|
| `environment.ts` | Development configuration |
| `environment.prod.ts` | Production configuration |

### Configuration Variables

```typescript
{
  production: false,                              // Build mode flag
  apiBaseUrl: 'http://localhost:3001/api/v1',    // Backend API endpoint
  tokenStorageKey: 'goa_gel_token',              // JWT token storage key
  refreshTokenStorageKey: 'goa_gel_refresh_token', // Refresh token storage key
  userStorageKey: 'goa_gel_user',                // User data storage key
  apiKeyStorageKey: 'goa_gel_api_key',           // API key storage key
  apiSecretStorageKey: 'goa_gel_api_secret',     // API secret storage key
}
```

### Modifying API URL

To connect to a different backend:

```typescript
// src/environments/environment.ts
apiBaseUrl: 'http://YOUR_BACKEND_HOST:PORT/api/v1'
```

### Token Storage (Authentication)

The application uses localStorage for authentication tokens. These are **not values you configure** - they are automatically managed:

| Storage Key | Source | Description |
|-------------|--------|-------------|
| `goa_gel_token` | Backend `/auth/login` | JWT access token (set after login) |
| `goa_gel_refresh_token` | Backend `/auth/login` | Refresh token (set after login) |
| `goa_gel_user` | Backend `/auth/login` | User profile data (JSON) |

**How it works:**
1. User logs in → Backend returns JWT tokens
2. Frontend stores tokens in localStorage using these keys
3. Tokens are sent with API requests via `Authorization` header
4. On logout, tokens are cleared from localStorage

**To inspect stored tokens:**
1. Open browser DevTools → Application → Local Storage
2. Look for keys prefixed with `goa_gel_`

## Building

```bash
# Development build
ng build

# Production build (uses environment.prod.ts)
ng build --configuration=production
```

Build artifacts are stored in `dist/goa-gel-frontend/`.

## Testing

```bash
# Run unit tests
ng test

# Run tests once (CI mode)
ng test --watch=false
```

## Project Structure

```
src/
├── app/
│   ├── api/           # API models and interfaces
│   ├── core/          # Core services (auth, API, storage)
│   ├── features/      # Feature modules (dashboard, requests, workflows)
│   ├── layouts/       # Layout components (main layout)
│   └── shared/        # Shared components and utilities
├── environments/      # Environment configurations
└── styles/           # Global styles
```

## Key Features

- Visual Workflow Builder
- License Request Management
- Document Upload with Blockchain Verification
- Department-based Approval Workflows
- Admin Dashboard with Analytics
- DBIM v3.0 & GIGW 3.0 Compliant UI

## Additional Resources

- [Angular CLI Documentation](https://angular.dev/tools/cli)
- [Angular Material](https://material.angular.io/)
