A production-grade data syndication engine that transforms property and unit data into standardized feeds for external platforms such as Apartments.com and Liv.Rent.
Built with a focus on data integrity, availability accuracy, and reliable feed delivery.
This system ingests raw property and unit data, normalizes it into a canonical structure, applies validation and availability logic, and outputs structured XML feeds for third-party listing platforms.
It is designed to:
- Prevent invalid or incomplete listings
- Ensure accurate availability filtering
- Provide consistent, partner-ready feed formats
- Support secure, authenticated feed access
- Scale across multiple listing platforms
- Normalizes external data into a unified schema
- Handles fallback logic (e.g., property → unit fields)
- Decouples source data from feed generation
- Determines real-time availability based on:
- explicit availability flags
- availability dates
- Prevents future or invalid units from being published
- Ensures only publishable units are included
- Automatically blocks:
- missing property references
- missing rent values
- Tracks blocked vs published records
- Generates XML feeds for:
- Apartments.com (MITS format)
- Liv.Rent
- Includes:
- record counts
- blocked counts
- structured property + unit data
- Protected feed endpoints (Basic Auth)
- Prevents unauthorized access to partner feeds
GET /feeds/apartments/full.xml
GET /feeds/liv-rent.xml Authorization: Basic Auth required
Optional query:
?available=true
Returns only currently available units.
This project includes a full Jest + Supertest test suite covering core business logic and API behavior.
- Availability logic (
isAvailableNow) - Validation rules (
validateUnit) - Normalization fallback behavior
- Feed endpoints return valid XML
- Availability filtering works end-to-end
- Canonical data service is invoked correctly
- Unauthorized requests are rejected
- Authorized requests succeed
- 6 test suites
- 21+ test cases
- Covers:
- business logic
- API behavior
- auth enforcement
- data transformation
Run tests:
npm test
Node.js + Express
TypeScript
Jest + Supertest
XML generation utilities
Modular service architecture
🧠 Design Principles
Deterministic outputs
Tests do not depend on live external data
Separation of concerns
Data → normalization → validation → feed generation
Fail-safe validation
Invalid data is blocked, not published
Test-driven confidence
Core logic and endpoints are protected by tests
Production-ready structure
Designed for scalability and multi-platform expansion
📈 Real-World Impact
This system is designed to:
Reduce manual listing management work
Prevent missed rental opportunities
Improve data consistency across platforms
Enable scalable listing syndication
Increase reliability of external feed integrations
🔮 Future Enhancements
Additional platform integrations (Zillow, Rentals.ca, etc.)
Feed scheduling and caching
Admin dashboard for feed monitoring
XML schema validation
CI/CD pipeline with automated testing
🧑💻 Author
Built as part of a real-world property management and syndication platform.
📜 License
MIT