Shared assets for various Better Angels projects live here. :)
Got something for us? Send a pull request! We love contributions.
The Better Angels are a group of anarchists committed to feminist, anti-racist, anti-capitalist struggle who use direct action software development as a technique of liberatory resistance.
Home Page: https://betterangels.github.io/
If User A adds User B to User A's response team, User B is not prompted or consulted in any way about whether they want to be on User A's team. This should be changed so that User B can optionally require team assignments to be approved by themselves.
Without this feature, it is possible for any user to send any other user alerts including custom messages, which will lead to abuse of the system on larger-scale installations.
Change instances of "guardian angels", "guardians", etc. to "team members". Call a given user's list of responders "My Team."
I ran into this bug using Safari v. 9.0, and was able to replicate it using Firefox v. 41.0.1.
I was logged into the account "rebecca". On the page titled "Choose your team members" I typed the name "fox" and hit enter. In the "Remove a team member" section, "fox (pending)" appeared. This was the behavior I expected.
When I added another team member ("frog") and hit enter, "frog (pending)" appeared in the
"Remove a team member" section below "fox". I expected this, but I also expected all other pending team members to continue to be described as "pending." However, "fox (pending)" also changed to simply "fox". "Frog" was now the only invited team member designated as "pending."
I tried this several more times and, in each case, only the most recently invited team member retained the "pending" description. None of the listed team members in the attached screenshot has accepted an invitation to join my team.
Definitely not MVP, but consider allowing users to set a pronoun preference in their profile, such that e-mail subjects like "rebecca wants you to join their crisis response team" could replace "their" with the user's preferred pronoun.
For example, by sending a shortlink in SMS messages. This may be necessary for responders who are not receiving alerts on a smartphone (i.e. using a combination of flip phone and public computer) or who can not respond to alerts using their own device (i.e. not enough data, security concerns).
There's some uncomfortable lag time between activating an alert and being redirected to the chat room that currently has no UI feedback. We should display a "sending an alert to your team" message with a progress spinner or something while we're waiting on the redirect info so users don't feel like "nothing happened" for the few seconds it takes to do this.
Package this instance of a Better Angels-type app under the name "Buoy".
If there is any place in the app where it makes sense to use a tagline or short description, use the tagline: "Tell your friends where you are and what you need."
Possibly also default to showing directions?
I wanted to see what would happen if I invited another user to join My Team, but then rescinded that invitation before the invited user had responded to it. These are the steps I took:
On two different browsers, I logged in as rebecca (Firefox) and fox (Safari) respectively. Rebecca invited fox to join her team. I received an invitation e-mail, and pasted the URL into fox's browser. This took me to the "Confirm Team Membership" page where a pending invitation from rebecca was visible.
I then switched back to rebecca's browser, where fox was listed as a pending team member. I unchecked fox and hit Save Changes, removing fox "(pending)" from my team.
Finally, I returned to fox's browser, where the invitation was still visible (because I had not reloaded the page), accepted the invitation, and hit Save Changes. The page reloaded to the default "you have not been invited to join any teams" screen.
This may be confusing to users who either a) happen to have not reloaded their Team Membership page and, therefore, are still seeing invitations that have been revoked or, more likely, b) who follow a link in an e-mail referring to an invitation that has since been revoked, and are taken to a Team Membership page displaying no invitations.
If a user attempts to respond to an invitation that is no longer active, consider notifying them that "This invitation is no longer active"?
I found that I was able to enter any data at all into the "Emergency SMS" field. For example, I typed "VERIZON 555.555.1234" and this was accepted. Although the field can accept any format of phone number, might be valuable to alert users when they've entered a string that will not result in them being able to receive SMS notifications.
Feature request: Implement a "real/fake" toggle for existing members of a user's Team. This allows the user more control over who receives alerts from them, and lets them update their alert preferences based on who they feel comfortable contacting without having to notify a given team member that their status has changed.
(Possibly worth discussing: Does it make sense to let the toggle only go one way -- i.e. from Real to Fake, but not from Fake to Real. Or is this babysitting the user too much?)
For instance, if a user supplies an XMPP/Jabber ID, Buoy should be able to send them a Jabber message (i.e., an Instant Message) with the contents of the emergency alert.
Same should be possible for a Twitter account (via direct message), and so on.
Consider changing this field labeled "Emergency txt (SMS)" to "Phone Number" with descriptive text explaining this allows you to receive emergency alerts via text message (SMS).
The purpose of a field simply labeled "Emergency txt (SMS)" may be unclear to new users who are just setting up their profiles and unfamiliar with the workings of the tool. Whereas a field labeled "Phone number" makes it clear they are expected to enter their phone number.
If possible, I would also put the "Phone Company" dropdown directly underneath the "Phone Number" field rather than in the Account Management section.
The shared chat implementation currently uses a tlk.io embedded chat, which means we cannot detect events that occur inside the chat from the app shell (because that would be XSS). I've asked the developers of Tlkio to see if they implemented or are willing to implement window.postMessage()
for cross-origin event handling.
This issue is blocked until they either implement this feature or we implement our own chat solution. (IIRC, @vangogh72 mentioned some level of interest in possibly doing that?)
When a user activates an alert they are able to see their current location on a Google Map. It would benefit many classes of emergencies for the user to see markers on the map of helpful information (maybe depending on the type of alert?) such as the locations of nearby shelters, food pantries, hospitals, planned parenthood clinics, etc.
The admin of a site shouod be able to create a map of resources independent of Buoy (Google My Maps, for instance) that can then be overlaid on top of the map in alert (and responder) view.
Handle the case where no geolocation info is available from alerter. Should still redirect to chat room, send alerts to guardians, keep trying to show current position on map.
Current behavior is failure to redirct to chat room even tho alert notice is sent.
This vector image of a life buoy is CC licensed for noncommercial reuse and can also be found at: https://pixabay.com/en/floating-ring-belt-help-lifesaver-160536/
Useful for street medic use case, probably not possible until native shell app is developed?
Chatroom names are currently prefixed with "better_angels". Change this to "buoy" or something else that makes sense.
Using Safari v. 9.0, on the Choose Your Team Members page, the only way I've been able to add/invite another user to join my team is by typing their full username into the "Add a team member" field. No drop-down appears when I click in the field, nor when I start typing in it.
Some responders may choose "respond" before they record the requester's location. Allow responders who have been dropped into chat to either return to the map from the previous screen, or otherwise map the requester's address/see their location.
Informatuon about hotline numbers and other resources should be accessible to a user without having to activate an alert to read them.
They should also be customizable by the site admin.
Move the resources from a static HTML document to a WYSIWYG textarea option in the admin UI settings screen and include a new subpage under "My Team" to view those resources.
Not MVP but something we might want to think about for the future:
Is displaying a drop-down list of all users on the system an issue for user privacy and/or spam? Should we require a user to know something about the people they are inviting to join their Team e.g. require an e-mail address, a phone number, or at least know the full username of the person they are searching for?
Not sure how to deal with this elegantly, but not sure that we should display a complete list of all users of (a given instance of) the app to anybody who installs it. Any thoughts?
Samsung Galaxy. Stock Android browser v. 4.4.2. When attempting to send a custom alert, clicking on "text bubble" button brings up a text box, but user cannot enter any text
On the "Choose Your Team Members" page, when I type the name of a non-existent user into the "Add a team member" field and submit, a "blank" team member appears in my list of team members, along with a designation of "pending" and either "real" or "fake". (See attached screenshot.)
Instead, I would expect to receive an error message or some other indication that the user I have tried to add does not exist on the system.
If it's not already on the list of hotline numbers etc. add the following line (contact info for the teen dating violence support website loveisrespect.org):
"Love is Respect - To speak to a supportive peer advocate call: 1.866.331.9474, text: loveis to 22522, or chat 24/7 at loveisrespect.org"
The ministry for women and education in austria already has an application for iphone and android that provides all of the services (and more) that buoy is working on, i suggest you take a look at it:
https://www.bmbf.gv.at/frauen/services/fem_help_app.html
it's available in english, german, bosnian, serbo-croatian, and turkish (for the user)
here's a video in english:
https://www.youtube.com/watch?v=KByvx6ViAyk&list=UU1rfX096sHtFtdYVt7GeSnQ
take a look at it :-)
Same for responders's locations.
A client side overlay on the map showing a polyline of possible likely trajectories/positions might be useful.
Rationale is "what happens if an alerter suddenly goes silent/had their phone shut off or battery died?"
As part of native app
As a new user of Buoy, I found being immediately dropped into the Wordpress profile screen a bit confusing -- particularly because the Admin Color Scheme and Show Toolbar options at the very top are not typical options I am used to seeing when installing a new app. (Is there any way to remove these and start the profile at the Name section?)
The first time a new user logs into Buoy, consider displaying the following text either in a pop-up or at the top of the profile page:
"Welcome to Buoy. The Buoy tool connects people in crisis with the people they trust. In order to be available to respond to others in times of need, you must tell Buoy how you can be reached in an emergency. By default, all users receive crisis alerts by e-mail. To also receive crisis alerts by SMS, please supply your phone number in the field below. To create your personal emergency response team, click the My Team button in the left sidebar."
When installing Buoy, an admin should be guided to implementing security best practices, especially because they may not be technicaly savvy themselves. The NNEDV App Safety Center recommends the use of 2FA mechanisms to protect online accounts for DV victims and survivors, so we should detect the presence or absence of such additional account security means and warn the admin user if they are missing.
Allow user to define the alert string that is pushed to the Team.
Provide email to text support for the following carriers:
AT&T: [email protected]
T-Mobile: [email protected]
Verizon: [email protected]
Sprint: [email protected] or [email protected]
Virgin Mobile: [email protected]
Tracfone: [email protected]
Metro PCS: [email protected]
Boost Mobile: [email protected]
Cricket: [email protected]
Nextel: [email protected]
Alltel: [email protected]
Ptel: [email protected]
Suncom: [email protected]
Qwest: [email protected]
U.S. Cellular: [email protected]
If I receive a Buoy alert and am not the first person to view the alert review screen, and another team member has responded to the alert, my map should show me the location of the crisis incident as well as the location of the responder.
The responder screen mockup uses a google API key linked to my personal google account. We should create a google account for the app and get a new key specific for the Buoy/Better-Angels app.
Consider allowing users to send invites by entering the e-mail address of the person they want to add, in addition to their username. A simple way for users to search and see if a specific person they want to add is on the system, without having to know that person's full username.
Add unit tests to make sure emails have the correct content, are sent with the correct "from" address of the alerter, etc.
Some organizations may have specialized medical, legal aid, or survivor advocate positions that are always "on-call" given a particular schedule. There should be a way for admins to define who those users are, their roles, and their on-call schedules so that those support roles can be automatically added to the response Team for users who activate alerts.
I set up the user account rebecca with a team of two real members: fox and frog. Fox's profile includes SMS contact info, frog's profile does not.
I then went to the Activate Alert screen and sent an alert with a customized message. I expected to receive both an email and, in the case of fox, an SMS with a URL for the alert. The fox account received an SMS alert with a URL. However, neither fox nor frog received an e-mail alert -- meaning that frog did not receive any alert at all.
I tried this again with the default (life-preserver) button, and several more times with both buttons. I also logged out of the rebecca account, logged back in, and tried sending an alert. Each time, I got the same results: SMS message to fox, no other notifications.
I also checked to see if my e-mail settings were working, by removing and re-adding both fox and frog to my team. For both accounts, I received e-mail notifications that "rebecca wants you to join her crisis response team." So, those accounts are able to receive notifications from the app, but they are not receiving crisis notifications by e-mail.
Control data in the URL is an information disclosure vulnerability waiting to happen. Get all control data out of the fucking URL.
See also the OWASP wiki page on this issue.
When a user is involved in an active alert as either alerter or responder, the WordPress toolbar should contain a button or menu that contains buttons for each current incident available to (responded to by or activated by) the user.
Do not use the incident hash as the chat room name because then the chat room can be guessed by someone who sees the alert URL.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.