Giter Club home page Giter Club logo

heartofthevalley's Introduction

Heart of the Valley

Our Valley of Heart's Delight (Santa Clara Valley, or the South Bay Area) has so many incredible murals and public art. This open source project visualizes and maps data about local public art and murals. We hope that this will help community members discover the beautiful murals and public art that make our communities vibrant. We also hope the map can help community members discover local artists and creatives in the South Bay.

This is a Free and Open Source Project.

It is maintained by Code for San José volunteers.

Questions about forking or using this project? Read our license.

Technologies:

  • Mapbox GL JS
  • Open Street Maps
  • React
  • Express

How to contribute

Want to contribute data about local public art/murals? Submit the data as an issue, or in our contact form

Contribute your research, development or design skills. Check out our list of issues on GitHub, and join our discussion on Discord: #heart-of-the-valley channel.

Development

This project uses Node.js Node.js LTS version 18. If you don't already have a preferred Node.JS IDE, it is recommended to use Visual Studio Code with this project. Node version is pinned in .nvmrc

Project setup:

Fork, then clone the project and run npm install to install the required packages listed in package.json.

Updating the scraped data:

The following steps are involved in updating the artwork data:

  1. Scrape the Artwork files from sanjoseca.gov - Run npm run scrapeArtworks. This will fetch data from sanjoseca.gov and populate the artwork-data/_scraped-artworks.json file with the fetched data.
  2. Merge the scraped artwork data with the artwork overrides - Run npm run mergeArtworkFiles. Some artwork files have incorrect addresses or addresses which cannot be looked up with Nomanatim. The artwork-data/artworks-overrides.json file exists as a way to reliably fix the data associated with the artwork so that Nominatim can find the location.
  3. Check for untitled art (optional) - Run npm run listUntitled. Some art is reported as "untitled" for the "title" field. If you know the title of the art, then add an override for it in the artworks-overrides.json and re-run step 2.
  4. Lookup addresses with OSM/Nominatim - Run npm run lookupAddresses. This will use the artwork address field to attempt to get the geolocation (latitude and longitude). The output of this command will indicate if there are failures to lookup the address. If you know the location, then add an override for it in the artworks-overrides.json and re-run step 2, then re-run step 4.
  5. Copy the artwork JSON data into art.js - Finally, run npm run moveArtToOutputDir to copy the contents of artwork-data/consolidated-artworks.json into js/art.js, prefixing the content with const art = . This is the final step and is needed before the changes can be visible in the web application.

Managing the live data:

POI Manager

The POI Manager exists to better assist with the creation and management of all artworks or points of interest. Because the primary source of data is the scraped artworks from the San Jose site, there exists some inconsistensies and each site needs to be vetted. The intent is to have all POIs in the artwork-data/managedPOIs.json file be complete with information before being shown by the heartOfTheValley application.

Running the POI Manager

  1. From the project directory, Open POI Manager. This opens up a local server using assets from the assetsPOIManager folder.
    npm run managePOIs
  2. Go to http://localhost:3000. Use the POI Manager.
  3. Once done, from the terminal window used to run the POI Manager, hit Ctrl + C.

Using the POI Manager

  1. On the index page, the left hand side will have all the scraped artworks that are not yet live. The right hand side will have all the artworks that have been vetted. Index Page
  2. Click on a scraped artwork to open up the Edit POI Page or click on "Create New POI" to open up the New POI Page.
  3. Once on the Edit/New POI page, include all details. You can view how the artwork will appear on the map area to the right. Click on the "Refresh Map & Popup" button to see any changes that have been made. New/Edit Page
  4. Click "Submit POI" to have this sent to the artwork-data/managedPOIs.json file to be consumed by the heartOfTheValley application.

Running unit tests

Unit tests use the testing framework Jest. To run the unit tests, run npm run test from the command line.

heartofthevalley's People

Contributors

aaronhans avatar aeevrubin avatar darpham avatar darren-recentive avatar david-leonard-servicenow avatar dependabot[bot] avatar giftofgrub avatar heyitsvajid avatar hsapkota avatar jmlangston avatar jmstudiosjoe avatar kgudger avatar kyle-falconer avatar lanmistchen avatar nickkats avatar nohjlau avatar priyaganti avatar r-lee1 avatar umapreethi-dev avatar ychoy avatar zpallin avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

heartofthevalley's Issues

Create webapp to visually check each POI

locally run web app that gets all scraped artworks, shows each artwork on a map with all details, allows user to edit how the artwork will appear, outputs cleaned up data points to a json file. Json file to be consumed by the Heart Of The Valley page.

User accounts

Create user accounts so community members can suggest changes or suggest a new mural/public art that may be missing from the map. Administrators should be able to review the suggestions through a CMS backend.

Broken images

Some images are broken, and it might be a result of the web scraper breaking. Needs investigation.

Checklist:

  • Fix broken images
  • Add a placeholder image in case in the future the image URL is incorrect

Clean up art dataset

  • Add a category for: sponsorship, artist(s) website, source, and production team (if these tags exist. They may not exist for the City of San Jose public art collection).
  • Remove all html tags from the art.js file
  • Move html tags into the main.js functions

User feedback

Create a contact form that'll allow visitors to provide feedback and their experience on Heart of the Valley.

Link in header blends in with header color

Make a different link color; currently it blends in with the marker header, which is also purple. Alternatively, style links differently that are in the marker header.

About page

Create an about page with more information about the project, how to contribute, etc.

Migrate to Gatsby

We're looking to organize our code and migrate to Gatsby, so we can more easily maintain our code while still having a static site that we can easily host.

Pagination

The current website requests every image from all image locations, which means if there are hundreds of images from the San Jose Gov website each user will be flooding their website with requests. One solution is to create auto loading pagination so that we only request 10 or so items at a time. This will also reduce lag when browsing the website particularly on low processing power devices.

Allow Website Users to Add Entries and Artwork

As a user of the Heart of the Valley website, I want to submit my own artwork and entries to the database, so that I can contribute to the collection.

1. User can select an entry and upload a graphic file.

  • User can add their name as the photographer
  • User must verify that they have the copyright on the graphic.
  • User must provide an email.
  • System must check that graphic is in a web format, and meets size and dimension requirements.
  • System must provide error/warning if the graphic doesn't meet requirements.
  • If graphic is accepted, system must use the graphic until it is removed or replaced (by either admin or new, accepted, graphic submission).
  • Graphics can be deleted if they are rejected.
  • If graphics are later deleted, the original, or scraped graphic should be used.

2. User can select a point on the map, and add an entry.

  • User must be able to click or drag a pointer to a location on the map.
  • User must be allowed to add an entry with the required fields.
  • User must provide an email.
  • User must be allowed to enter an optional graphic. (All requirements from 1. above.)
  • User must receive a response after submitting the request, to know that it was successful.
  • User should receive an email after their entry is approved (or rejected).
  • Entry submission should be packaged for easy administration.
  • If the entry is approved, system should create a persistent entry, that is shown to users.

3. User can select an entry and add a comment for the site administrator.

  • User must be able to click on comment link for the entry.
  • Form must make clear the purpose of comments (to highlight potential errors in the entry).
  • Comment submission should be packaged for easy administration.
  • User should receive an email after their comment is reviewed.
  • Comments should be easy to archive once they are addressed.

4. All forms must be secure.

  • Form must have security mechanism to prevent spam, intrusion, and malicious entries, for example, filling the server with multiple large graphics.

Clicking on markers doesn't fly to the information on side menu

Expected behavior:
When a user clicks on the marker on the map, the side menu should automatically display the same mural.

Currently, when a user clicks on the marker, it doesn't fly to the appropriate mural. It works sometimes, but it won't work all the time.

Add murals from POW!WOW! San Jose Oct 2018

A number of new murals were installed/created Oct 2018 by POW!WOW! San Jose and Empire Seven Studios art gallery. Here is a link to the list of murals.

We need to update the artworks-data/consolidated-artworks.json and js/art.js file with this new information. Please check to make sure they are not already on the list before adding the data.

In order to find the latitude and longitude, please look up the location on OpenStreetMaps: https://www.openstreetmap.org/

Additional data

Research and add information about sponsorship and/or production behind the public art/mural

Pop up descriptions cutoff

Currently, when there is a popup with an extended description the text will be cut-off at the bottom of the screen. One solution to this is to truncate the description after X number of characters and then have a "Read More" link. There are a number of options with what the "Read More" link would do. One option is to flash the active entry on the sidebar to indicate to the user that is where they should look. Another option is to create a specialized popup that will display all of the content without being cut-off.

image

List of public art sources

In the wiki, create a list of public art sources (websites, orgs, artists, etc.)

Keep to San Jose for now.

Map filters

The map needs filters that allow users to filter the list or the map.

For example, filter art/murals by title, by artist, by subject (if the artwork was organize with subject tags)

NOTE:
This is a big issue and be broken up into a list of tasks. There's some design ideas from Anne-Elise Chung(see the thread), and some suggestions for approach by Minh Nguyen (see the thread).

Add murals from 2017 POW! WOW! San Jose

Add murals from the 2017 POW! WOW! San Jose to Heart of the Valley. To do this, add the information to artworks-overrides.json, and update consolidated-artworks.json and art.js accordingly.

Mural information is here: https://www.powwowsanjose.com/

This issue follows up the issue 70, adding murals from 2018 POW! WOW!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.