{"id":15151471,"url":"https://github.com/danekf/ruby-jungle","last_synced_at":"2026-02-17T03:36:59.185Z","repository":{"id":76331397,"uuid":"528105548","full_name":"danekf/Ruby-Jungle","owner":"danekf","description":"Ruby jungle exercise. Learning Ruby as goal, without support.","archived":false,"fork":false,"pushed_at":"2022-08-30T21:06:33.000Z","size":32022,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-05-29T19:58:34.935Z","etag":null,"topics":["cypress","rails6","ruby","ruby-on-rails","webpack-dev-server"],"latest_commit_sha":null,"homepage":"","language":"Ruby","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/danekf.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-08-23T17:55:25.000Z","updated_at":"2022-08-30T21:07:48.000Z","dependencies_parsed_at":null,"dependency_job_id":"17bdd564-3f84-4f91-b392-2c7dbff9065c","html_url":"https://github.com/danekf/Ruby-Jungle","commit_stats":{"total_commits":55,"total_committers":2,"mean_commits":27.5,"dds":"0.018181818181818188","last_synced_commit":"0aa531bbc9cc72b4170f5c3d0ee5f4aeabe3b91a"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":"lighthouse-labs/jungle-rails","purl":"pkg:github/danekf/Ruby-Jungle","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danekf%2FRuby-Jungle","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danekf%2FRuby-Jungle/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danekf%2FRuby-Jungle/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danekf%2FRuby-Jungle/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/danekf","download_url":"https://codeload.github.com/danekf/Ruby-Jungle/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danekf%2FRuby-Jungle/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279011850,"owners_count":26085005,"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-12T02:00:06.719Z","response_time":53,"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":["cypress","rails6","ruby","ruby-on-rails","webpack-dev-server"],"created_at":"2024-09-26T15:03:38.333Z","updated_at":"2025-10-12T15:35:58.224Z","avatar_url":"https://github.com/danekf.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ca name=\"readme-top\"\u003e\u003c/a\u003e\n# Jungle\n\n\u003cdiv align=\"center\"\u003e\n  \u003ca  href = 'https://github.com/danekf/Ruby-Jungle'\u003e\n    \u003cimg src = images/home.png width = 70%\u003e \u003c/a\u003e\n\u003c/div\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003eTable of Contents\u003c/summary\u003e\n  \u003col\u003e\n    \u003cli\u003e\u003ca href=\"#about-the-project\"\u003eAbout The Project\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#Setup\"\u003eSetup\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#Database\"\u003eDatabase\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#Stripe-Testing\"\u003eStripe Testing\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#Dependencies\"\u003eDependencies\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#Using-Jungle\"\u003eUsing Jungle\u003c/a\u003e\u003c/li\u003e\n      \u003cul\u003e\n        \u003cli\u003e\u003ca href=\"#Client-Example\"\u003eClient Example\u003c/a\u003e\u003c/li\u003e\n        \u003cli\u003e\u003ca href=\"#Admin-Example\"\u003eAdmin Example\u003c/a\u003e\u003c/li\u003e\n      \u003c/ul\u003e\n      \u003cli\u003e\u003ca href=\"#Roadmap\"\u003eRoadmap\u003c/a\u003e\u003c/li\u003e\n  \u003c/ol\u003e\n\u003c/details\u003e\n\u003cbr\u003e\n\n# About the project\nA mini e-commerce application built with Rails 6.1 for purposes of learning rails. Implements secure user registration and login. Admin pages locked behind simple authentication allow admin to add products or categories.\n\nProject uses stripe integration to process payments from the cart and then presents the user with an itemized list of their order.\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\u003cbr\u003e\n\n## Setup\n\n1. Run `bundle install` to install dependencies\n2. Create `config/database.yml` by copying `config/database.example.yml`\n3. Create `config/secrets.yml` by copying `config/secrets.example.yml`\n4. Run `bin/rails db:reset` to create, load and seed db\n5. Create .env file based on .env.example\n6. Sign up for a Stripe account\n7. Put Stripe (test) keys into appropriate .env vars\n8. Run `npm run start-jungle` to start the server\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\u003cbr\u003e\n\n## Database\n\nIf Rails is give you an error about authentication to the database, uncomment the user and password fields from `config/database.yml` in the development and test sections, and replace if necessary the user and password `development` to an existing database user.\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\u003cbr\u003e\n\n## Stripe Testing\n\nUse Credit Card # 4111 1111 1111 1111 when testing checkout. This is a dummy credit card that will automatically be accepted and logged to your stripe dashboard.\n\nMore information in their docs: \u003chttps://stripe.com/docs/testing#cards\u003e\n\n## Dependencies\n\n- Rails 6.1 [Rails Guide](http://guides.rubyonrails.org/v6.1/)\n- Bootstrap 5\n- PostgreSQL 9.x\n- Stripe\n- Cypress 9.7.0\n- Webpack-dev-server\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\u003cbr\u003e\n\n# Using Jungle\nThe following examples will show useage of the jungle project from the client perspective as well as admin specific tools.\n\n## Client Example\nWhen a client first loads the page, they are presented with a homepage that lists the latest products, as well as a description of what jungle is all about.\n\n\u003cdiv align = \"center\"\u003e\n  \u003cimg src = images/home-products.png width = 90%\u003e \u003c/a\u003e\n\u003c/div\u003e\nThe top bar shows all categories of plants. Including a mock \"Pizza\" plant category created by a creative admin. It also will show whether the client is currently logged in, an admin dropdown menu and access to a cart.\n\nIt also lists the latest products from the database.\n\nWhen a client clicks on a category of product, a page is loaded and is populated with a list of all plants for that category. For example, this is what a user will see when they click on \"Shrubs\" in the top bar.\n\n\u003cdiv align = \"center\"\u003e\n  \u003cimg src = images/product-category.png width = 90%\u003e \u003c/a\u003e\n\u003c/div\u003e\n\nThis would be the page if a user chooses to explore the rare \"Pizza\" plant category, as another example.\n\n\u003cdiv align = \"center\"\u003e\n  \u003cimg src = images/product-pizza.png width = 90%\u003e \u003c/a\u003e\n\u003c/div\u003e\n\nWe can see that only a single plant is loaded in this case.\n\n\u003cbr\u003e\nA user can also click on any product card to load a page with details of that plant.\n\n\u003cdiv align = \"center\"\u003e\n  \u003cimg src = images/product-details.png width = 90%\u003e \u003c/a\u003e\n\u003c/div\u003e\n\nWhen a user clicks on ADD on any product card, the product is added to their cart.\n\n\u003cdiv align = \"center\"\u003e\n  \u003cimg src = images/cart.png width = 90%\u003e \u003c/a\u003e\n\u003c/div\u003e\n\nWe can see that the cart has changed to now show that there is (1) item in the cart.\n\nA user is then able to checkout. Clicking on the \"Pay with card\" button will allow a user to pay with their credit card using stripe. A developper will then use the provided stripe test card number to process the payment.\n\n\u003cdiv align = \"center\"\u003e\n  \u003cimg src = images/checkout.gif width = 90%\u003e \u003c/a\u003e\n\u003c/div\u003e\n\nThe user is then presented with an itemized order confirmation.\n\u003cdiv align = \"center\"\u003e\n  \u003cimg src = images/order-complete.png width = 90%\u003e \u003c/a\u003e\n\u003c/div\u003e\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\u003cbr\u003e\n\n## Admin Example\nThere is also an admin control panel that allows basic overview of all categories, number of products, etc. It also allows an admin to manage products, create new products and categories.\n\nWhen a new category is created, a link in the top nav bar is automatically created.\n\nWhen clicking on the admin secition, Jungle will ask for the admin User and password. Once logged in sucessfully, the admin can browse any admin page and make changes.\n\n\u003cdiv align = \"center\"\u003e\n  \u003cimg src = images/admin-login.gif width = 90%\u003e \u003c/a\u003e\n\u003c/div\u003e\n\nFor example, an admin can click on the +New product button on the all products page. Here they are able to add a new product and select from a dropdown menu for which category it belongs in.\n\n\u003cdiv align = \"center\"\u003e\n  \u003cimg src = images/admin-newProduct.png width = 90%\u003e \u003c/a\u003e\n\u003c/div\u003e\n\nThe admin can do the same for a new category, such as the delightful and ficticious Pizza category.\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\u003cbr\u003e\n\n# Testing\n\nTesting uses cypress. To run cypress testing run:\n\n```sh\nbin/rails cypress:run\n```\nTesting files are located under cypress/integration.\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\u003cbr\u003e\n\n# Roadmap\n\n\u003cul\u003e\n\u003cli\u003e[ ] Email copy of receipt to client, on order completion\u003c/li\u003e\n\u003cli\u003e[ ] Add user rating to products\u003c/li\u003e\n\u003cli\u003e[ ] Increase cypress testing to include all new features and admin functions.\n\u003cli\u003e[ ] (Stretch Goal) Create real world pizza plant\u003c/li\u003e\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\u003cbr\u003e","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdanekf%2Fruby-jungle","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdanekf%2Fruby-jungle","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdanekf%2Fruby-jungle/lists"}