惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

IT之家
IT之家
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
A
About on SuperTechFans
博客园 - 聂微东
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
B
Blog RSS Feed
U
Unit 42
Stack Overflow Blog
Stack Overflow Blog
Recent Announcements
Recent Announcements
雷峰网
雷峰网
罗磊的独立博客
Microsoft Security Blog
Microsoft Security Blog
Hugging Face - Blog
Hugging Face - Blog
L
LangChain Blog
人人都是产品经理
人人都是产品经理
The GitHub Blog
The GitHub Blog
F
Fortinet All Blogs
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
H
Help Net Security
P
Proofpoint News Feed
The Cloudflare Blog
D
Docker
大猫的无限游戏
大猫的无限游戏

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant
How my brain forced me to create "Nadeef". A non-profit c...
Salah Eddine · 2026-04-30 · via DEV Community

I'm Salah Eddine Medkour. I teach Python and ICT at Badji Mokhtar University in Annaba, Algeria, and I build things on the web when my brain won't let me sleep. Before Nadeef, I made AirQuiz, an offline quiz platform that saved me 95% of my grading time when the university's internet couldn't handle 289 students taking exams simultaneously. I graduated with a master's in Network Engineering, but most of what I actually build comes from being annoyed at problems that shouldn't exist.

The trash pile that started everything

There's a spot near my apartment. Trash bags piled against a crumbling concrete pillar under a highway overpass. It's been there for three weeks. Every morning I walk past it. Every morning I think someone should clean it. Every morning I realize I'm "someone" and I keep walking.

This is the problem with civic responsibility. Everyone sees it. Nobody owns it. The municipality won't come unless you call, and calling means navigating a phone tree that goes nowhere. Posting in a Facebook group gets 30 "inshallah someone fixes this" comments and zero action.

I wasn't planning to build an app about this. I was scrolling through my Notes app looking for a grocery list when I found an entry from 2 AM three months ago. Just a title: "Trash reporting app but make it not annoying." Below it, a messy diagram of pins on a map, some arrows, the word "gamification" circled twice.

I don't remember writing this. But drunk-brain or sleep-deprived-brain or whatever version of me wrote it was right. The idea wouldn't leave.

What Nadeef actually is

Nadeef means "clean" in Arabic. It's a PWA, a progressive web app, which means it works on your phone without downloading anything from an app store. No 50MB install. No permissions popups. Just a link.

The concept is stupid simple. You see trash. You open Nadeef. You take a photo with your live camera (no uploading old photos from your gallery because people will absolutely try to cheat). GPS tags your exact location. You pick a severity level: minor litter, accumulated waste, or environmental hazard. You add a title. Done. A red pin drops on the map.

Someone else nearby sees the pin. They tap it. They see your photo, the location, how much XP they'll earn for cleaning it. They accept the mission. They clean it. They take an after photo. You get a notification asking you to confirm the cleanup is real. You swipe through a before/after slider. If it looks good, you approve. They get XP. The pin turns green. Everyone moves on.

That's the whole loop. Report, clean, verify, reward.

Why I built it in 24 hours

I gave myself one day. Not because I'm fast but because if I spend more than a weekend on something, I'll overthink it into complexity and never ship.

I used what I knew would work: React for the UI, Supabase for the database and auth, Leaflet for maps, Netlify to host it. All free tiers. Zero dollars spent. I'm not trying to raise money or pitch investors. This is a tool, not a startup.

The tech stack matters less than the decisions I made while building:

Camera-only uploads. No gallery access. This prevents someone from uploading a photo they took six months ago and claiming they just cleaned a spot. The camera forces fresh photos with GPS metadata I can validate.

Before/after slider. This is the part I'm most proud of. It's just two images with a draggable divider, but the emotional impact of sliding from dirty to clean is absurd. People spend 20 seconds just dragging the slider back and forth. It makes the transformation undeniable.

Gamification without manipulation. You earn XP for reporting and cleaning. You rank up from Scout to Pioneer to Guardian. You unlock badges for cleaning at dawn, cleaning in teams, being the first to clean in a new neighborhood. But there are no daily login streaks that punish you for missing a day. No dark patterns. No engineered addiction. Just visible progress for actual work.

Bilingual by default. The app is Arabic and English, toggled with one tap. Most civic tech ignores Arabic or treats it as an afterthought. I built the UI in both languages from day one, with proper right-to-left layout for Arabic, because half of Algeria prefers Arabic interfaces and they shouldn't have to settle.

The philosophy underneath

Nadeef is not about altruism. It's about ownership.

When trash sits on your street for weeks, you feel powerless. The system failed. The municipality didn't come. Nobody cares. So you stop caring too. Learned helplessness.

Nadeef flips that. You see trash. You report it. Someone cleans it. You verify it. Suddenly you're not powerless. You identified a problem. Someone else solved it. The system worked because you both made it work.

This is civic infrastructure built by civilians. No budget. No bureaucracy. Just people who live somewhere deciding that somewhere should be cleaner.

The gamification exists because humans are competitive and we respond to visible progress. The leaderboard shows you the top cleaners this week. The badges show you milestones. The XP number goes up. These are extrinsic motivators, sure, but they get people through the door. Once you've cleaned three spots and seen the before/after photos, you don't need the XP anymore. You're hooked on the transformation itself.

What people actually do with it

I seeded the app with 10 spots I cleaned myself. Trash under the highway. Litter near the university. A pile of branches blocking a sidewalk. I took before photos, cleaned them, took after photos, verified my own submissions at half XP (the system penalizes self-cleaning to prevent gaming).

Then I shared the link in a university WhatsApp group.

The first person to clean a spot I didn't report was a master's student named Yacine. He found a spot I had marked three days earlier. Bags of construction debris someone dumped near a school. He went there with two friends, filled the bags into a cart, hauled them to a dumpster, uploaded five photos showing the process.

When I got the notification to verify his cleanup, I dragged the before/after slider and felt something I wasn't expecting. Pride. Not my pride. His. He took a problem I pointed at and he solved it. I just built the tool.

That's when I knew this might work.

The problems I didn't anticipate

Spam. Within 48 hours someone uploaded a photo of a cat and marked it as a level 3 environmental hazard. I added a flagging system.

Fake cleanups. Someone uploaded an after photo that was clearly just a different angle of the same trash pile. I tightened the EXIF validation and added community voting for suspicious submissions.

Territorial behavior. Two users started competing for the same spots. They'd both rush to claim a pin the second it appeared. I added a claim-locking system. Once someone hits "start cleaning," they get a 30-minute exclusive window.

These are good problems. They mean people care enough to try to break the system.

What's missing and what's next

Nadeef has no business model. I'm not monetizing this. I'm not putting ads in it. I'm not selling data to waste management companies.

I do want partnerships, but only under specific terms. If a company wants to sponsor a cleanup campaign or fund supplies, fine. Any profit from those collaborations goes to registered charities or gets reinvested into cleanup campaigns. No one gets rich off people picking up trash.

I'm also terrible at promotion. The app exists. It works. I posted it on social media once. That's the extent of my marketing. I'm open to volunteers who want to help spread it, moderate content, translate it to other languages, or build on top of it.

If an NGO in Tunisia or Morocco wants to adapt it for their city, the code will eventually be open source. Take it. Fork it. Make it better.

Right now I'm focused on making it work well in Annaba. Ten users cleaning three spots each per week is more valuable than 1,000 users who sign up, look around, and leave.

Why I'm writing this

I'm writing this because I want the app to show up when someone Googles "civic engagement Algeria" or "community cleanup tool" or "how to report trash in my city."

I'm also writing this because building in public is uncomfortable and I need to get better at it. I don't naturally share half-finished work. I don't naturally ask for help. But Nadeef won't scale if I'm the only one who knows it exists.

If you're in Annaba and you've walked past the same trash pile for three weeks, try Nadeef. If you're in another city and you want to adapt the idea, contact me. If you're a graphic designer or developer or community organizer and you want to help, I'll figure out how to coordinate volunteers.

The app is at nadeef.netlify.app. It's a website. Open it on your phone. No download. No signup required to browse the map. You only need an account if you want to report or clean.

The source code isn't public yet but it will be. React, Supabase, Leaflet, Tailwind. Standard modern web stack. Nothing fancy. It works.

The thing I keep thinking about

There's a concept in Islam called sadaqah jariyah. Continuous charity. The idea is that some good deeds keep generating reward even after you die. Planting a tree. Digging a well. Teaching someone to read.

I'm not religious, but the concept resonates. If Nadeef helps someone clean one spot, and that inspires someone else to clean another, and that creates a norm where neighborhoods take care of themselves, then the initial effort compounds.

I didn't set out to build something altruistic. I set out to scratch an itch. I was annoyed that trash sat in public spaces for weeks because the coordination problem was unsolved. So I solved the coordination problem.

If that happens to make the world slightly cleaner, I'll take it. But mostly I just wanted to stop walking past that trash pile every morning and feeling helpless.

Now I don't.


Salah Eddine Medkour is a web developer, network engineering graduate, and university instructor from Annaba, Algeria. He builds tools that solve problems he's personally annoyed by. You can find him on LinkedIn or contact him at medkoursalaheddine@gmail.com
My Website : salaheddinemedkour.me
Nadeef is live at NADEEF APP.