SLOMarket is a local marketplace platform for buying and selling goods within the San Luis Obispo area. Users can list items, browse available goods, and communicate with sellers in a user-friendly environment.
Frontend Framework: Next.js, which is a React framework that enables functionality such as server-side rendering and generating static websites for React-based web applications.
UI Library: Material-UI (now MUI), which is a React component library that implements Google's Material Design.
Authentication and Database: Firebase, which includes Firestore for your NoSQL database needs and Firebase Auth for handling user authentication.
State Management: React's built-in hooks such as useState and useEffect, with potential context provided by Firebase Auth's user state.
Routing: Next.js’s built-in routing, with navigation handled by next/navigation.
- User authentication and profiles.
- Listing creation with image upload capabilities.
- Real-time search and filter options.
- Direct messaging between buyers and sellers (coming soon)
- Responsive design for mobile and desktop use.
These instructions will get you a copy of the project up and running on your local machine for development and testing purposes.
Before you begin, ensure you have met the following requirements:
- You have installed the latest version of Node.js and npm.
- If you are hosting your own Firebase instance, you must have a Firebase account and create a project to obtain your Firebase config keys.
To install SLOMarket and run it using our Firebase instance (highly recommended), follow these steps:
- Clone the repository:
git clone https://github.com/CSC307Fall2023/slomarket- Navigate to the project directory:
cd slomarket- Install dependencies:
npm install # you may need to add the -f flag to resolve errors (this doesn't break anything)- Set up your Firebase configuration by creating a
.env.localfile in the root of your project and adding your Firebase keys:
NEXT_PUBLIC_FIREBASE_API_KEY=your_api_key
NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=your_auth_domain
NEXT_PUBLIC_FIREBASE_PROJECT_ID=your_project_id
NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET=your_storage_bucket
NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=your_messaging_sender_id
NEXT_PUBLIC_FIREBASE_APP_ID=your_app_id- Ensure you have a Firebase admin key file named
slomarket_admin_key.jsonin the base path.
If you were not provided the API keys or the admin key file, please contact us for this information.
- Start the development server:
npm run devThe application should now be running on http://localhost:3000.
If you want to perform server-side admin actions, please contact us for an admin key.
To deploy SLOMarket on your own Firebase instance, please follow the steps:
- run:
npm run build- run:
firebase deploy --only hosting- Find your API keys from the Firebase console in Project Settings > General. Then go to Project Settings > Service accounts and generate an admin key file. Then follow steps 4 and 5 from the previous section to install these keys.
After logging in, users can create listings by providing details about the item they want to sell, including images, description, price, and location. Users can browse listings, filter by categories, and send messages to sellers to inquire more about items they are interested in.
We welcome contributions. To contribute to SLOMarket, follow these steps:
- Fork this repository.
- Create a branch:
git checkout -b <branch_name>. - Make your changes and commit them:
git commit -m '<commit_message>' - Push to the original branch:
git push origin <project_name>/<location> - Create the pull request.
Alternatively, see the GitHub documentation on creating a pull request.
If you encounter any issues, please open an issue in the repository, detailing the problem and steps to reproduce it.
-
The delete account and reset password buttons on the setting page are functional. However, as of right now, they only work if the user has recently logged in and doesn't require reauthentication.
-
The radio buttons do not adjust privacy settings. They only update on the frontend.
- Implement a rating and review system for users and listings.
- Add payment processing for secure transactions.
- Develop a recommendation engine for item suggestions.
- Justin Lau
- Ritvik Durgempudi
- Wesley Tam
- Hayden Yakligian
- Caden Tierney
For CSC307 Fall 2023 @ Cal Poly SLO.
Thanks to the contributors who have helped to make this project what it is!
This project is licensed under the MIT License - see the LICENSE.md file for details.
As of Deceember 2023, SLOMarket is in beta. We are actively developing new features and addressing user feedback.