A community-driven digital heritage initiative for discovering, and documenting Egypt's hidden historical and cultural gems. not finished yet
# Kenzory
A community heritage map of Egypt. Anyone can register, add a heritage place with a
description and photos, and see it live on the map once an admin approves it.
Built as a real, data-driven Flask application (SQLAlchemy-backed) — not a static
prototype.
## Current state
What's in the project today:
- **Discovery** — search, category chips, governorate / period filters, sorting, and
pagination on `/explore`, plus a Leaflet map on `/map` with category filtering.
- **Stories** — long-form heritage articles written by contributors.
- **Contribution flow** — signed-in users submit new places (title, summary, category,
location, photos). Submissions wait for moderation.
- **Moderation** — an admin dashboard to approve or reject submissions with a review
note. Approved submissions become live places with a unique slug.
- **Auth & accounts** — register/login (username or email), password hashing, protected
routes, open-redirect and CSRF protection. Profiles, saved places, and own
submissions with status badges.
- **Ratings & reviews** — signed-in visitors rate places (1–5 stars) and leave short
reviews on each place page. One review per person (edit or remove it anytime);
averages and counts stay in sync automatically and feed the cards, sorting,
and "highest rated" ordering everywhere.
- **Richer contributions** — creators and admins edit existing records directly
(text, category, location, photos). Photo uploads carry captions, which show in
the public gallery and admin review screens. Pending submissions are open for
community endorsements on `/community-review` — one vote per person, toggleable —
and reviewers see the endorsement counts.
- **Better maps** — the map clusters nearby markers into numbered bubbles at low
zooms (expanding as you zoom in), a locate control shows your position with a
"distance from you" line in every popup plus a nearest-records panel, and an
offline banner appears if map tiles can't load while pins keep working.
- **Community …