This app aggrigates reforestation data for the sake of transparency, to share who is planting what trees and where. This makes tree planting competative and greatly reduces fraud / greenwashing etc. It is the spirit of open source environmental movement (OSEM🤘🌲). The app takes in CSV's of reforestation data and maps them to a database. The data contains tree crops, and land, planting numbers, dates and stakeholders. It uses GPS 'pins' and polygons. It also cleans up poorly formatted or loosely defined data types by recognizing the types and reformatting them where possible, disposing of the rest. If you're interested to help please let me know if you have any questions info@osemsauce.com
There is a very active Github Issues board. Please lmk if you have any questions.
Transplant is an open-source platform for aggregating and verifying reforestation data. By collecting and sharing detailed information about who is planting which trees, where, and when, Transplant increases transparency, fosters healthy competition, and helps eliminate fraud and greenwashing in the reforestation sector. The project is part of the Open Source Environmental Movement (OSEM).
- Frontend: Svelte 5 & SvelteKit (TypeScript-first)
- Styling: Pico CSS (with custom overrides)
- Backend/Database: Supabase (PostgreSQL)
- ORM: Prisma
- Build Tool: Vite
- Deployment: Vercel (adapter-vercel) d- Utilities: PapaParse, @zerodevx/svelte-toast
- Linting/Formatting: ESLint, Prettier, svelte-check
- Upload, clean, and map CSV reforestation data to a central database
- Handles tree crop, land, planting numbers, dates, and stakeholder data
- Supports GPS pins and polygons for accurate geospatial mapping
- Automatic data cleaning and type recognition
- Visual mapping of planting sites
- Designed for extensibility and open collaboration
- TypeScript throughout for type safety
- Modern, accessible UI with Pico CSS and custom styling
- Robust developer tooling and linting
- Clone the repository:
git clone https://github.com/OSEMSAUCE/transplant.git cd transplant - Install dependencies:
npm install # or yarn install
-
Start the development server:
npm run dev # or yarn dev -
Open your browser: Visit http://localhost:5173 (or the port shown in your terminal).
-
Database Sync: To sync the ORM with your database:
npm run db:sync:prod
-
Production Build:
npm run build npm run preview
-
Lint & Format:
npm run lint npm run format npm run check
-
Common Gotchas:
- When running
npm run db:pull, you may need to:- Add
: anytoexport const land - Search for
""and replace with"(remove extra quotes)
- Add
- When running
transplant/
├── src/ # SvelteKit source files (routes, lib/components, etc.)
├── prisma/ # Prisma schema and migrations
├── static/ # Static assets
├── data/ # Data files
├── docs/ # Documentation
├── .env.dev # Dev environment variables
├── .env.production # Production environment variables
├── svelte.config.js # SvelteKit config
├── vite.config.ts # Vite config
├── tsconfig.json # TypeScript config
└── ...
You will need to configure environment variables for local development and deployment. See .env.dev and .env.production for examples.
Common variables:
SUPABASE_URL— Your Supabase project URLSUPABASE_ANON_KEY— Supabase public anon keyDATABASE_URL— Postgres connection string (used by Prisma)- Any other secrets required by your deployment or integrations
This project is designed for Vercel deployment using @sveltejs/adapter-vercel.
- Push to your main branch and Vercel will auto-deploy.
- Ensure all required environment variables are set in your Vercel dashboard.
- For local production builds, use:
npm run build npm run preview
We welcome contributions of all kinds! To get started:
- Check the GitHub Issues board for open tasks and feature requests.
- Fork the repository and create a new branch for your feature or bugfix.
- Submit a pull request with a clear description of your changes.
- For questions, ideas, or support, email us at info@osemsauce.com.
Thank you to everyone who has contributed to Transplant! If you’d like to join the project, please reach out or open a pull request.
- Chris Harris — Project Lead
- [Your Name Here]
This project is licensed under the GNU General Public License v3.0. See LICENSE for details.