Skip to content

Latest commit

 

History

History
147 lines (88 loc) · 7 KB

README.md

File metadata and controls

147 lines (88 loc) · 7 KB

Logo

Saint Louis Farms

Final project for LaunchCode's 2023 Liftoff Program.

Saint Louis Farms is a full-stack web application that enables farmers to sell their products directly to consumers.

The application was designed with three types of users in mind: farmers, clients, and non-authenticated users.

Farmers have the ability to set up a store. They can manage their inventory by uploading, deleting, and updating items. Farmers can customize their store settings according to their needs. They have access to a dashboard that provides real-time updates on past and current orders well as a customizable farmer profile. Two different product views are available for farmers: a condensed table view for inventory management and a store preview option that allows them to see how products will appear for clients.

Clients can conveniently place orders from farms using a shopping cart feature. They can also track the live status of their orders in through three stages: unconfirmed, confirmed, and fulfilled. The system will automatically adjust the inventory of ordered items to ensure availability. Additionally, clients have access to a comprehensive order history log where they can review all of their purchases.

Non-authenticated users are able to browse all farms but cannot place orders. Any attempt made by non-authenticated users to perform actions other than viewing farms or stores will be redirected to the login page.

Authors

Features

  • Full CRUD database operations (Create, Read, Update, Delete)
  • User authentication with password hashing
  • Custom measurements and product types for farmers
  • Quick Edit and Full Edit functionality for farmer products
  • Image processing for products and farmer profiles
  • Product search feature in both farmer product views
  • Dynamic shopping cart that displays each item
  • Order processing - the ability to pull ordered items from inventory, confirm orders, fulfill orders
  • Order logging - the ability for both farmers and clients to review the details of all orders
  • State-driven navbar that changes according to the type of user (farmer, client, or non-authenticated)

Tech Stack

Front-end: Bootstrap, JavaScript, Nerd Fonts

Back-end: Java, Spring Boot, Thymeleaf, MySQL, Hibernate

Run Locally

Note: This project requires Java 11

  1. Install MySQL Workbench and create a new MySQL connection.

  2. Right-click and save this demo database.

  3. Import the demo database into MySQL Workbench.

  4. Create a user named stlfarms with a password of 3f6398041156215b and give the user all permissions.

  5. Install IntelliJ IDEA.

  6. Clone the project.

git clone https://github.com/kim-n-lee/saintlouisfarms.git
  1. Open the project in IntelliJ.
idea64.exe saintlouisfarms
  1. Find and click the Gradle icon gradle icon.

  2. In the Gradle menu, find bootRun in saint-louis-farms > tasks > application > bootRun.

Gradle pane

  1. Right-click bootRun and select Modify Run Configuration....

Modify run configuration

  1. Find the "Environment Variables" field and paste the following string then hit "Apply".
dbUserName=stlfarms;db=stlfarms;dbPassword=3f6398041156215b

Gradle database credentials

  1. Double click "bootRun" in the Gradle menu. After about 15 seconds, everything should have loaded correctly and you should see Tomcat started on port(s): 2020 near the bottom of the run pane.

Tomcat serving on 2020

  1. Finally, open your browser of choice and go to http://localhost:2020/.

Demo Users:

Farmers:

Username Password
[email protected] password
[email protected] password
[email protected] password
[email protected] password
[email protected] password
[email protected] password

Clients

Username Password
[email protected] password

Acknowledgements

Screenshots

Homepage

All Farms

Storefront

New Item with Preview

Confirm Order

Farmer Product View

Client Order Log

Farmer Order Log