{"id":25758002,"url":"https://github.com/aj-rom/hike-it-up","last_synced_at":"2026-05-12T21:04:08.587Z","repository":{"id":42395306,"uuid":"341042135","full_name":"aj-rom/hike-it-up","owner":"aj-rom","description":"A Sinatra web-application to share and rate hiking trails all around the world. ","archived":false,"fork":false,"pushed_at":"2023-03-16T07:45:53.000Z","size":136,"stargazers_count":0,"open_issues_count":3,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2024-05-21T03:19:46.328Z","etag":null,"topics":["activerecord","bcrypt","mvc-architecture","postgresql","rack","ruby","sinatra","web-application"],"latest_commit_sha":null,"homepage":"https://hike-it-up.herokuapp.com/","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aj-rom.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-02-22T01:06:36.000Z","updated_at":"2024-05-21T03:19:46.328Z","dependencies_parsed_at":"2023-01-23T19:45:28.246Z","dependency_job_id":null,"html_url":"https://github.com/aj-rom/hike-it-up","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aj-rom%2Fhike-it-up","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aj-rom%2Fhike-it-up/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aj-rom%2Fhike-it-up/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aj-rom%2Fhike-it-up/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aj-rom","download_url":"https://codeload.github.com/aj-rom/hike-it-up/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240891637,"owners_count":19874223,"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","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":["activerecord","bcrypt","mvc-architecture","postgresql","rack","ruby","sinatra","web-application"],"created_at":"2025-02-26T16:36:22.747Z","updated_at":"2026-05-12T21:04:03.549Z","avatar_url":"https://github.com/aj-rom.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Hike It Up\nA website to view and rate the best hiking spots around!\nThis project is built on [Ruby](https://www.ruby-lang.org/) using [Sinatra](http://sinatrarb.com/), [ActiveRecord](https://guides.rubyonrails.org/active_record_basics.html), and utilizing [PostgreSQL](https://www.postgresql.org/) for data storage. *Hike It Up* was built as a portfolio project for the [Flatiron School](https://flatironschool.com/). \n\n## Quick Links\n  - [Running The Application](#running-the-application)\n  - [Architecture](#architecture-information)\n  - [Contributing](#contributing)\n  - [Credits](#credits)\n  - [License](https://github.com/CoachLuck/hike-it-up/tree/main/LICENSE)\n\n## Why?\nThis was a great way to get used to building out a project using the [MVC](https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller) architecture. I wanted to explore the possibilites of using [Sinatra](http://sinatrarb.com/) to build a web application and create object relations between users and something. Taking one of my passions, hiking, and merging it with my new found knowledge I arrived at *Hike It Up*. \n\n### What I hoped to learn\n  - How to successfully authenticate a user within a sinatra application using bcrypt\n  - How to utilize HTML forms along with Sinatra to perform CRUD based operations\n  - How to build a MVC structured web application\n\n## Running the Application\nPreview the production server on heroku [here](https://hike-it-up.herokuapp.com/).\n\nTo Run this project locally:\n  1. Clone this project.\n  2. CD into the projects directory.\n  3. Run `bundle install`\n  4. Run `rake db:setup` to initialize your PostgreSQL database\n  5. Start your server with either `puma` or `puma -C config/puma.rb`\n\n## Architecture Information\n  - [MVP Structure](#most-viable-product-structure)\n  - [Stretch Features](#stretch-features )\n\n### Most Viable Product Structure\nThinking of the base structure I went ahead and created models for `users`, `trails`, `reviews`, and `trail images`. Although only needed views for my `users` and `trails` models, as the others were children of these models. I ended up creating a personal `reviews` route for logged in users so they can easily manage their reviews.\n\nThus the structure for our objects looked like:\n```ruby\n\n# user\n  has_many: :reviews\n  has_many: :trails, through: :reviews\n\n# trail\n  has_many: :reviews\n  has_many: :trail_images\n  \n  # active record will automatically set this association for us\n  # has_many: :users, through: :reviews\n  \n# review\n  belongs_to: :user\n  belongs_to: :trail\n  \n# trail image\n  belongs_to: :trail\n\n```\n\n#### What can anyone do?\n  - View all trails\n  - View all users\n\n#### What can a user do if they log in?\n  - Edit their own profile information\n  - Edit trail information\n  - Leave a review on a trail\n\nTo implement this I created [migrations](https://www.github.com/CoachLuck/hike-it-up/tree/main/db/migrate) using **Rake** to create the associated tables for the models I just created.\n\n### Stretch Features\n\n#### What can anyone do?\n  - [ ] Allow users to search trails by name\n  - [ ] Allow users to search for a user by name/username\n\n#### What can a user do if they log in?\n  - [X] Add an image to a trail\n  - [X] [Add captions to images](https://www.github.com/CoachLuck/hike-it-up/tree/main/db/migrate/20210222173851_add_captions_to_images.rb)\n  - [X] Delete/Edit their reviews\n\n## Contributing\nBug reports and pull requests are welcome on GitHub at https://github.com/'coachluck'/hike-it-up. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](https://github.com/CoachLuck/elem_info/blob/main/CODE_OF_CONDUCT.md) code of conduct.\n\n## Credits\n* [bcrypt](https://github.com/codahale/bcrypt-ruby) - Open-source password hashing algorithm\n* [corneal](https://github.com/thebrianemory/corneal) - Sinatra app generator\n* [tux](https://github.com/cldwalker/tux) - Dresses up Sinatra in a shell\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faj-rom%2Fhike-it-up","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faj-rom%2Fhike-it-up","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faj-rom%2Fhike-it-up/lists"}