这是indexloc提供的服务,不要输入任何密码
Skip to content

E-commerce app using Rails 7, PostgreSQL, Hotwire (Turbo + Stimulus), Tailwind CSS, Supabase, Cloudinary, Stripe, and Render

License

Notifications You must be signed in to change notification settings

binos30/shopline

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Shopline

Created Badge Updated Badge CI/CD Dependabot Status

E-commerce app. Shop online with Shopline. You shop, we ship!

Homepage Dashboard Dashboard-Dark Orders Orders-Dark

Setup

Prerequisites

Create .env file at the root of the project directory. Copy the content of .env.template.erb to .env then update the username and password based on your database credentials. Get STRIPE_SECRET_KEY and STRIPE_WEBHOOK_SECRET from your Stripe account.

To enable error monitoring with Honeybadger:

  1. Sign up for a Honeybadger account
  2. Create a new project in Honeybadger
  3. Get your project's API key from the project settings
  4. Add the API key to your .env file as HONEYBADGER_API_KEY

Install dependencies and setup database

bin/setup

Re-enable git hooks (Run this command only if you've already set up the application prior to the migration from husky to lefthook)

git config --unset core.hooksPath

Run lefthook install to sync the git hooks

Start local web server

bin/dev

Go to http://localhost:3000

Use Stripe CLI to simulate Stripe events in your local environment or learn more about Webhooks

stripe listen --forward-to localhost:3000/stripe_webhooks

Testing Payments

To test Stripe payments, use the following test card details:

  • Card Number: 4242 4242 4242 4242
  • Expiration: Any future date
  • CVC: Any 3-digit number

Set up a production Stripe webhook

  1. Go to the Stripe Dashboard and create a new webhook for your production environment.
  2. Set the endpoint URL to your production route (e.g., https://yourdomain.com/stripe_webhooks).
  3. Select the events you want to listen for (e.g., checkout.session.completed, customer.created, customer.deleted).

GitHub Actions, Linting and Security Auditing

GitHub actions are setup to lint, test, and deploy the application.

You can also run these actions locally before pushing to see if your run is likely to fail. See the following gems / commands for more info.

  • Brakeman - Security audit application code

    bin/brakeman --no-pager
  • Brakeman: Ignoring False Positives - Creating and Managing an Ignore File

    bin/brakeman -I --no-pager
  • Bundler Audit - Security audit dependencies

    bin/bundler-audit --update
  • Rubocop Rails Omakase - Ruby Linter

    bin/rubocop

    Note: Some linters like ESLint, Prettier, etc. will automatically run on pre-commit git hook.

Testing

Setup test database

bin/rails db:test:prepare

Default: Run all spec files (i.e., those matching spec/**/*_spec.rb)

bin/rspec

or with --fail-fast option to stop running the test suite on the first failed test. You may add a parameter to tell RSpec to stop running the test suite after N failed tests, for example: --fail-fast=3

bin/rspec --fail-fast

Run all spec files in a single directory (recursively)

bin/rspec spec/models

Run a single spec file

bin/rspec spec/models/product_spec.rb

Run a single example from a spec file (by line number)

bin/rspec spec/models/product_spec.rb:6

Use the plain-English descriptions to generate a report of where the application conforms to (or fails to meet) the spec

bin/rspec --format documentation
bin/rspec --format documentation spec/models/product_spec.rb

See all options for running specs

bin/rspec --help

Code Coverage

SimpleCov is a code coverage analysis tool for Ruby. It uses Ruby's built-in Coverage library to gather code coverage data, but makes processing its results much easier by providing a clean API to filter, group, merge, format, and display those results, giving you a complete code coverage suite that can be set up with just a couple lines of code. SimpleCov/Coverage track covered ruby code, gathering coverage for common templating solutions like erb, slim and haml is not supported.

After running your tests, open coverage/index.html in the browser of your choice. For example, in a Mac Terminal, run the following command from your application's root directory:

open coverage/index.html

in a Debian/Ubuntu Terminal,

xdg-open coverage/index.html

Note: This guide can help if you're unsure which command your particular operating system requires.