/woningfinder

Source code of WoningFinder

Primary LanguageGo

WoningFinder

WoningFinder was a project that I had during the COVID lockdown, while trying to find a house in the Netherlands. It automates the process of finding a rent house by searching and reacting automatically to houses matching your preferences (think of number of bedrooms, city and neighborhood). More information about the project can be found on woningfinder.nl (in Dutch).

Having found my house thanks to this tool, I have decided to make WoningFinder backend open-source. If you want it to support more websites feel free to submit a PR that adds a connector for a housing website. Please don't hesitate to submit a PR to this repository if you have any other suggestions or improvements. Keep in mind that this project was in its early stage, so the code was not yet optimized nor pretty. I am not actively maintening this project, but I am happy to help if you have any questions.

More information can be found in the docs.

Stack

Services

  • Sentry
  • Mapbox

Architecture

WoningFinder is split in multiple components:

  • woningfinder-api, is serving the different handlers, it serves as API for woningfinder.nl frontend so the user can register, login to a housing corporation and manage their housing preferences.
  • housing-matcher, is triggered by HousingFinder via a queue (redis list). It will match the new offers to the customer search option and react to it.
  • orchestrator, orchestrates the different jobs that needs to be often ran by WoningFinder.
    • CleanupUnconfirmedCustomer sends a reminder to unconfirmed email user and deletes the customers that did not confirm their email within 72 hours. Runs everyday at 08:00, 16:00.
    • HousingFinder is used to query all the offers of the housing corporation. It connects them all and query them at the right time and sends its data to a redis queue (triggering HousingMatcher).
    • WeeklyUpdate generates and send the customer weekly updates. Runs every Friday at 18:00.
    • CorporationCredentialsMissingReminder sends missing corporation credentials reminder to matching customers. Runs everyday at 08:00, 16:00.
  • housing-finder replicates the HousingFinder job for a given corporation.
  • db-migrator initializes the database with default values (housing corporations, cities, housing types, selection methods...) and run the databases migrations. It is run as a job before every deploy.
  • city-location-updater updates the city location in the database. It is run as a job before every deploy.
  • impersonate gets a JWT token for an user in order to impersonate it.
  • customer-delete deletes customers given their email.

Issue names

  • feature and bug: Implement [Issue Name] (closes #issue)