Postaci - Swiss Postal Delivery Application

Postaci is a web application for managing postal deliveries in Switzerland, featuring OCR address scanning, address validation, and route optimization.

Features

  • OCR-based address scanning using Tesseract.js
  • Swiss address validation with canton detection
  • Route optimization for multiple delivery addresses
  • Interactive map interface using Leaflet
  • User authentication with NextAuth.js
  • Prisma ORM for database operations

Technology Stack

  • Frontend: React, Next.js 15, TailwindCSS
  • Backend: Next.js API routes, Express.js (validation service)
  • Database: PostgreSQL with Prisma ORM
  • Authentication: NextAuth.js
  • Maps: Leaflet, React-Leaflet
  • OCR: Tesseract.js

Project Structure

  • app/ - Next.js application routes and components
  • components/ - Reusable React components
  • lib/ - Utility functions and API helpers
  • prisma/ - Database schema and migrations
  • providers/ - React context providers
  • public/ - Static assets
  • validation-service/ - Address validation microservice

Setup & Development

Prerequisites

  • Node.js 18+ and npm
  • PostgreSQL (for production)

Installation

  1. Clone the repository:

    git clone https://gitea.oezdag.io/m3mo/POSTERAPP_V1.git
    cd POSTERAPP_V1
    
  2. Install dependencies:

    npm install
    cd validation-service && npm install
    
  3. Configure environment variables:

    cp .env.example .env.local
    
  4. Start the development environment:

    ./start-dev.sh
    

This will start both the Next.js application and the address validation service.

Database Setup

  1. Initialize Prisma:
    npx prisma generate
    npx prisma db push
    

Testing

The address validation service can be tested independently:

cd validation-service
npm run dev

Then use curl to test the endpoints:

# Validate an address
curl -X POST http://localhost:8000/api/validate-address \
  -H "Content-Type: application/json" \
  -d '{"address": "Luzernstrasse 27, 4552 Derendingen"}'

License

This project is proprietary and confidential.

Description
No description provided
Readme 7.3 MiB
Languages
TypeScript 91.4%
JavaScript 5.6%
Shell 2.8%
CSS 0.2%