POSTERAPP_V1/validation-service

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:

# 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:

# 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