{"id":32480162,"url":"https://github.com/matthewboman/wnc-copwatch","last_synced_at":"2026-05-06T13:38:47.768Z","repository":{"id":38808336,"uuid":"126534824","full_name":"matthewboman/WNC-Copwatch","owner":"matthewboman","description":"A filterable map of police reports","archived":false,"fork":false,"pushed_at":"2023-01-04T01:10:15.000Z","size":5658,"stargazers_count":2,"open_issues_count":70,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2023-03-07T14:15:24.558Z","etag":null,"topics":["leafletjs","nodejs","open-source","ramda","vuejs2"],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/matthewboman.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-03-23T20:18:08.000Z","updated_at":"2021-03-18T14:01:13.000Z","dependencies_parsed_at":"2023-02-01T17:02:01.096Z","dependency_job_id":null,"html_url":"https://github.com/matthewboman/WNC-Copwatch","commit_stats":null,"previous_names":[],"tags_count":null,"template":null,"template_full_name":null,"purl":"pkg:github/matthewboman/WNC-Copwatch","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matthewboman%2FWNC-Copwatch","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matthewboman%2FWNC-Copwatch/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matthewboman%2FWNC-Copwatch/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matthewboman%2FWNC-Copwatch/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/matthewboman","download_url":"https://codeload.github.com/matthewboman/WNC-Copwatch/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matthewboman%2FWNC-Copwatch/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":281202131,"owners_count":26460564,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-26T02:00:06.575Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["leafletjs","nodejs","open-source","ramda","vuejs2"],"created_at":"2025-10-27T01:52:58.981Z","updated_at":"2025-10-27T01:53:04.493Z","avatar_url":"https://github.com/matthewboman.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# WNC Copwatch\nThis application provides an interactive map and other visualization tools to represent police data for community members in hopes of creating greater accountability and transparency. Check out the current site at [https://copwatch.avlcommunityaction.com/](https://copwatch.avlcommunityaction.com/)\n\n## Police Reports\nMost data comes from [Asheville's open datasets](http://data.ashevillenc.gov/datasets). Some reports are pulled from the daily [APD](https://apdp2c.buncombecounty.org/dailybulletin.aspx) and [Buncome County Sheriff](https://bcsdp2c.buncombecounty.org/dailybulletin.aspx) police bulletins.\n\n## Versioning\nVersion 2 differs great;y what is currently live; this branch is being actively developed. One key difference is that the front and back end have been separated. For additionaly information, checkout the README for each.\n\n## Requirements\n* Node 9.* (you'll need a version that allows for array/object destructuring)\n* Postgres (version 2 only)\n* Redis (version 2 only)\n* MongoDB (version 1 only)\n* A Google Maps API key (necessary only for daily bulletin parser)\n* Use `.example.env` for backend development. `server.js` requires DB_URL and `BulletinParser.js` requires GOOGLE_MAP_API\n\nWe use a remote MongoDB instance to store daily bulletins. You can use your own for backend development, but if you'd like access to our database, email [avlcommunityaction@gmail.com](mailto:avlcommunityaction@gmail.com).\n\nFor frontend development, you can get a list of REST endpoints and examples in [the documentation](https://copwatch.avlcommunityaction.com/documentation) of our site and update [where the frontend calls the API](https://github.com/crashspringfield/WNC-Copwatch/blob/master/public/src/vuex/api.js).\n\n### Version 1 development\n\n**I'm not currently adding new features to this branch, but feel free to if you'd like. It exists for bug fixes and security patches. If you would like to help out, check out the `v2` branch for active development.**\nAny development for the production site should be done on the V1 branch.\n\nDirectories that begin with an underscore are V1 for reference only.\n\n#### Frontend Application\n* Make the rendered list of reports sortable\n* Improve user feedback while map is re-rendering\n* Query by specific dates on map w/o having to load all\n\n\n### Version 2 development\nWe're still pulling from the city's API. This can cause issues with speed.\nOne option would be to cache results with Redis.\nAnother option would be to write DB seeders \u0026\u0026 store all in our DB.\n\n### Frontend\n* Many of the components are basically working and need styled and optimized.\n* Maps with markers can make the browser unresponsive\n* Heatmaps work only on initial navigation due to a race condition in rendering the map and the heatlayer referencing the map. This may be a library issue.\n\n### Backend\n* Implement Redis caching for expensive calculations\n\n### GraphQL\n* Implement pagination and error handling\n\n#### Site Configuration\n* Code splitting to reduce size of bundle\n* Write deploy script\n* Create config file for pm2\n* Create Docker container\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmatthewboman%2Fwnc-copwatch","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmatthewboman%2Fwnc-copwatch","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmatthewboman%2Fwnc-copwatch/lists"}