Contributors Forks Stargazers Issues

Lend-A-Toolza

About This Project

Important to Note

This is an SOA app and needs both this repo (back end) AND GitHub (front end) in order to be fully functioning.

Mod 3 Group Consultancy Project

Lend-A-Toolza is a crowdsourced tool lending library web application. Designed for folks looking to borrow a particular tool within any given area/location. Lend-A-Toolza has the ability for registered users to upload their lendable tool with a picture, a description of the tool and a borrowing period as well as choose to borrow from a list of available tools in their area.

Purpose

The purpose of the backend for the Lend-A-Toolza app is to support the overall functionality and effectiveness of the platform. Here are some key purposes of the backend in relation to the project:

Data management: The backend serves as the central hub for storing, organizing, and managing the data associated with tools, store locations and AI generated tool recommendations. It provides the necessary infrastructure and databases to efficiently handle the large volume of information generated by the app's users.

User-generated content management: The backend handles the uploading, storage, and retrieval of user-generated content, such as pictures, descriptions, and borrowing period and the tool's status. It ensures efficient data handling and metadata management. The backend enables users to contribute and share their tools, enriching the platform's content and informing the community.

Community interaction and engagement: The backend supports community-driven features, such as adding tools to be loaned. In the future it will enable users to interact with each other through comments, likes, and replies, fostering a sense of community and encouraging user engagement. The backend ensures smooth communication and real-time updates within the app, enhancing the overall user experience.

Overall, the purpose of the backend in the Lend-A-Toolza app is to support seamless data management and community engagement. It plays a vital role in ensuring the app's functionality, security, and user satisfaction, ultimately enhancing the experience of users searching for available tools.

Built With

  • Ruby
  • Postgresql
  • Render
  • AWS
  • Rails
  • Visual Studio Code
  • Postman Badge
  • Love

Running On

  • Rails 7.0.6
  • Ruby 3.2.2

Getting Started

To get a local copy, follow these simple instructions

Installation

  1. Fork the Project
  2. Clone the repo
git clone git@github.com:sicknacco/lend-a-toolza-be.git 
  1. Install the gems
bundle install
  1. Create the database
rails db:{create,migrate}
  1. Add Figaro
bundle exec figaro install
  1. Get API keys from Google and OpenAI
    Google OpenAI Badge

  2. Add your keys to your application.yml like this:

GOOGLE_API_KEY: <your_key_here>
OPENAI_API_KEY: <your_key_here>
  1. Create your Feature Branch
git checkout -b feature/AmazingFeature
  1. Commit your Changes
git commit -m 'Add some AmazingFeature' 
  1. Push to the Branch
git push origin feature/AmazingFeature
  1. Open a Pull Request

Endpoints Used

    
    get '/api/v1/stores/:location/:radius' -Search for Nearby Stores
    get '/api/v1/chat_request' -Get Suggestions for Tools 
    get '/api/v1/tools/search' -Search for Tool by Location
    get '/api/v1/users/:id/tools' -Displays all the tools for a specific user
    post '/api/v1/users/:id/tools' -Allows a user to add tool to their toolbox
    patch '/api/v1/users/:id/tools/:id' -Allows a user to borrow a tool
    delete '/api/v1/users/:id/tools/:id' -Allows a user to delete a tool from thier toolbox
    
  

Schema

  create_table 'tools', force: :cascade do |t|
    t.string 'name'
    t.string 'description'
    t.string 'image'
    t.string 'status'
    t.integer 'user_id'
    t.string 'address'
    t.integer 'borrower_id'
    t.datetime 'created_at', null: false
    t.datetime 'updated_at', null: false

Contributing contributions welcome

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!

API's Used

Google
OpenAI Badge
GitHub

Authors

  • Crow Rising GitHub LinkedIn
  • Nick Sacco GitHub LinkedIn
  • Nick Tassinari GitHub LinkedIn
  • Javen Wilson GitHub LinkedIn

Planning Tools