Terramedic Corps connects humans and AI to the environmental organizations that need them. We offer people four pathways to action — volunteer, donate, adopt everyday actions, or make it a career — and we're building infrastructure for AI agents to contribute too.
See docs/STRATEGY.md for our full strategic direction.
Leila Hadj-Chikh came up with the word "TerraMedics" as the name for her team at Conservation X Labs' Make for the Planet competition at the inaugural Earth Optimism Summit in 2017 in Washington, DC.
The term "terramedic" is now intentionally placed in the public domain by the originator of this term. It is free for anyone to use, share, adapt, and apply in any context — without restriction or attribution.
This dedication is made under Creative Commons Zero (CC0 1.0 Universal), which waives all rights to the term and affirms that it is not, and should not be, treated as a trademark or proprietary label.
We encourage everyone to use "terramedics" to describe individuals and communities caring for the Earth.
Frontend:
- SvelteKit (Svelte 5) with TypeScript
- Tailwind CSS v4
- Flowbite Svelte component library
- Hosted on Netlify
Backend:
- Django with Django Ninja REST API
- PostgreSQL (PostGIS) in production, SpatiaLite locally
- Deployed to AWS Lambda via Zappa
Testing:
- Vitest (unit/component tests)
- Playwright (end-to-end tests)
- pytest (backend tests)
Code quality:
- ESLint, Prettier (frontend)
- Ruff, mypy (backend)
- Node.js 20+ and Yarn
- Python 3.14+ and Poetry
- Git
git clone https://github.com/TerramedicCorps/terramedic.git
cd terramedic/terramedic
yarn install
yarn devcd terramedic/backend
poetry install
poetry run python manage.py migrate
poetry run python manage.py runserverFrontend (run from terramedic/):
| Command | Description |
|---|---|
yarn dev |
Start development server |
yarn build |
Build for production |
yarn preview |
Preview production build |
yarn test:unit |
Run unit tests (Vitest) |
yarn test:e2e |
Run end-to-end tests (Playwright) |
yarn test |
Run all tests |
yarn lint |
Check linting |
yarn format |
Format code |
Backend (run from backend/):
| Command | Description |
|---|---|
poetry run python manage.py runserver |
Start dev server |
poetry run pytest |
Run tests |
poetry run ruff check . |
Lint Python code |
poetry run mypy terramedic |
Type-check Python code |
terramedic/
├── terramedic/ # SvelteKit frontend
│ ├── src/
│ │ ├── routes/ # Pages (about, volunteer, donate, etc.)
│ │ └── lib/
│ │ ├── components/ # Reusable Svelte components
│ │ ├── server/ # Server-only utilities
│ │ └── utils/ # Client utilities
│ ├── e2e/ # Playwright end-to-end tests
│ ├── tests/ # Vitest unit tests
├── backend/ # Django REST API
│ └── terramedic/
│ ├── core/ # Settings, URL routing, API config
│ └── organizations/ # Org models, API, admin
├── terraform/ # Infrastructure as code
├── docs/ # Strategy, architecture docs
└── .github/ # CI/CD workflows, PR templates
We welcome contributions! Whether you're fixing bugs, adding features, improving documentation, or helping with testing, your contributions are valued.
- Read our Contributing Guide
- Check out our Code of Conduct
- Browse open issues or create a new one
- Fork the repository and create a feature branch
- Submit a pull request
See CLAUDE.md for AI-assisted development guidelines.
If you discover a security vulnerability, please review our Security Policy for responsible disclosure guidelines. Send reports to [email protected].
Code is licensed under GPL-3.0. Non-code content is licensed under CC BY 4.0. See LICENSE.md for details.
- Ed Hawkins for creating the warming stripes visualization
- Climate science organizations for their data and research
- All the people working to build a sustainable future