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.

By the numbers snapshot 2026-08-12
2,128
commits
1,195
PRs merged
686
issues closed
4,681
tests
31
analyzer rules
76%
commits with an AI co-author
ContributorCommitsLines addedLines 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
Email 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.

Lucy

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