TimeForCode is a community platform that connects companies and individuals willing to donate developer time to open-source projects. Organizations pledge hours, open-source projects list their needs, and the platform handles matchmaking, tracking, and impact reporting.
Full documentation lives in docs/.
TimeForCode makes it easy for companies to give back to open source in a structured, transparent way. Rather than ad-hoc contributions, organizations register their available developer hours, choose open-source projects to support, and contributors log time against those donations. Projects get the help they need; companies get a transparent record of their open-source investment.
This repository contains:
- Authorization API — OAuth 2.0 login via GitHub, JWT issuance and refresh.
- Donation API — Project registration, donation management, and contribution tracking.
- Website — Blazor frontend for donors, contributors, and project maintainers.
- Infrastructure — Azure Bicep deployment templates and Docker Compose local setup.
- Documentation — Architecture (Arc42), product requirements, and implementation guides.
The platform is under active development. The following areas are production-ready or near-complete:
- GitHub OAuth 2.0 authentication with internal JWT issuance and refresh.
- User account creation and linking to external identity providers.
The following areas are in progress:
- Project registration and the donation lifecycle.
- Contributor hour allocation and time tracking.
- Matchmaking between donated hours and project needs.
- Reporting and impact dashboards.
See docs/current/capability-status.md for the full implementation status.
| Concern | Technology |
|---|---|
| Frontend | Blazor (.NET) |
| Backend | ASP.NET Core (.NET) |
| Database | MongoDB |
| Authentication | OAuth 2.0 (GitHub), JWT (RSA-signed) |
| Containerisation | Podman, Docker Compose |
| Infrastructure | Azure App Service, Azure Bicep (IaC) |
| CI/CD | GitHub Actions |
| Code quality | SonarCloud |
| API documentation | Swagger / OpenAPI |
- Podman 4.x or later (Docker Desktop is not used in this project)
- .NET 10 SDK (for running tests and local development outside containers)
Windows: After installing Podman, open a new terminal and initialise the Podman machine once:
podman machine init podman machine start
podman compose up --build| Service | URL |
|---|---|
| Website | http://localhost:8083 |
| Authorization API | http://localhost:8080 |
| Donation API | http://localhost:8082 |
| Identity Provider Mock | http://localhost:8081 |
A smoke-test script checks every service and walks through the full authentication flow:
.\scripts\smoke-test.ps1All 17 checks should report [PASS]. The script exits with code 0 on success.
See docs/current/deployment-status.md for environment details and configuration.
Contributions are welcome. Please read CONTRIBUTING.md and the Code of Conduct before submitting a pull request.
Before submitting:
- Ensure all automated checks and tests pass.
- Document any new functionality or API changes in the relevant
docs/file. - Any architectural change must update the relevant Arc42 section.
Distributed under the MIT License. See LICENSE for more information.
Wouter Fennis — @wouterfennis