Files
policy-ui/README.md
HaimKortovich f6b8ba3030
Some checks failed
Build and Publish / build-release (push) Failing after 8s
update readme
2026-04-29 16:35:39 -05:00

207 lines
5.0 KiB
Markdown

# Policy UI
Nuxt.js application for managing insurance policies, quotes, and customer relationships.
## Overview
Policy UI is a modern web application built with:
- **Nuxt 4** - Vue 3 framework with server-side rendering
- **@nuxt/ui** - Component library for consistent UI
- **Tailwind CSS** - Utility-first CSS framework
- **TypeScript** - Type-safe development
## Features
- Policy management and tracking
- Quote comparison and selection
- Customer relationship management
- Workload task management (back-office)
- Document handling and generation
- Responsive design
## Development
### Prerequisites
- **Nix** (recommended) or Node.js 20+ and pnpm 10+
### Using Nix (Recommended)
The project uses Nix for reproducible development and builds.
```bash
# Enter the development shell
nix develop
# Install dependencies (first time only)
pnpm install
# Start development server
pnpm dev
```
The application will be available at `http://localhost:3000`.
### Using Node.js/pnpm
If you don't have Nix installed:
```bash
# Install dependencies
pnpm install
# Start development server
pnpm dev
```
## Building
### With Nix
```bash
# Build the application
nix build .#policy-ui
# The built application will be in the Nix store
```
### With pnpm
```bash
# Build the application
pnpm build
# Preview production build
pnpm preview
```
## Infrastructure
### Nix Flake
The project uses a Nix flake for reproducible builds and Docker image creation:
- **`packages.policy-ui`** - Builds the Nuxt application
- **`packages.dockerImage`** - Creates a Docker image with Node.js and the built app
- **`devShells.default`** - Provides Node.js, pnpm, and Helm in the development shell
### Docker Image
The Docker image is built using Nix and includes:
- Node.js runtime
- Built Nuxt application (`.output` and `node_modules`)
- Configured to run on port 3000
### Helm Chart
A Helm chart is provided for Kubernetes deployment at `ops/chart/`:
```bash
# Install dependencies
helm repo add bjw-s https://bjw-s-labs.github.io/helm-charts
helm dependency build ops/chart
# Install the chart
helm install policy-ui ops/chart --namespace <namespace>
```
The chart includes:
- Deployment with 1 replica (configurable)
- ClusterIP service on port 3000
- Health checks (liveness/readiness)
- Environment variables for API endpoints
- Ingress support (disabled by default)
### CI/CD
The `.gitea/workflows/build-and-publish.yaml` workflow:
- Triggers on push to `main` branch
- Builds Docker image using Nix
- Pushes to Gitea Container Registry
- Packages and pushes Helm chart to Gitea Helm registry
## Configuration
### Environment Variables
The application uses the following environment variables:
| Variable | Description | Default |
|----------|-------------|---------|
| `NUXT_PUBLIC_CUSTOMER_API_BASE` | Customer API base URL | `https://dev.api.corredorconect.com/customer/api/v1` |
| `NUXT_PUBLIC_POLICY_API_BASE` | Policy API base URL | `https://dev.api.corredorconect.com/policy/api/v1` |
| `NUXT_PUBLIC_PROVIDERS_API_BASE` | Providers API base URL | `https://dev.api.corredorconect.com/provider/api/v1` |
| `NUXT_PUBLIC_WORKLOAD_API_BASE` | Workload API base URL | `https://dev.api.corredorconect.com/workload/api/v1` |
| `NUXT_PUBLIC_DOCUMENT_API_BASE` | Document API base URL | `https://dev.api.corredorconect.com/document/api` |
| `NUXT_PUBLIC_POLICY_API_TOKEN` | Policy API authentication token | Required |
### API Endpoints
The application connects to the following backend services:
- **Customer API** - Customer and policy data
- **Policy API** - Policy management and quotes
- **Providers API** - Insurance provider information
- **Workload API** - Back-office task management
- **Document API** - Document storage and retrieval
## Deployment
### Kubernetes
1. Create the required secret:
```bash
kubectl create secret generic policy-ui-secrets \
--from-literal=policyApiToken='your-token-here' \
--namespace=<namespace>
```
2. Install the Helm chart:
```bash
helm install policy-ui ops/chart --namespace <namespace>
```
3. For production, override values:
```bash
helm install policy-ui ops/chart --namespace <namespace> \
--set controllers.main.containers.main.image.tag=<version> \
--set ingress.main.enabled=true \
--set ingress.main.hosts[0].host=policy-ui.example.com
```
### Docker
```bash
# Build the image with Nix
nix build .#dockerImage
# Load the image
docker load < result
# Run the container
docker run -p 3000:3000 \
-e NUXT_PUBLIC_POLICY_API_TOKEN=your-token \
gitea.corredorconect.com/software-engineering/policy-ui:latest
```
## Project Structure
```
policy-ui/
├── app/ # Nuxt app directory
│ ├── components/ # Vue components
│ ├── pages/ # File-based routing
│ └── assets/ # Static assets
├── ops/ # Infrastructure
│ └── chart/ # Helm chart
├── .gitea/ # CI/CD workflows
│ └── workflows/
├── flake.nix # Nix flake configuration
└── package.json # Node.js dependencies
```
## License
[Your License Here]