Pulap is an early-stage real estate management system built as a Go monorepo for microservices.
This project emerged from rethinking and reimplementing ideas drawn from past real estate software I've collaborated on. The aim is to capture solid practices and architectural insights gathered across different projects, where each applied a different subset of good ideas, and consolidate them into a coherent, reproducible foundation.
git clone https://github.com/pulap/pulap.git
cd pulapTo quickly start all available services locally:
make run-allThis command builds all components and starts the local stack (Admin, AuthN, AuthZ, Estate).
Logs for each service are stored in their respective folders under services/.
On the first run, the console will display the generated user and password to access the interface and explore the current implementation.
If running without Docker Compose, ensure a local MongoDB instance is available on the host.
To launch the current compose stack (including MongoDB and dependent services):
make run-composeFor a cleaner log output:
make run-compose-neatTo stop and remove the stack:
make stop-composeThe containerized setup automatically provisions its own MongoDB image and will also display the generated access credentials on first run.
Nomad support uses the job files under deployments/nomad/jobs/ and defaults to the local image names generated by Docker Compose (pulap-authn:latest, etc.).
- Build the images you want to deploy (for local work
docker compose -f deployments/docker/compose/docker-compose.yml buildis enough). - Start a Nomad agent (for local testing:
nomad agent -dev -bind=0.0.0.0). - Submit the jobs with
make nomad-run. If you pushed images to a registry, overrideNOMAD_AUTHN_IMAGE,NOMAD_AUTHZ_IMAGE,NOMAD_ESTATE_IMAGE, orNOMAD_ADMIN_IMAGE(e.g.make nomad-run NOMAD_AUTHN_IMAGE=registry.example.com/team/authn:1.0.0).
The services run on the host network, mirroring the Compose ports (admin on 8081, authn on 8082, etc.), so ensure those ports are available on the target nodes.
To stop everything: make nomad-stop.
In CI/CD pipelines set NOMAD_ADDR and the relevant NOMAD_*_IMAGE variables before invoking make nomad-run so the job uses the artifacts published during the build stage.
