We're making it easier to find and borrow tools from your neighbors!
- As a user, I want to see a list of available tools in my neighborhood.
- As a user, I want the ability to create an account.
- As a registered user, I want to post my own tools available for others to borrow.
- As a registered user, I want to be able to request available tools.
- GIVEN a tool-lending site
- WHEN I visit the site for the first time
- THEN I am presented with the homepage, which includes a site intro and welcome
- WHEN I click on Login or any other links in the navigation
- THEN I am prompted to either sign up or sign in
- WHEN I choose to sign up
- THEN I am prompted to provide a username, email and password
- WHEN I click on the sign-up button
- THEN my user credentials are saved and I am logged into the site
- WHEN I revisit the site at a later time and choose to login
- THEN I am prompted to enter my email and password
- WHEN I am logged in to the site
- THEN I see navigation links for the homepage, my toolbox, my neighborhood, a search bar, and the option to log out
- WHEN I am logged in to the site,
- THEN I am presented with the homepage, which includes options for tool categories
- WHEN I click on a tool category on the homepage
- THEN I a presented with all tools posted by user's in my neighborhood in that category
- WHEN I click on an individual tool that is not my tool,
- THEN I am presented with that tool's name, description, clickable owner's name, and a button to request to borrow the tool
- WHEN I click the owner's name on a tool,
- THEN I am presented with a list of that user's tools
- WHEN I click on the button to request to borrow a tool
- THEN I am notified that an email was sent and an email is sent to the tool owner with the request
- WHEN I click on my toolbox in the navigation bar
- THEN I can see all of the tools that I've posted and an option to add a tool
- WHEN I click on the add a tool button
- THEN I am prompted to provide a tool name, desciption, and category
- WHEN I submit a new tool,
- THEN I am presented with my updated toolbox with the new tool added
- WHEN I click on one of my tool's
- THEN I am presented with the tool name, the tool description and have the option to edit or delete the tool
- WHEN I click on the edit button
- THEN I am presented with a form to update the tool name, description, and/or category
- WHEN I submit an edited tool
- THEN I am presented with that updated tool's name, description, and/or category
- WHEN I click on the delete tool button
- THEN I am presented with my updated toolbox page with the tool deleted
- WHEN I enter a search term in the search bar
- THEN I am presented with all tools, in all neighborhoods, whose title or description match the search term
- WHEN I click on my neighborhood name in the navigation bar
- THEN I can see all of the tools available in my neighborhood with category icon
- WHEN I click on the logout option in the navigation
- THEN I am signed out of the site
Fork this repo and download the files to your local environment. Install the dependencies and create a .env file.
-
Fork the repository from GitHub to your profile.
-
Clone the repository down to your local machine in command-line using:
git clone. -
Node.js is required to run this application. Click here for instructions on installing Node.js.
-
Install the required dependices to your cloned directory in command-line using:
npm installand create a .env file to store your sensitive variables.- Or install the packages individually...
- Install express to your cloned directory in command-line using:
npm install express. - Install mysql2 to your cloned directory in command-line using:
npm install --save mysql2 - Install dotenv to your cloned directory in command-line using:
npm install dotenv - Install sequelize to your cloned directory in command-line using:
npm install sequelize - Install connect-session-sequelize to your cloned directory in command-line using:
npm install connect-session-sequelize - Install express-handlebars to your cloned directory in command-line using:
npm install express-handlebars - Install express session to your cloned directory in command-line using:
npm install express-session - Install bcrypt to your cloned directory in command-line using:
npm install bcrypt - Install nodemailer to your cloned directory in command-line using:
npm install nodemailer
- Install express to your cloned directory in command-line using:
- Check if you already have Node.js in command-line by typing
node. - If you have Node.js on your machine, a message similar to
Welcome to Node.jswill appear. - If you do not have Node.js, an error message will appear and you need to download it.
- To download Node.js, click here.
- After download and installation is complete, restart your command-line terminal and redo step 1 to confirm a successful installation.
- After Node.js is on your local machine, return to the installation instructions for this project's application above.
- Or install the packages individually...
If cloned down to your computer...
- Add an .env file with your MySQL username, database name, and MySQL password, gmail email address, and email password.
- Navigate to the directory of the application in your terminal using
cd, if not already there. - If you haven't already, be sure you followed all installation instructions to install node, express, dotenv, express-handlebars, express-session, connect-session-sequelize, brcypt, sequelize, mysql2, and nodemailer dependencies.
- Create your database by running the schema.sql file (right-clicking on the schema file and selecting Run MySQL Query).
- Seed your database in CLI using:
npm run seed. - Initialize the application in CLI using:
npm start. - Go to https://localhost:3001 to visit application
If accessing deployed Heroku application...
- View homepage welcome and intro.
- Click Login to login or sign up.
- View all tool categories on logged in homepage.
- Click a category to view all tools in your neighborhood in that neighborhood.
- Click a tool to view tool name, description, owner, and request to borrow button.
- Click the "Request to Borrow" button to send an email to the tool's owner with templated request email.
- Click "My Toolbox" to view all of your posted tools and the option to add a new tool.
- Click Add a Tool to add a tool to your toolbox for other neighbors to request to borrow.
- Click one of your tools in your toolbox to get the option to edit or delete the tool.
- Click the edit tool button to update the tool's name, description or category.
- Click the delete tool button to remove the tool from your toolbox and the site.
- Click your neighborhood name in the navigation bar to view all tools available in your neighborhood.
- Type and submit a term in the search bar to view all tools with a title or description containing that search term.
- On an individual tool, click the tool owner's name to view all of that user's tools.
- Logout to end your session and close access to your toolbox.
Homepage (Logged out):
Mobile Homepage (Logged In):
Login or Create Account page:
My Toolbox:_
Create tool page:
Update tool form:
- JavaScript
- Node.js
- Express.js
- MySQL
- Sequelize
- Handlebars
- Bcrypt
- Nodemailer
- Materialize
- Borrowed status - each tool can be marked as available or in use
- Distance calculator - show a user distance to a tool and sort by distance
- User and tool ratings - users can rate borrowers, lenders, and tools and leave reviews for other user's to see
Anh Cu, Shelley McHardy, Corey Parker, & Meredith Wall