Skip to content

TrashMob-eco/TrashMob

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

TrashMob.eco

Meet up. Clean up. Feel good.

Build Status

What is TrashMob?

TrashMob.eco is a platform dedicated to organizing groups of people to clean up the world we live in. Users create cleanup events, publicize them, and recruit people to join up, as well as ask for assistance from communities and partners to help haul away the garbage once it is gathered.

The idea is to turn what can be an intimidating process for event organizers into a few clicks and simple forms. And once the process is simple, events will spring up all over the world, and the cleanup of the world can begin.

Live Sites

Environment URL
Production www.trashmob.eco
Development dev.trashmob.eco
Dev Swagger dev.trashmob.eco/swagger

Mobile Apps

Platform Link
Android Google Play Store
iOS Apple App Store

Quick Start

For detailed development setup instructions, see CLAUDE.md.

Prerequisites

Build & Run

# Backend API
cd TrashMob
dotnet run --environment Development

# Frontend (separate terminal)
cd TrashMob/client-app
npm install
npm start

Local API: https://localhost:44332 Swagger: https://localhost:44332/swagger/index.html


Documentation

For Developers

Document Description
CLAUDE.md Development guide, architecture, coding standards
CONTRIBUTING.md How to contribute
CODE_OF_CONDUCT.md Community guidelines

Product & Planning

Document Description
2026 Planning Hub Roadmap, projects, and milestones
TrashMob.prd Web API product requirements
TrashMobMobile.prd Mobile app product requirements

Technical Reference

Document Description
Domain Model Core data concepts, business rules, entity relationships
Test Scenarios Manual testing checklist
Deploy Guide Infrastructure deployment
Container Deployment Docker/ACA deployment

Project-Specific

Project README
TrashMob (Web API) TrashMob/README.md
TrashMob.Shared TrashMob.Shared/README.md
TrashMob.Models TrashMob.Models/README.md
TrashMobMobile TrashMobMobile/readme.md
Mobile Analysis TrashMobMobile/docs/PROJECT_ANALYSIS.md

Project Structure

TrashMob/
├── TrashMob/              # ASP.NET Core Web API + React SPA
│   └── client-app/        # React frontend (Vite + TypeScript)
├── TrashMob.Shared/       # Business logic, managers, EF Core
├── TrashMob.Models/       # Domain entities
├── TrashMob.Shared.Tests/ # Unit tests
├── TrashMobMobile/        # .NET MAUI mobile app
├── TrashMobDailyJobs/     # Background jobs (daily)
├── TrashMobHourlyJobs/    # Background jobs (hourly)
└── Deploy/                # Bicep templates, deployment scripts

Contributing

We're actively looking for contributors! All skill levels welcome:

  • Frontend: React, TypeScript, Tailwind CSS
  • Backend: ASP.NET Core, Entity Framework Core
  • Mobile: .NET MAUI
  • DevOps: GitHub Actions, Azure, Bicep

Getting Started

  1. Check Good First Issues
  2. Read CONTRIBUTING.md
  3. Set up your dev environment using CLAUDE.md
  4. Contact [email protected] to be added as a contributor

Feature Ideas

Before starting work on a new feature, please check:


Development Environment Setup

Using Shared Dev Environment

If you're not making database changes, you can use the shared dev environment:

  1. Email [email protected] to request contributor access
  2. TrashMob will add you to the Sandbox subscription and Dev KeyVault
  3. Add your IP to the Dev Azure SQL firewall
  4. Run setup script:
az login
.\setupdev.ps1 -environment dev -region westus2 -subscription 39a254b7-c01a-45ab-bebd-4038ea4adea9

Creating Your Own Environment

For major database changes, create your own environment:

  1. Follow Deploy/README.md
  2. Run setup with your parameters:
.\setupdev.ps1 -environment <yourenv> -region <yourregion> -subscription <yourguid>

Troubleshooting

Data doesn't load: Your IP may have changed. Check the VS Code debug output for your actual IP and update the Azure SQL firewall rule.

Email not sending: Set a dummy key to disable email:

dotnet user-secrets set "sendGridApiKey" "x"

Mobile App Development

See TrashMobMobile/readme.md for detailed mobile setup.

Quick Setup (Windows)

  1. Install Visual Studio with .NET MAUI workload
  2. Install Android Studio and create an emulator
  3. Open TrashMobMobileApp.sln
  4. Get Google Maps API key from Dev KeyVault or create your own
  5. Update Platforms/Android/AndroidManifest.xml with your key

⚠️ Never commit API keys to the repository!

Test Builds


Deployment

Automatic Deployments

Branch Environment Trigger
main Development Push
release Production Manual workflow

Manual Deployment

See Deploy/CONTAINER_DEPLOYMENT_GUIDE.md for container deployment instructions.


Background & History

Years ago, Scott Hanselman (and others at Microsoft) built NerdDinner.com as a demo of ASP.NET MVC. Those nerd dinners were fantastic and had a huge role in many careers, including leading the founder to join Microsoft.

This site is based on both that code and the idea that getting people together to do small good things results in larger good things in the long term.

The inspiration came from Edgar McGregor, who spent over 1100 days cleaning up a park in his community, two pails of litter at a time. His actions inspired others to do the same, and TrashMob.eco was born—a platform to help people organize "mobs" to tackle cleanup together.


Status

TrashMob.eco is a 501(c)(3) non-profit in the United States, launched in production on May 15, 2022. We're actively developing new features to help communities clean up the world!


Contact