🇩🇿 الجزائر خضراء — a community platform for tree planting in Algeria. Trilingual (AR/FR/EN) PWA built with Next.js 16, PostgreSQL and Prisma.
# 🇩🇿 الجزائر خضراء · Algeria Green
**نغرس اليوم، نبني غدًا. — Plant Today. Build Tomorrow.**
A community digital platform for contributing to tree-planting initiatives across Algeria
and tracking their verified impact.
---
> **Independent initiative.** Algeria Green is not a government body, does not represent any
> ministry or official institution, and is not a certified environmental register. It handles
> no monetary donations.
## Overview
Citizens can join organised planting campaigns *or* record a tree they planted on their own,
with no campaign involved. Every submission is reviewed before it counts, so the public
figures describe verified reality rather than intent.
```
Discover → Join or Plant → Submit → Verification → Impact
```
### No demo data
The database ships empty apart from reference tables (Algeria's 58 wilayas and a list of
tree species). There are no seeded users, campaigns, trees, participants or notifications,
and no hardcoded statistics anywhere in the UI. An empty database renders `0` and a polished
empty state — never an invented number or a fabricated chart.
## Features
**For citizens**
- Register, sign in, manage a profile and its public visibility
- Browse campaigns with server-side search, wilaya/status/date filters, sorting and pagination
- Join a campaign (a unique constraint makes double-joining impossible) and check in by QR code
- Record a tree individually or against a campaign, with optional photo and approximate location
- Personal dashboard: my trees, my campaigns, attendance, notifications
- Public page and QR code for every verified tree, at `/tree/DZG-TREE-XXXXXXXX`
**For administrators**
- Real-time overview: users, campaigns, trees, pending reviews, verified/rejected, wilaya coverage
- Create, edit, publish, cancel, complete and archive campaigns; per-campaign attendance QR
- Review queue: approve, reject or request a correction, with a recorded reason
- User management with suspension, reactivation and …