Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Happy to help: Project Management + Backend CMS + JSON REST API #141

Closed
5 tasks
MikeCraig418 opened this issue Jun 3, 2020 · 68 comments
Closed
5 tasks
Assignees

Comments

@MikeCraig418
Copy link
Collaborator

MikeCraig418 commented Jun 3, 2020

I was talking with some friends yesterday saying that police brutality needs to be well documented and made public. I woke up this morning to find this.

I have a vision for a platform with the following features:

  • An application to list grievous actions made by police to peaceful protestors
  • An interactive map where citizens can see where the hot spots are
  • A wiki-of some sort to accept submissions
  • A description of the individuals involved (no doxxing!), the officers involved, and the status of the officer's employment as a result of this documentation -- remember, they work for us!
  • A process to decentralize the front-end application and encourage other people to get involved by hosting mirrors

I can give my time to create a backend platform to manage the submissions, approvals, etc.
I can create a REST API
I can architect the front-end to scale
I can provide PM skills to organize multiple contributors

What I am not:

I'm not a designer -- (call to action!)
I prefer not to do front-end development (call to action!)


Are we a good fit for each other and a community?

My goal for the platform is to call for the full demilitarization of the police. I would like it to be done without highlighting acts of aggression by individuals. I believe showcasing actions of peaceful protestors does this in the most non-political and humancentric way possible.

Let's organize and find tech-savvy contributors if our visions and goals align.

@mnlmaier
Copy link

mnlmaier commented Jun 3, 2020

See my issue #133 — we could probably be a great fit! Let's talk a little more about this if you like :)

I would prefer doing frontend and design stuff.

Still I would prefer starting out with a map to give a quick overview of what's happening in which city, and then work a little more throughout the details (exact locations, officers, stuff like that). Step by step to be able to quickly launch the whole thing with more features added in the coming days/weeks!

Also, I would love to connect with people all over the world through this. That would be a really great experience!

@MikeCraig418
Copy link
Collaborator Author

MikeCraig418 commented Jun 3, 2020

Awesome! We will need this repo maintainers support and a call for other contributors.

Pending we get a little more organized, I can have a comprehensive backend up with an API today, cached on a CDN.

I can cover some initial costs, but we should also welcome donations to cover ongoing hosting, etc.

@nickatnight
Copy link

Discord or Slack?

@nickatnight
Copy link

nickatnight commented Jun 3, 2020

@949mac what do you plan on using for backend? I got a falcon api server getting served via nginx proxy with some fancy ci/cd set up. Should have a staging server up shortly.

Edit:
Swarm deploy on a single node

@MikeCraig418
Copy link
Collaborator Author

I was going to do Laravel + Nova. Then i was going to throw it on a server and add it as a pull zone on a cdn with an expire time of a few minutes, this making all api calls static.

For zero downtime deployment, i would use Git + Deployer.

@MikeCraig418
Copy link
Collaborator Author

Discord or Slack?

Discord

@nickatnight
Copy link

Let's round up some troops and get the ball rolling on this :)

@brydonm
Copy link

brydonm commented Jun 3, 2020

In regards to the map - Google Maps JS API has a heatmap layer: https://developers.google.com/maps/documentation/javascript/heatmaplayer

I'm proficient with React so can help on that end but unfortunately wouldn't have the time to play with Vue or other front-end frameworks.

Firebase is a quick easy way to get started that allows database, auth, etc.

@mnlmaier
Copy link

mnlmaier commented Jun 3, 2020

@brydom I don't have that much experience with React (only done a few minor projects with it), but I am happy to help with a design and the usual frontend stuff. I'm not proficient in all of react's best practices still i know my way around React and Redux but having a structured initial project setup would be a big plus. Would it make sense to use Gatsby to be able to quickly get a structured project up and running?

If we decide on using VueJs, I'm open to provide a up and running Nuxt boilerplate setup including Vuex and a running Google Map (already did that for another project, we could basically start right now), still I am very happy to use React. Wanted to dive a little more into it anyway!

In general we should probably be using a stack which we all are at least somewhat familiar with, because I figure we all have daytime jobs and all of us should be able to make minor adjustments if needed quickly. So Laravel is a big plus for me aswell.

@MikeCraig418
Copy link
Collaborator Author

I forked this repo and made a project board.

https://github.com/949mac/police-brutality/projects/1

Let me know if you can access it and contribute on it. Otherwise, we can use something like Trello?

@mnlmaier - Will you volunteer design?

If anyone knows of someone who can parse through the PRs and aggregate the content, that will be important for the API.

@mnlmaier
Copy link

mnlmaier commented Jun 3, 2020

@949mac will be happy to provide a first design draft today. I'm in CEST timezone FYI.

First quick draft will include basic interface, interactive map and overlay. Nothing too fancy but we can refine in the days and weeks ahead.

Project board is reachable, i will throw in some suggestions in the project board for you all to have a look at.

Edit: Read Only, cannot add stuff :/

@mnlmaier
Copy link

mnlmaier commented Jun 3, 2020

Seperate Post with some suggestions:

  • Use two repositories, one for backend, one for frontend
  • Definitely would prefer using Vue because I will be able to contribute more regarding FE code
  • DigitalOcean hosting would be fine for me aswell
  • Use very strict commit and code guidelines with pre commit linting (at least for FE code), e.g. using Husky (I can do that)
  • Provide an extensive frontend readme for future contributors (I can do that if we will be using Nuxt)
  • Follow release and repo guidelines, no commits on master, feature branches, proper PRs etc

@MikeCraig418
Copy link
Collaborator Author

@mnlmaier - I just added you to the forked project

@mnlmaier
Copy link

mnlmaier commented Jun 3, 2020

@949mac just added some test cards – working fine. thank you!

@MikeCraig418
Copy link
Collaborator Author

@mnlmaier - I'm good with your suggestions/standards as well.

@MikeCraig418
Copy link
Collaborator Author

Added #160

@mnlmaier
Copy link

mnlmaier commented Jun 3, 2020

@949mac I have to leave for about 1h, we might spin up a discord or something later? Also I can create a basic frontend repository with a readme and guidelines on how to start coding, if we decide to stick to VueJS. Would love to! We can always transfer ownership later on can't we?

@MikeCraig418
Copy link
Collaborator Author

For sure! I’m going to go one a quick run and help the wife with the kids for an hour or so. Ttys.

@mnlmaier
Copy link

mnlmaier commented Jun 3, 2020

Spun up a Nuxt repository for the frontend, it's currently set to private, I've invited @949mac. Lmk who else wants to have a look in there, I'll gladly invite you :)

@bobnearents
Copy link

bobnearents commented Jun 3, 2020

@mnlmaier I would love to take a look and contribute as I can. I'll be able to take a peak soon, but can't contribute much until tonight.

front-end dev btw

@mnlmaier
Copy link

mnlmaier commented Jun 3, 2020

@bobnearents invited!

@nickatnight
Copy link

@mnlmaier Aye there. I too would love to sprinkle some goodies where I can. Back end

@mnlmaier
Copy link

mnlmaier commented Jun 3, 2020

hey @nickatnight, great! @949mac will have to invite you, he's hosting the backend repo. i mean we could always go public, what do you all think?

@MikeCraig418
Copy link
Collaborator Author

MikeCraig418 commented Jun 3, 2020

Hi @nickatnight, any objection to Laravel? I can purchase a Nova license.

I'm going to add similar coding guidelines.

@mnlmaier, totally. This is work belongs to our collective humanity.

@mnlmaier
Copy link

mnlmaier commented Jun 3, 2020

alright, will be switching my repo to public later. have to really head out now, will be back in a few

@MikeCraig418
Copy link
Collaborator Author

@nickatnight - Thinking about it a little more, jumping through hoops to get Nova (licensed) available to contributors might be a pain. This would be for DB management, and not necessarily needed for the overall API. With that being said, we can create the front-end manager any other way. Thoughts?

@nickatnight
Copy link

@949mac I'm not familiar with Laravel at all. What about python? Go would probably be a stretch

@nickatnight
Copy link

I scrolled through the raw video section, and it's a little unorganized. For now, a simple key/value store to hold the parsed data from the *.md files should be enough I think? @949mac

@MikeCraig418
Copy link
Collaborator Author

@mnlmaier --

Any other desired end-points?

@mnlmaier
Copy link

mnlmaier commented Jun 3, 2020

still cors issues on https://frontend-1750f.web.app

edit: cache, classic :D seems to work. live data here we go!

@MikeCraig418
Copy link
Collaborator Author

I purchased 846policebrutality.com -- I'm willing to transfer it anyone willing to maintain it. If you think there's a better domain, let's grab it.

We can do www.domain.com and api.domain.com. If we keep 846policebrutality.com, I think we'll need to coordinate some DNS.

@mnlmaier
Copy link

mnlmaier commented Jun 3, 2020

@949mac cannot access endpoint from localhost – have you changed anything regarding cors?

@MikeCraig418
Copy link
Collaborator Author

I'm looking now @mnlmaier. But I don't think anything has changed. Was localhost working before?

@mnlmaier
Copy link

mnlmaier commented Jun 3, 2020

yes it was – for some reason, chrome is hitting me with a CORS error now :(

edit: now its working again, wtf

@MikeCraig418
Copy link
Collaborator Author

Hmm -- try a hard refresh? A fresh install of your app works fine for me.

image

Edit: The joy of CORS.

@mnlmaier
Copy link

mnlmaier commented Jun 3, 2020

alright guys, i'll head to bed for today. thanks for the great work, let's continue tomorrow!

@949mac if you want to post this on reddit to gain some support with data quality, feel free to do so!

@MikeCraig418
Copy link
Collaborator Author

Terrific. Thanks again for everyone's hard work!

Let me see what we can do about introducing this back into the Reddit-sphere.

I won't be able to sit down until this evening (about 5 hours from now) -- but fingers crossed!

@MikeCraig418
Copy link
Collaborator Author

MikeCraig418 commented Jun 4, 2020

Unfortunately, I've got to catch up on some items I neglected today. I did update the ReadMe and added a Roadmap on the backend repo.

Incidents Endpoint
- [x] `HTTP GET /api/incidents` - list all incidents
- [ ] `HTTP GET /api/incidents?xx` - Filter by city, state, date range
- [ ] *Any requested end-points?*

Geolocation
- [x] Artisan command to update lat/long for all Incidents
- [ ] Automatically find lat/long on data import

Data Aggregation
- [ ] Continuous Integration of data via MD files from 2020PB/police-brutality

Data Management
- [ ] *Is there value in a CRM?*

It would be terrific to figure out if any other endpoints are desired and get those scoped.

Additionally, there's a python script that crunches the MD files. It would be terrific if there was a streamlined job that put those into github daily. Otherwise, I'll be looking for a way to crunch the MD files automatically in the backend. With that being said, contributions here are welcome.

I will pick this up tomorrow. Feel free to push forward while the momentum is strong!

@ubershmekel
Copy link
Collaborator

The data build is live. Every commit to master will regenerate these files in the branch data_build.

@MikeCraig418
Copy link
Collaborator Author

The data build is live. Every commit to master will regenerate these files in the branch data_build.

Wonderful! Thank you.

@nickatnight
Copy link

Wow these are great! @949mac @mnlmaier Really excited to see the traction on this. Been a hell of a day for me, but finally got this online https://github.com/nickatnight/policebrutality.io

Had to update my name servers, but http://staging.policebrutality.io/api/videos should be up soon

@nickatnight
Copy link

@ubershmekel hell ya looks good 👍

@mnlmaier
Copy link

mnlmaier commented Jun 4, 2020

I really think we should get this on reddit, I would be happy to get some frontend help — we could get done a lot more in a very short time! Will add a roadmap to my Readme, so others can start working on it when I'm not available :) Would like to focus on incident details next.

@mnlmaier
Copy link

mnlmaier commented Jun 4, 2020

You know what would also be great? Hosting RAW Video files (mp4) which we can in turn randomly play on the website (in some kind of sidebar or popup player), with the appearance of zapping through TV channels to kind of force people to see what the numbers on the map actually mean and that they resemble actual events.

WDYT @nickatnight @949mac?

@MikeCraig418
Copy link
Collaborator Author

MikeCraig418 commented Jun 4, 2020

You know what would also be great? Hosting RAW Video files (mp4) which we can in turn randomly play on the website (in some kind of sidebar or popup player), with the appearance of zapping through TV channels to kind of force people to see what the numbers on the map actually mean and that they resemble actual events.

WDYT @nickatnight @949mac?

Still sleeping over here :) but totally. The more visual, and easy to consume the better.

We would need volunteers to pull the videos and to host them uniformly somewhere. I think there may have been some discussion on that already in some other threads, but I’m not entirely sure.

Edit: linking #32 - looks like scripts have been started!

@MikeCraig418
Copy link
Collaborator Author

Wow these are great! @949mac @mnlmaier Really excited to see the traction on this. Been a hell of a day for me, but finally got this online https://github.com/nickatnight/policebrutality.io

Had to update my name servers, but http://staging.policebrutality.io/api/videos should be up soon

Looks great @nickatnight

@MikeCraig418
Copy link
Collaborator Author

MikeCraig418 commented Jun 4, 2020

The public API is made available at https://api.846policebrutality.com/api/incidents now.

Edit: I might remove the /api from the path later. This would be a breaking change for anyone. Just an FYI. I'll decide what to do when I get to work. in a few hours.

@mnlmaier
Copy link

mnlmaier commented Jun 4, 2020

I've deployed the new endpoint URL to firebase (https://frontend-1750f.web.app/). Should we go run the frontend on one or both domains, and get this to reddit for further volunteers to help us out? @949mac / @nickatnight ?

I will implement the actual Incident Content today!

@mnlmaier
Copy link

mnlmaier commented Jun 4, 2020

Quick thoughts of what we need:

  • Discord?
  • A hoster that won't give in on political content (still, we should only display facts and be as non-opinionated as possible. no doxxing or personal commentaries) — can't comment on firebase's reliability regarding that
  • Backend Devs (?)
  • Data Aggregators / Cleanup-Crew (most important part imo!)
  • VueJS / Nuxt frontend devs
  • People who spread the word

@ubershmekel
Copy link
Collaborator

@mnlmaier fyi:

  • There is a discord for github contributors and reddit moderators. Message the mods of /r/2020PoliceBrutality on reddit to join.
  • The data clean up crew is you, me and the general public on this repo https://github.com/2020PB/police-brutality/graphs/contributors. More people to help make pull requests would be great.
  • You can access the data in a more structured data form, see https://github.com/2020PB/police-brutality/tree/data_build I don't know if we need more back end devs. Perhaps it would make sense if it were for building a tool to help identify duplicates. Maybe there are more ideas.
  • Right now I would say we need front end devs to create visualizations of the data and people to spread the word.

@949mac this issue is a lot of different things. Can we close it and open specific issues that are actionable and closable?

@MikeCraig418
Copy link
Collaborator Author

Yes, I will close this today. I've got one more API update that links all videos. It's coming shortly.

From there, we can address data clean up, etc.

@MikeCraig418
Copy link
Collaborator Author

MikeCraig418 commented Jun 4, 2020

Here it is:

Get all Incidents

HTTP GET https://api.846policebrutality.com/api/incidents

Get all Incidents and include Evidence w/ Downloadable Videos

  • Includes video source (if available)
  • Includes video streams w/ download links
  • Includes site, title, description, and more...

HTTP GET https://api.846policebrutality.com/api/incidents?include=evidence

There are a number of videos that need to be re-pulled (or at least re-attempted), and do need to update my repo and clean up my code. I'm going to be out for a few hours, but hopefully, this helps anyone!

I'll close this after I have a chance for a final review.

@mnlmaier
Copy link

mnlmaier commented Jun 4, 2020

Messaged the mods. Let's see what happens! :)

@MikeCraig418
Copy link
Collaborator Author

Okay - it looks like we can close this for now! We'll create a new ticket for anything new.

If you guys want anything else from me, let me know. I won't have to time finalize my backend repo submission until tomorrow, but I plan on adding a CLI script to download/archive the videos.

I'll jump into Discord as well.

@mnlmaier -- Thanks again for creating a fabulous frontend, and everyone else thanks for your contribution and support.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

7 participants