Skip to content

Neuromancers — Mutual Aid Financial Platform for Non-Profit

Django
Wagtail CMS
Stripe
Whereby
GetPronto
PostgreSQL
Django Signals

Problem

A grassroots mental health organisation needed a secure financial platform to facilitate transactions between certified peers and support seekers, with session management, permissions, and automated notifications. The non-profit had no existing UI/UX patterns and a limited budget.

Outcome

Delivered a complete, maintainable platform at minimal cost. Implemented a fine-grained permission system using Django signals that automatically assigns and removes object-level permissions when sessions are published or unpublished. Notifications inform hosts of visibility changes, while support seekers see only available sessions. The system was built for easy handover to future maintainers.

Code Sample — Permission management via Django signals

python
@receiver(post_save, sender=PeerSession)
def set_peersession_permissions(sender, instance, created, **kwargs):
    if created:
        host = instance.host
        host_perms = ['view_peersession', 'change_peersession', ...]
        for perm in host_perms:
            assign_perm(perm, host, instance)

        support_seeker_group = UserGroup.objects.get(name="Support Seeker")
        peer_group = UserGroup.objects.get(name="Peer")
        neuromancer_group = UserGroup.objects.get(name="Neuromancer")

        seeker_perms = ['view_peersession']

        for group in [support_seeker_group, peer_group, neuromancer_group]:
            if instance.is_published:
                for perm in seeker_perms:
                    assign_perm(perm, group, instance)
                notify_session_published(instance)
            else:
                for perm in seeker_perms:
                    remove_perm(perm, group, instance)