Overview
I worked on KeptCarbon at turnPRO, a GeoAI web platform that estimates the carbon-credit potential of rubber plantations. It is built in collaboration with Thai universities to support Thailand's Net Zero 2050 policy, with Rayong as the pilot province. The goal is to give landowners and project teams a credible, map-first way to understand how much carbon their plantations can capture, instead of relying on spreadsheets and manual field estimates.
Users work directly on a map: they locate or draw plantation plots, see them over satellite and geospatial layers, and get carbon estimates and tree-count data for each plot. A dashboard summarises projects and plots with charts, so a project owner can move from a single plot to the overall picture without switching tools. The interface is fully in Thai, designed for people who are not GIS specialists.
The frontend is Next.js with the App Router, running server-side rendering and acting as the backend-for-frontend: it is the only layer that talks to PostgreSQL with PostGIS, which stores users, projects and plot geometries. Maps are rendered with MapLibre GL, and charts are custom SVG components rather than a chart library, to keep them light and match the design system. A separate stateless FastAPI service in Python 3.11 runs the geospatial work, reading GeoPackage, GeoTIFF and CSV data with GeoPandas, rasterio and pyproj. Everything runs on Docker Compose behind an nginx reverse proxy in production.
The main challenge was making the platform trustworthy as it moved toward real users. I ran a security and PDPA review of the live system, then worked on hardening the infrastructure: separating Docker environments, tightening the nginx configuration and keeping security headers such as HSTS and X-Frame-Options intact through merges. I also prepared a breaking database migration to UUID relations and JSONB, with a precheck, a backup step and a maintenance-window plan, so the schema could evolve without putting production data at risk.