OutFitMe is a full-stack wardrobe management application that generates weather-appropriate outfits using clothing uploaded by each individual user.
Users can create an account, upload clothing items, generate weather-appropriate outfits, save favourite combinations, and manage their personal wardrobe. Each user's wardrobe is stored independently, ensuring complete separation of wardrobe data between user accounts.
Table of Contents
- User authentication with JWT
- Secure password hashing using bcrypt
- Upload wardrobe items
- Weather-based outfit generation
- Favourite outfit management
- User-specific wardrobes
- Responsive mobile-first design
- Profile management
- Secure user-specific wardrobe storage
- Image zoom
- Toast notifications
- Loading and error states
- Unit and integration testing
client/
├── components/
├── hooks/
├── pages/
├── services/
├── store/
├── tests/
└── types/
server/
├── controllers/
├── middleware/
├── models/
├── routes/
├── tests/
├── utils/
└── validation/
To run OutFitMe locally, you'll need accounts for the following services:
- OpenWeather API
- Cloudinary
- MongoDB Atlas
-
Install the latest version of npm.
npm install -g npm
-
Create free accounts for:
-
- Once logged in, locate your username drop down in the navbar, and navigate to "My API Keys" and obtain an API key.
-
- Create an unsigned upload preset and note your Cloud Name, Upload Preset and Folder Name.
-
- Create a cluster and copy your MongoDB connection string.
-
-
Clone the repository.
git clone https://github.com/Sind96/OutFitMe.git
-
Install the frontend dependencies.
cd client npm install -
Install the backend dependencies.
cd ../server npm install
Create your own .env file and insert the API Keys as mentioned in (Prerequisites)
-
Copy the example environment files.
Backend cp .env.example .env
Frontend cd ../client cp .env.local.example .env.local -
Populate both environment files with your own credentials.
-
Start the backend.
cd ../server npm run dev -
Start the frontend.
cd ../client npm run dev
Distributed under the MIT License. See license.txt for more information.
