POSTERAPP_V1/README.md

94 lines
2.1 KiB
Markdown

# 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:
```bash
git clone https://gitea.oezdag.io/m3mo/POSTERAPP_V1.git
cd POSTERAPP_V1
```
2. Install dependencies:
```bash
npm install
cd validation-service && npm install
```
3. Configure environment variables:
```bash
cp .env.example .env.local
```
4. Start the development environment:
```bash
./start-dev.sh
```
This will start both the Next.js application and the address validation service.
## Database Setup
1. Initialize Prisma:
```bash
npx prisma generate
npx prisma db push
```
## Testing
The address validation service can be tested independently:
```bash
cd validation-service
npm run dev
```
Then use curl to test the endpoints:
```bash
# 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.