Naar de inhoud
DenBosch.orgJouw buurtplein

Onze werkwijze

Geen beloftes. Hieronder de echte regels van onze database — precies zoals ze nu draaien.

Alle regels, per onderdeel

Automatisch gegenereerd — precies wat er nu draait, niets overgeschreven met de hand.

72 tabellen · 136 regels

Let op: dit toont regels per rij (wie een rij mag zien), niet per kolom. Sommige gevoelige velden (zoals je wijk) zijn daarnaast ook op kolomniveau afgeschermd — dat is hier niet zichtbaar, maar wel echt actief.

posts

Toegangscontrole: aan
  • INSERT(bij wijzigen: ((author_id = ( SELECT auth.uid() AS uid)) AND (NOT ( SELECT private.is_suspended() AS is_suspended))))
  • SELECT((hidden_at IS NULL) AND (restricted_at IS NULL) AND (deleted_at IS NULL) AND ((( SELECT auth.uid() AS uid) IS NULL) OR (NOT private.is_blocked_pair(( SELECT auth.uid() AS uid), author_id))) AND ((( SELECT auth.uid() AS uid) = author_id) OR (NOT private.is_pending_deletion(author_id))))

messages

Toegangscontrole: aan
  • INSERT(bij wijzigen: ((sender_id = ( SELECT auth.uid() AS uid)) AND ( SELECT is_conversation_participant(messages.conversation_id) AS is_conversation_participant) AND (EXISTS ( SELECT 1 FROM profiles p WHERE ((p.id = messages.sender_id) AND (p.dm_enabled = true)))) AND (NOT (EXISTS ( SELECT 1 FROM conversation_participants cp WHERE ((cp.conversation_id = messages.conversation_id) AND (cp.user_id <> messages.sender_id) AND (private.is_blocked_pair(messages.sender_id, cp.user_id) OR (NOT (EXISTS ( SELECT 1 FROM profiles p2 WHERE ((p2.id = cp.user_id) AND (p2.dm_enabled = true)))))))))) AND (NOT ( SELECT private.is_suspended() AS is_suspended))))
  • SELECT((sender_id = ( SELECT auth.uid() AS uid)) OR ((deleted_at IS NULL) AND ( SELECT is_conversation_participant(messages.conversation_id) AS is_conversation_participant)) OR ( SELECT can_moderate() AS can_moderate))
  • UPDATE((sender_id = ( SELECT auth.uid() AS uid)) AND (deleted_at IS NULL)) (bij wijzigen: (sender_id = ( SELECT auth.uid() AS uid)))

Wat er wordt bijgehouden

Buurt

Berichten en peilingen — wie stemt op wat blijft privé.

Momentjes

Alleen deelnemers zien het gesprek.

Bijzonders

Advertenties zijn openbaar, zoals op een prikbord.

Inspiratie

Eenmaal gearchiveerd, blijft het staan.

Stamtafel & privéberichten

Alleen de twee deelnemers kunnen meelezen.

Groepen

Bevroren voor nieuw gebruik, regels staan er nog wel.

Account & profiel

Instellingen zijn van jou alleen; je naam en foto zijn openbaar.

Moderatie & meldingen

Moderators zien alleen het gemelde bericht.

Systeem

Techniek zonder persoonlijke gegevens.

Stadsstatus

Alleen officiële open data — automatisch opgehaald, geen gebruikersinhoud.

6 uitzonderingen

Precies 6 plekken in onze code zetten de regels hierboven bewust opzij. Geen zevende, verborgen plek.

serviceRole.ts

Bouwt de sleutel. Alleen gebruikt door de 5 hieronder.

Rekening verwijderen (cron)

Verwijdert dagelijks accounts waarvan de 30 dagen bedenktijd voorbij is.

Stadsstatus (cron, 5 routes)

Haalt periodiek officiële open data op (NDW, Officiële Bekendmakingen, Buienradar, Luchtmeetnet, NS) en schrijft die naar feed_items — alleen publieke overheidsdata, geen gebruikersgegevens.

Voorlezen (TTS)

Beheert de gedeelde audio-cache voor de 🔊-knop — niet van één gebruiker.

Inloggen (alleen bij ontwikkeling)

Testroute, bestaat alleen lokaal — nooit op de echte website.

Cron-beveiliging

Controleert een geheime sleutel vóór elke cron-taak hierboven — 6 routes in totaal.

Externe partijen die gegevens onder ogen krijgen (zoals Anthropic) staan in ons Privacybeleid. Bekijk het Privacybeleid

Per onderdeel

Vragen hierover, of iets dat je niet snapt? Mail ons op wij@denbosch.org — we lezen alles zelf.

Laatst bijgewerkt: 3 september 2026

Onze werkwijze — DenBosch.org — DenBosch.org