All Projects → thoughtbot → Upcase

thoughtbot / Upcase

Licence: mit
Sharpen your programming skills.

Programming Languages

ruby
36898 projects - #4 most used programming language

Labels

Projects that are alternatives of or similar to Upcase

dummy-products-api
An api to fetch dummy e-commerce product 👕 👗 👖 👚 JSON data with placeholder images.
Stars: ✭ 102 (-26.62%)
Mutual labels:  product
React Image Magnify
A responsive image zoom component designed for shopping sites.
Stars: ✭ 391 (+181.29%)
Mutual labels:  product
Killedbygoogle
Part guillotine, part graveyard for Google's doomed apps, services, and hardware.
Stars: ✭ 1,567 (+1027.34%)
Mutual labels:  product
shopify-product-csvs-and-images
Shopify product CSVs and images to seed your store with product data.
Stars: ✭ 76 (-45.32%)
Mutual labels:  product
Pim Community Standard
[Community Standard Edition] The open source Product Information Management (PIM) - please raise issues in https://github.com/akeneo/pim-community-dev/issues
Stars: ✭ 329 (+136.69%)
Mutual labels:  product
Apai Io
DISCONTINUED Amazon Product Adverstising Library based on PHP REST and SOAP (only V1) using the Product Advertising API.
Stars: ✭ 647 (+365.47%)
Mutual labels:  product
laravel-docweaver
Product documentation generation package for Laravel.
Stars: ✭ 36 (-74.1%)
Mutual labels:  product
Amplitude Android
Native Android SDK for Amplitude
Stars: ✭ 129 (-7.19%)
Mutual labels:  product
Awesome Product Management
A curated list of awesome resources for product/program managers to learn and grow.
Stars: ✭ 368 (+164.75%)
Mutual labels:  product
Gatsby Starter Saas Marketing
☁️ A simple one page marketing site starter for SaaS companies and indie hackers
Stars: ✭ 103 (-25.9%)
Mutual labels:  product
Maeevick
my global strategy about continuous learnings and improvements, projects and activities
Stars: ✭ 23 (-83.45%)
Mutual labels:  product
Product Compare React
React Example - Product Compare Page
Stars: ✭ 275 (+97.84%)
Mutual labels:  product
Pim Community Dev
[Community Development Repository] The open source Product Information Management (PIM)
Stars: ✭ 774 (+456.83%)
Mutual labels:  product
python-amazon-paapi
Amazon Product Advertising API 5.0 wrapper for Python 💰
Stars: ✭ 123 (-11.51%)
Mutual labels:  product
Nerys Product Monitor Lite
A universal product monitor. Capable of monitoring any site for products based on keywords. Optimized for Shopify. Sends alerts via Discord when new products are detected.
Stars: ✭ 111 (-20.14%)
Mutual labels:  product
3D-Product-Viewer-JavaScript-Plugin
360 Degree Product Viewer using plain JavaScript : Demo-->
Stars: ✭ 70 (-49.64%)
Mutual labels:  product
Countly Server
Countly helps you get insights from your application. Available self-hosted or on private cloud.
Stars: ✭ 4,857 (+3394.24%)
Mutual labels:  product
Bandcamp Scraper
A scraper for https://bandcamp.com
Stars: ✭ 137 (-1.44%)
Mutual labels:  product
React Product Card
Animated Product Card with the help of React and SCSS (PWA)
Stars: ✭ 116 (-16.55%)
Mutual labels:  product
Cartesian Product
PHP - A simple, low-memory footprint function to generate all combinations from a multi-dimensionnal array.
Stars: ✭ 58 (-58.27%)
Mutual labels:  product

Upcase

Upcase is a Rails application deployed to Heroku. This project is in maintenance mode and is not being actively developed.

Development

Rules of the road

This project is now following Sandi Metz's Rules.

You can read a description of the rules here.

All new code should follow these rules. If you make changes in a pre-existing file that violates these rules you should fix the violations as part of your work.

Setup

  1. Get the code.

     % git clone [email protected]:thoughtbot/upcase.git
    
  2. Setup your environment.

     % bin/setup
    
  3. Start Foreman.

     % foreman start
    
  4. Verify that the app is up and running.

     % open http://localhost:5000/upcase
    

Designing In The Browser

We are using https://github.com/guard/guard-livereload and https://github.com/johnbintz/rack-livereload. When you save a file, the open browser will automatically refresh, and you can view your changes.

Run bundle exec guard to start the guard server to auto refresh your browser.

Protocol

  1. Look for cards in the Next Up list.
  2. When you start a card, add yourself and move the card to the In Progress list.
  3. When opening a pull request, move the card to the Code Review list and ask in Slack for a review.
  4. Once the review is complete, merge into master as usual. Wait for CI to finish running the build.
  5. Once CI is finished running the build, it will deploy to staging. Move the card to On Staging for acceptance at this time. Comment on the card with acceptance instructions. Include a URL to staging. Ask in Slack for acceptance.

In order to avoid bottlenecks and confusion:

  • Try to only work on one card at a time. Bring all the way from Next Up to Verified on staging as quickly as possible.
  • Prioritize reviewing others' work, both during code reviews and acceptance on staging.
  • Feel free to be persistent when looking for reviews and acceptance.

For more information, check out the guides and Playbook.

Continuous Integration

CI is hosted with CircleCI. The build is run automatically whenever any branch is updated on Github.

Ongoing

  • Run test suite before committing to the master branch.

      % rake
    
  • Reset development data as needed.

      % rake dev:prime
    
  • Dump production data into your local db. (Note that you need to drop your local database first).

      % rake db:drop
      % heroku pg:pull DATABASE_URL upcase_development -r production
    
  • To test that adding/removing GitHub users works, use the GitHub user "cpyteltest".

Amazon AWS S3

To test integration with AWS S3, set the following environment variables:

AWS_BUCKET
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY

Deployment

CircleCI deploys to staging automatically when a build passes on master.

Once your changes have been verified on staging, deploy to production:

./bin/deploy production

Sending email on staging

We override the recipient on staging to be ENV['EMAIL_RECIPIENTS'] so that no one else can receive email from the staging server.

We have it set to [email protected], which is a mailing list. Instead of changing the variable, ask to be put on the mailing list.

To set it:

heroku config:set [email protected],[email protected] -r staging

To see what the current recipient is:

heroku config:get EMAIL_RECIPIENTS -r staging

Viewing email in development

To preview how emails look in the browser without having to send them (via staging) you can visit the rails mailer preview index and navigate to the emails that have preview classes implemented.

To preview the emails point your browser to http://localhost:5000/rails/mailers and select the mailer there.

Product Management

Check the Upcase processes repository for guides on where to find and how to do common tasks like customer support, content production, related repositories and trello boards, and others.

Admin Access

  1. Register on the Upcase site.

  2. Update your user.

     % heroku run console -r production
     % user = User.find_by_email('[email protected]')
     % user.admin = true
     % user.save!
     % exit
    
  3. Access the general admin panel or the workshop admin panel.

Testing With User Accounts

The rake dev:prime task will create user accounts that you can test with in development mode.

Credits

thoughtbot

This application is maintained and funded by thoughtbot, inc

Thank you to all the contributors!

The names and logos for Upcase and thoughtbot are registered trademarks of thoughtbot, inc.

License

This application is Copyright © 2007 thoughtbot, inc.

If you submit a Contribution to this application's source code, you hereby grant to thoughtbot, inc. a worldwide, royalty-free, exclusive, perpetual and irrevocable license, with the right to grant or transfer an unlimited number of non-exclusive licenses or sublicenses to third parties, under the Copyright covering the Contribution to use the Contribution by all means, including but not limited to:

  • to publish the Contribution,
  • to modify the Contribution, to prepare Derivative Works based upon or containing the Contribution and to combine the Contribution with other software code,
  • to reproduce the Contribution in original or modified form,
  • to distribute, to make the Contribution available to the public, display and publicly perform the Contribution in original or modified form.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].