Giter VIP home page Giter VIP logo

greensteps's Introduction

Green Steps

Want to help improve the natural beauty of the Chattanooga area? This Green Steps companion web app helps you track and be rewarded for litter cleanup. For more information on the official Green Steps mission and to get involved check out the official website here!

Table of Contents

Technologies Used

How Does it Work?

  • Log your work

    • What counts as one trash bag? A doggie poop bag, grocery bag, green steps bag, regular trash bag, a box of trash, one large bulky item - use your best judgement!
    • Make sure to include a before and after photo. The before photo must show the area you are planning on cleaning up. The after photo must include that same area as well as the trash bags you're logging.
    • Every bag is worth one point.
  • Redeem a gift card

    • Once you have at least 5 points, you will be able to request a gift card right here on the dashboard.
    • You may redeem a total of $30 in gift cards per month, with each card being a minimum of $5.
  • Contact us if you have any questions or are interested in becoming a sponsor!

Explore the App

A sample version of the app is hosted here. Feel free to explore and play around with it. If you find something that doesn't seem quite right please open an issue!

Contributing

We'd love for you to contribute to our project! First, please read these resources:

Contacts

Amanda Dolan is the project maintainer. Feel free to contact her with questions or concerns!

Alyssa Grizenko` is the founder of Greensteps.

greensteps's People

Contributors

bhavyanshu avatar crawfoal avatar ilindmitry avatar invacuo avatar isabelvazquez avatar jdg006 avatar jlave-dev avatar keepitrio avatar l0010o0001l avatar neidley avatar pierce-m avatar prabodhmeshram avatar ruan-brandao avatar stevensona avatar sundus-y avatar swatijadhav avatar tungla avatar xdega avatar yuxisteem avatar

Stargazers

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

Watchers

 avatar  avatar  avatar  avatar

greensteps's Issues

Users have both total and unredeemed points

On the dashboard, in the stats section, we should show both the user's total (lifetime points) and their unredeemed points. When they select a prize, the corresponding amount of points should be deducted from their unredeemed points, but not their total/lifetime points.

Navigation spec fails intermittenly

One of the navigations specs fails intermittently. I think when you run just that one spec, it fails every time. When you manually run through the steps in that spec, everything works fine, so I think there is some issue with waiting in Capybara.

Add trail raisers role

Trail raisers are users who are more committed to Greensteps project and have made a financial contribution. They are invited to special events and things like that.

Users can pick a prize

On the dashboard, there should be a prize section that shows a preview of some of the prize options. If they have enough points, they should be able to click on that prize to redeem it, otherwise, it should look kind of grayed out and not be clickable. There should also be a see more button at the bottom of this page that takes them to see all of the prizes. This full list should be broken down by how many points the prizes cost, and again if the user doesn't have enough points, it should be grayed out and not clickable.

It might be good to break this into multiple PRs, maybe the full page first and then dashboard preview second.

Running rubocop with auto corrections should be a rake task

This should be in a rake task rather than an after :suite hook. Probably want it to run as a part of the default rake task, but not necessarily as a prerequisite to the spec task. It can be annoying to have it check all files all of the time. But it's also helpful to get early feedback when you're doing something ugly.

Admin prize worklist

When a user picks a prize, their info (email) and the prize they selected are added to a worklist that the admins can reference. Once an admin has sent out the prize, they should be able to remove the record from the worklist.

Needs to coordinate with #25, maybe be done in same PR.

Show matcher should be scoped to the expected object

Right now, the show matcher ignores what is passed to expect. It just looks to see if the specified page object is anywhere on the page. When we expect one page object to be a child of another, it would be nice to be able to say something like

expect(dashboard).to show :deed_form

This example comes from user_logs_deed_spec.rb. Right now, we can only assert that both objects are on the page:

expect(page).to show :deed_form
expect(page).to show :dashboard

With the way things are now if we were to say expect(dashboard).to show :deed_form it would pass, even if the deed form wasn't a child of the dashboard but was elsewhere on the page.

Test sad path for DeedsController#create

We should have a controller spec that tests what happens when a trash bag can't be saved.

There aren't currently any validations on the TrashBag model, but we should stub out the save failure anyways.

Internationalization reivew

We should review all views, models, and model attributes and make sure that they are internationalized.

We'll keep this issue open because we should do this review regularly.

If you haven't worked with internationalization (I18n) in Rails before, check out the Rails guide on I18n.

Wrong model used in Deed form page object for I18N strings

In the DeedForm page object (spec/page_objects/deed_form.rb), we get the input labels via User.human_attribute_name but it should actually be Deed.human_attribute_name. We should figure out why the specs are passing anyways and then use the correct version.

Users can suggest prizes / businesses

Users can suggest a business where they would like to use their points at.

After they submit the form, we should notify them that they will be notified if their request is approved.

Hot spot map

Users can pin spots that are really trashed and then other users can view a map of these "hot spots"

Organize the Gemfile

We should take the gems that are listed at the bottom of the file and add them in the correct category above. The first group should have gems that are used in all environments, the next group should have gems that are used only in the development and testing environments, and then the last group should have gems that are used only in the development environment.

Our RuboCop config is set to order the gems in each group alphabetically. You don't have to do this by hand - just run bin/rake after you change the file and RuboCop will alphabetize each group for you. I think RuboCop considers groups to be separated by empty lines. I'm not sure how it would handle the full line comments above the gems, we should probably just delete them. They are there from when the Rails app was generated.

We should delete gems that are commented out.

Remove haml-rails gem

We're back to using ERB, so we should remove the haml-rails gem and ensure that views are generated using erb and not haml.

Automate the sending of prizes

Admins would like to have prizes sent out automatically. We've talked about using QR codes and insta-gift (not sure what that is).

Test environment still has pending migrations, plus Rails env is dropped from schema

After running migrations via bin/rake db:migrate, I'm seeing this when I try to run specs:

ActiveRecord::NoEnvironmentInSchemaError: 

Environment data not found in the schema. To resolve this issue, run: 

        bin/rails db:environment:set RAILS_ENV=test

It looks like this will be fixed by the next release of DatabaseCleaner. Until then, we can exclude ar_internal_metadata from any truncation or deletion cleaning done by DatabaseCleaner.

Additionally, it says that the test environment still has pending migrations... but this should have been fixed in PR #34. Any thoughts @stevensona ?

User account deletion and dependent records

In PR #53 we talked about having deed records destroyed if a user deletes their account (discussion). Now that I think about it, that might not be the best thing if Greensteps ever needs to query their data for grant purposes. Maybe we should make account deletion a "soft" deletion.

Report points in dashboard

Along with reporting how many miles walked, we should report how many points the user currently has. Each bag of trash is worth 3 points, each mile walked is worth 1 point.

Add a PR checklist

Some things I'd like on the list:
[ ] Verify all changes have test coverage.
[ ] I18N is used for user-facing strings as well as in specs.
[ ] Each chunk of code changes matches the style of similar files, specs, classes, etc.
[ ] User experience review: Step through the changes "by hand" in the browser.
[ ] Make sure the issue is linked in the description via a keyword.
[ ] If the Gemfile was updated, make sure Gemfile.lock was too

After merging:

  • update issue labels (are any new issues ready to be started now?)
  • do migrations need to be run in staging or production? (Semaphore might be set up to do this for staging, I can't remember)

Add a markdown linter

Is there something we could add to the default rake task, and have either Code Climate or Semaphore run that would validate markdown files? It would also be nice if it could check to make sure that all lines are less than 80 characters.

Fix styling on devise form errors

In commit c26c8, I added an errors partial for form errors and styled it, but I forgot that Devise uses #error_explanation to wrap it's form errors. We should add styling back in for these divs (e.g. try to update an user's password, but don't enter the current password), and keep the new styling we have for our errors (e.g. when creating a "deed" enter zero for both trash bags and miles).

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.