97 lines
2.6 KiB
Markdown

# Address Validation Service
This is a simple address validation service for the Postaci application, designed to validate Swiss addresses.
## Features
- Validates and formats Swiss addresses
- Extracts street name, house number, postal code, and city
- Identifies Swiss cantons based on postal code prefixes
- Provides confidence scores for validation results
- Returns standardized address format
- Mock street lookup for testing
## Setup & Running
1. Install dependencies:
```
npm install
```
2. Start the server:
```
npm start
```
For development with auto-restart:
```
npm run dev
```
## Starting the Development Environment
A startup script has been created to launch both the validation service and the Next.js application:
```bash
# From the project root
./start-dev.sh
```
This will:
1. Start the validation service in the background
2. Launch the Next.js application
3. Automatically stop the validation service when Next.js is terminated
## API Endpoints
### Validate Address
- **URL**: `/api/validate-address`
- **Method**: `POST`
- **Body**: `{ "address": "Your address string" }`
- **Response**: Returns a formatted address string if valid, or the original address if validation fails
### Detailed Address Validation
- **URL**: `/api/validate-address/detailed`
- **Method**: `POST`
- **Body**: `{ "address": "Your address string" }`
- **Response**: Returns a detailed validation result with components, confidence score, and validity
### Address Lookup (Mock)
- **URL**: `/api/address-lookup`
- **Method**: `GET`
- **Query Parameters**: `postalCode` or `city`
- **Response**: Returns a list of streets for the given postal code or city
### Health Check
- **URL**: `/api/health`
- **Method**: `GET`
- **Response**: `{ "status": "up", "message": "Address validation service is running" }`
## Testing the Service
You can test the service using curl:
```bash
# Health check
curl http://localhost:8000/api/health
# Validate an address
curl -X POST http://localhost:8000/api/validate-address \
-H "Content-Type: application/json" \
-d '{"address": "Luzernstrasse 27, 4552 Derendingen"}'
# Get detailed validation
curl -X POST http://localhost:8000/api/validate-address/detailed \
-H "Content-Type: application/json" \
-d '{"address": "Luzernstrasse 27, 4552 Derendingen"}'
# Get streets in Zürich
curl "http://localhost:8000/api/address-lookup?postalCode=8000"
```
## Swiss Address Format
The validation service understands the standard Swiss address format:
- Street name + house number (e.g., "Bahnhofstrasse 10")
- Four-digit postal code + city (e.g., "8001 Zürich")
- Canton identification from postal code prefix