An open-source, cloud-ready SaaS platform that lets independent animal shelters and rescue organizations manage their day-to-day operations from a single hosted instance, while keeping each organization's data fully isolated from the others.
🌐 Landing page: https://shelterstack.org/
Many small shelters and rescues run on spreadsheets and ad-hoc tools. ShelterStack is a free, self-hostable, multi-tenant platform that handles animals, intake, adoptions, fostering, and medical scheduling — built on .NET Aspire to demonstrate a modern, observable, distributed-systems architecture.
See the project charter for the full objectives, scope, and constraints, and the roadmap for the milestone-by-milestone plan. New here? The glossary explains the domain and technical terms; PRIVACY.md is the forward-looking GDPR/RODO working reference.
- Multi-tenancy — tenant = shelter/rescue organization, with per-tenant data isolation enforced at the data layer (EF Core global query filters over a resolved
ITenantContext). - Authentication & authorization — token-based auth with tenant claims; role-based access within each organization (admin, staff, volunteer).
- Animal management — animal records, intake history, status tracking (available, fostered, adopted, medical hold).
- Adoption workflow — adoption applications, applicant records, approval flow.
- Fostering — foster placements and the people who provide them.
- Medical scheduling — vaccination and treatment schedules with due dates.
- Background processing — vaccination/medical-due reminders, adoption follow-up notifications, scheduled per-tenant reporting.
- Observability — OpenTelemetry instrumentation surfaced in the Aspire dashboard, with custom spans tagged by tenant.
- .NET 10, orchestrated with .NET Aspire (gateway, identity service, business services, background worker)
- PostgreSQL, Redis, and a message broker (RabbitMQ / Azure Service Bus) as backing resources
- Docker Compose as the primary deployment target; Azure Container Apps (
azd) documented as an optional cloud path - AGPL-3.0 licensed
- .NET 10 SDK
- Aspire CLI (
aspire) - Docker, running — the AppHost provisions PostgreSQL, Redis, and RabbitMQ as local containers
# Starts the backing resources (PostgreSQL, Redis, RabbitMQ) plus the
# animals-api and gateway services. More business services land in later
# milestones.
aspire runaspire run auto-detects the AppHost project in the repo and builds/runs it; no
need to pass --project. If you don't have the Aspire CLI installed, dotnet run --project src/ShelterStack.AppHost works as a fallback. Open the Aspire
dashboard link printed on startup to confirm the resources and services report
healthy.
TODO: architecture diagram + overview.
TODO: deployment instructions (Docker Compose primary, Azure Container Apps optional).
See CONTRIBUTING.md. This project uses an issue → branch → PR → merge flow.
Licensed under the GNU Affero General Public License v3.0. See NOTICE for attribution.
Operating this software as a network service obliges you to make your complete corresponding source — including modifications — available to users of that service (AGPL-3.0 §13).