About Humans
Made by Peter with love for the Nobodies Community.
Humans is the membership system that keeps Nobodies Collective running — human onboarding, team provisioning, governance tracking, and all the plumbing that lets a Spanish nonprofit operate with the organisational memory of something ten times its size. Built with care, maintained with stubbornness, and deployed with crossed fingers.
Need help? humans@nobodies.team
With additional help from Jokin, Aaron, David, Laura, Frank, Cupcake, Imanol, and Daniel.
License
Humans is free software, released under the GNU Affero General Public License v3.0 (AGPL-3.0).
You may use, study, modify, and redistribute this software. If you run a modified version and let others interact with it over a network, you must make your modified source available under the same license.
Full license text: gnu.org/licenses/agpl-3.0 · Source code: github.com/peterdrier/Humans
The Ingredients
Every workshop needs its materials. Here is what Humans is built from:
.NET 10
ASP.NET Core MVC with Razor views, Identity, and the whole Microsoft stack. The frame that holds everything together.
PostgreSQL + EF Core
Relational data with Entity Framework Core and Npgsql. NodaTime types all the way down — no DateTime in sight.
Google Workspace APIs
Admin Directory, Drive, and Groups — provisioning Shared Drives, folders, and mailing lists so nobody has to do it by hand.
Hangfire
Background jobs for sync, reconciliation, and anything that shouldn't block an HTTP request. PostgreSQL-backed, dashboard included.
OpenTelemetry + Serilog
Structured logging, distributed traces, and Prometheus metrics. Because "it works on my machine" isn't a monitoring strategy.
MailKit
Transactional email for notifications and onboarding. The one library that makes SMTP feel almost pleasant.
How it's built
Humans is AI-accelerated and engineer-directed: 25+ years of software engineering discipline, encoded as rules the machine enforces on every build. The AI writes a lot of the code; the architecture decides what code is allowed to exist.
Sections, not spaghetti
The app is split into vertical sections — People, Teams, Shifts, Tickets, Store, Governance, and more — each owning its own tables and talking to the others only through narrow read interfaces. 30 sections live as separate projects with the compiler enforcing the boundary.
Rules the build enforces
A hand-written constitution (layering, table ownership, cross-section access) is enforced by 31 custom Roslyn analyzer rules — violations fail the build in the editor, not in code review.
Tested like it matters
Unit, integration, and full-page render tests, plus Stryker mutation testing to test the tests themselves. Every change ships through a pull request with automated review, a preview deployment, and its own cloned database.
Accountable by design
Every automated action lands in an append-only audit trail the Board can read. GDPR export and right-to-deletion are first-class features, not afterthoughts.
| Contributor | Commits | Lines added | Lines deleted |
|---|---|---|---|
| Peter Drier | 1,987 | 1,500,597 | 444,769 |
| Frank Fanteev | 30 | 70,186 | 2,174 |
| Jokin | 5 | 32,597 | 711 |
| David Nowinsky | 13 | 14,901 | 1,136 |
| Aaron Ross | 5 | 7,977 | 225 |
| laugongim | 10 | 1,785 | 473 |
| Daniel Tenner | 4 | 1,154 | 41 |
| Jokin C | 5 | 506 | 208 |
| Cupcake | 2 | 165 | 16 |
| Imanol | 1 | 29 | 6 |
| Josh Peaker | 1 | 2 | 1 |
Open Source Licenses
Humans is built on the shoulders of open-source projects. The table below lists every production dependency, its version, and license.
NuGet Packages
Conversational helper responses are produced by Anthropic's API. No data is used for model training per Anthropic's DPA.
| Category | Package | Version | License |
|---|---|---|---|
| AI/LLM | Anthropic | 12.40.0 | MIT |
| Framework | Microsoft.AspNetCore.Identity.EntityFrameworkCore | 10.0.9 | MIT |
| Framework | Microsoft.AspNetCore.Authentication.Google | 10.0.10 | MIT |
| Framework | Microsoft.AspNetCore.DataProtection.EntityFrameworkCore | 10.0.10 | MIT |
| Framework | Microsoft.AspNetCore.DataProtection.Extensions | 10.0.10 | MIT |
| Framework | Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation | 10.0.9 | MIT |
| Framework | Microsoft.EntityFrameworkCore | 10.0.10 | MIT |
| Framework | Microsoft.Extensions.Localization | 10.0.10 | MIT |
| Database | Npgsql.EntityFrameworkCore.PostgreSQL | 10.0.3 | PostgreSQL |
| Database | Npgsql.EntityFrameworkCore.PostgreSQL.NodaTime | 10.0.3 | PostgreSQL |
| Date/Time | NodaTime | 3.3.2 | Apache-2.0 |
| Date/Time | NodaTime.Serialization.SystemTextJson | 1.4.0 | Apache-2.0 |
| Calendar | Ical.Net | 5.2.3 | MIT |
| Spreadsheet | ClosedXML | 0.105.1 | MIT |
| CSV | CsvHelper | 33.1.0 | MS-PL / Apache-2.0 |
| State Machine | Stateless | 5.20.1 | Apache-2.0 |
| Background Jobs | Hangfire.Core | 1.8.24 | LGPL-3.0 |
| Background Jobs | Hangfire.AspNetCore | 1.8.24 | LGPL-3.0 |
| Background Jobs | Hangfire.PostgreSql | 1.21.1 | LGPL-3.0 |
| MailKit | 4.17.0 | MIT | |
| GitHub API | Octokit | 14.0.0 | MIT |
| Google APIs | Google.Apis.Admin.Directory.directory_v1 | 1.75.0.4227 | Apache-2.0 |
| Google APIs | Google.Apis.CloudIdentity.v1 | 1.75.0.4185 | Apache-2.0 |
| Google APIs | Google.Apis.Drive.v3 | 1.75.0.4218 | Apache-2.0 |
| Google APIs | Google.Apis.DriveActivity.v2 | 1.74.0.3880 | Apache-2.0 |
| Google APIs | Google.Apis.Groupssettings.v1 | 1.74.0.2721 | Apache-2.0 |
| Google APIs | Google.Apis.Auth | 1.75.0 | Apache-2.0 |
| Resilience | Polly | 8.7.0 | BSD-3-Clause |
| Observability | OpenTelemetry.Exporter.OpenTelemetryProtocol | 1.17.0 | Apache-2.0 |
| Observability | OpenTelemetry.Exporter.Prometheus.AspNetCore | 1.15.0-beta.1 | Apache-2.0 |
| Observability | OpenTelemetry.Extensions.Hosting | 1.17.0 | Apache-2.0 |
| Observability | OpenTelemetry.Instrumentation.AspNetCore | 1.16.0 | Apache-2.0 |
| Observability | OpenTelemetry.Instrumentation.EntityFrameworkCore | 1.15.0-beta.1 | Apache-2.0 |
| Observability | OpenTelemetry.Instrumentation.Http | 1.15.1 | Apache-2.0 |
| Observability | OpenTelemetry.Instrumentation.Runtime | 1.15.1 | Apache-2.0 |
| Logging | Serilog | 4.3.1 | Apache-2.0 |
| Logging | Serilog.AspNetCore | 10.0.0 | Apache-2.0 |
| Logging | Serilog.Sinks.Debug | 3.0.0 | Apache-2.0 |
| Logging | Serilog.Sinks.OpenTelemetry | 4.2.0 | Apache-2.0 |
| Image Processing | Magick.NET-Q8-AnyCPU | 14.16.0 | Apache-2.0 |
| Markdown | Markdig | 1.3.2 | BSD-2-Clause |
| Sanitization | HtmlSanitizer | 9.1.973 | MIT |
| User-Agent | MyCSharp.HttpUserAgentParser | 3.1.6 | MIT |
| Payments | Stripe.net | 51.2.0 | Apache-2.0 |
| Health Checks | AspNetCore.HealthChecks.NpgSql | 9.0.0 | Apache-2.0 |
| Health Checks | AspNetCore.HealthChecks.Hangfire | 9.0.0 | Apache-2.0 |
| Health Checks | AspNetCore.HealthChecks.Uris | 9.0.0 | Apache-2.0 |
Frontend / CDN Dependencies
| Library | Version | License |
|---|---|---|
| Bootstrap | 5.3.3 | MIT |
| Font Awesome | 6.5.1 | Fonts: SIL OFL 1.1 · Code: MIT |
| MapLibre GL JS | 4.7.1 | BSD-3-Clause |
| maplibre-gl-draw | 1.4.0 | ISC |
| Turf.js | 7.1.0 | MIT |
| @microsoft/signalr | 8.0.7 | MIT |
| Cormorant Garamond | — | SIL OFL 1.1 |
| Source Sans 3 | — | SIL OFL 1.1 |
| Chart.js | 4.x | MIT |
| @zxing/browser | 0.1.5 | MIT |
License Compliance Summary
All production dependencies use permissive or weak-copyleft licenses. No violations found.
- MIT — requires copyright notice; this page satisfies that obligation.
- BSD-3-Clause (MapLibre GL JS) — requires copyright notice; this page satisfies that obligation.
- ISC (maplibre-gl-draw) — permissive, functionally equivalent to BSD-2-Clause; copyright notice required.
- Apache-2.0 — requires copyright notice, license copy, and statement of changes if modified. All packages are used unmodified.
- BSD-2-Clause / BSD-3-Clause — requires copyright notice in documentation.
- PostgreSQL License — permissive, MIT-like; copyright notice required.
- LGPL-3.0 (Hangfire) — the library must be replaceable by the end user. Consumed as unmodified NuGet packages (dynamically linked), satisfying LGPL obligations. Source available at github.com/HangfireIO/Hangfire.
- SIL OFL 1.1 (fonts) — free to use and redistribute; fonts cannot be sold standalone.
Special thanks go to Lucy, nearly all of Humans was dreamed up, thought about, and designed while taking you on long walks and to the spot for swimming. You kept me sane during a quite challenging period.
<3 -Peter