π¬ DaftAlerts
Your Daft.ie inbox, organized.
What is DaftAlerts?
DaftAlerts is a personal web application that ingests property alert emails forwarded from Daft.ie, parses them into structured listings, geocodes each property via Google Maps, and serves a filtered REST API to a separately-built React frontend. Built for a single user, it runs on an Oracle Cloud Infrastructure Ubuntu VPS, receives mail via Postfix SMTP piping, and stores everything in SQLite.
The stack:
- .NET 10 β Minimal APIs + EF Core + Clean Architecture
- SQLite β file-based storage for properties, presets, raw emails
- MimeKit + HtmlAgilityPack β email parsing
- Google Maps Geocoding API β Eircode β lat/lng
- Postfix β SMTP ingress on the VPS
- Docker + GitHub Actions β build, test, release
Documentation
| Document | Whatβs inside |
|---|---|
| π Architecture | Clean Architecture layers, project dependencies, data flow, and the three background workers that keep DaftAlerts running. |
| π Deployment | Step-by-step production setup on an Oracle Cloud Ubuntu VPS β Postfix SMTP piping, systemd, Nginx, Letβs Encrypt, and Docker Compose. |
| π Parser | How the Daft.ie email parser works, including Outlook SafeLinks unwrapping and how to add new variants. |
| π API reference | REST endpoint reference β authentication, filtering, pagination, bulk operations, and example requests. |
| π§ Decisions | Architecture Decision Records with the trade-offs behind each major choice. |
Quickstart
Run with Docker
docker run -d \
--name daftalerts-api \
-p 5080:5080 \
-v daftalerts-data:/var/lib/daftalerts \
-e DaftAlerts__Auth__ApiToken=dev-local-token \
-e DaftAlerts__Geocoding__GoogleApiKey=YOUR_KEY_HERE \
ghcr.io/guibranco/daftalerts-api:latest
The API listens on http://localhost:5080. In development, Scalar API
docs are served at /scalar/v1.
Run from source
git clone https://github.com/guibranco/daftalerts-api.git
cd daftalerts-api
dotnet restore DaftAlerts.sln
dotnet build DaftAlerts.sln --configuration Release
# Create schema
dotnet ef database update \
--project src/DaftAlerts.Infrastructure \
--startup-project src/DaftAlerts.Api
# Run
dotnet run --project src/DaftAlerts.Api
Full production setup (Postfix + systemd + Nginx + Letβs Encrypt) is covered in the Deployment guide.
Data flow at a glance
flowchart LR
A[π§ Daft.ie email] --> B[Postfix]
B -->|pipe to stdin| C[DaftAlerts.EmailIngest]
C --> D[(SQLite)]
D -.->|async| E[GeocodingWorker]
E -->|Google Maps API| F[lat/lng resolved]
F --> D
D --> G[DaftAlerts.Api]
G -->|REST + Bearer auth| H[π₯οΈ daftalerts-ui]
Details are in the Architecture guide.
Related repositories
| Repo | Description |
|---|---|
| guibranco/daftalerts-api | This repository β backend API and email ingestion |
| guibranco/daftalerts-ui | React + Vite + TypeScript frontend |
License
Distributed under the MIT License.