A sustainability platform built around the UN Sustainable Development Goals — events, community, donations, maps, and an AI assistant that can actually answer SDG questions.
Events — Browse and join cleanups, tree-planting sessions and other local sustainability events. Organisations can submit their own. Locations render on an interactive Leaflet map.
Community forum — Post, reply and organise around green initiatives.
Donations — Stripe-backed giving that funds the events and projects on the platform.
AI assistant — Ask about the SDGs, the platform's mission, or what's coming up. Backed by OpenAI and Google's Generative AI on the server side, not a canned FAQ.
Educational game — An interactive game teaching sustainability concepts.
Accounts — JWT-based sign-up and login, with a personalised view of events and forum activity.
Themes — Dark and light mode via next-themes.
Installable — Configured as a PWA through next-pwa.
Frontend — Next.js 14 (App Router), TypeScript, Tailwind CSS, shadcn/ui on Radix primitives, Framer Motion, React Hook Form + Zod, Recharts for data views, React Leaflet for maps, next-pwa
Backend — Node.js, Express, MongoDB (Mongoose), JWT + bcrypt auth, Multer + Cloudinary for media, SendGrid for email, Puppeteer for scraped/generated content
AI — OpenAI and Google Generative AI (Gemini)
Payments — Stripe
Docs — Swagger at /api-docs
monature/
├── client/ # Next.js frontend
└── server/ # Express API
Prerequisites: Node.js 18+, MongoDB (local or Atlas), and keys for Stripe, OpenAI and Cloudinary.
git clone https://github.com/vincedotcode/monature.git
cd monatureServer
cd server
npm install
cp .env.example .env
npm run devMONGODB_URI=
JWT_SECRET=
OPENAI_API_KEY=
GOOGLE_API_KEY=
STRIPE_SECRET_KEY=
SENDGRID_API_KEY=
CLOUDINARY_CLOUD_NAME=
CLOUDINARY_API_KEY=
CLOUDINARY_API_SECRET=Client
cd ../client
npm install
npm run devOpen http://localhost:3000.
NEXT_PUBLIC_API_URL=Issues and pull requests are welcome — particularly around the events module and the game.
git checkout -b feature/my-feature
git commit -m "Add my feature"
git push origin feature/my-featureMIT — see LICENSE.
Vince Erkadoo — vincedotcode.com · vince@vincedotcode.com