Tool Shed
A one stop shop to find tools available to rent near you
Running Production Websiteβ
Simply visit this link: Toolshed Website. Happy tool hunting!
Running Locallyβ
npm install
npm run local
Code Treeβ
./
| index.js # project entry point
| boilerplate.js # Core webserver stuff
| models.js # where Sequelize models are defined
| routes.js # where routes are defined.
| webpack.config.js # webpack config file
| webpack/ # frontend code that gets bundled via webpack
| public/ # gets served raw under <scheme>://<hostname>:<port>/public/
| scripts/ # devops scripts
| data/ # data you can use, not explicity used by app
| validators/ # code for validating input
+-- templates/
| | base.html # base template file
| | ... more .html files that extend base.html
Generating documentationβ
To generate up-to-date documentation, run npm run docs
. This will create the necessary .md file for the documentation site.
Keywordsβ
Section 704, JavaScript, Google Maps API, Node, NodeJS, Database, Buy, Sell, Trade, Tool Shed, Web-based Application
Project Abstractβ
This document proposes a web-based application that will allow its users to share, buy, sell, and trade tools of all kinds. Once users are registered with Tool Shed accounts, they can list their own tools and equipment available to the community. Users will also be able to see what tools are available from members of the surrounding community. Tool Shed is meant to be a low-cost solution for high-cost tools making them available at a fraction of the cost set by the owner.
High Level Requirementβ
Users will begin by registering online accounts using the Create Account option. After accounts are created, the user will manage tools they own and want to make available to the public, setting a daily rate, and availability. Users will also be able to search the local community using keywords like, βTable saw,β or βMiter Saw,β and view low cost locally owned tools available. Once a tool is selected for either buy, rent, or sell, the users will be able to make a request with the owner of the tool and agree on a data range and price. Users will be prompted to return the tool within an agreed window set by both users.
Conceptual Designβ
This application will be programmed purely in javacript (frontend and backend). Postgres will be the database, and web browsers will request pages and data from the backend (that queries the database) that are rendered via frontend code.
Backgroundβ
With many employees working from home and setting up home offices, Do It Yourself (DIY) projects are at an all-time high. With internet resources and basic knowledge, you can get a significant amount of work done without hiring an expensive professional to complete the job. The alternative to purchasing an expensive tool for a few days of use could be renting the tool from someone in the local community that has the tool available and not in use. Users will profit from what is sitting in their tool shed while the items are not being used. This will help keep the cost low for DIY projects.
Required Resourcesβ
This is a purely JavaScript web application project. To run locally (or ill-advisedly in production ;p), all you need is to install Docker and NodeJS >=v19. If you're running the server in production, you only need NodeJS should stop using the dockerized postgres and use a real postgres. You can configure how the server connects to the database via PostgreSQL env vars..
To run this project, you'll also need to run this geocoder.
Collaboratorsβ
Aaron Thomas | Cameron Metzinger | Destinee Sheung | Justin Gallagher | Kat Tejada | Nathaniel Symer |