Project Info
This project did not submit a demo video on Devpost.
Inspiration
Both of us have creative backgrounds and exploring tech, wanted to create a tool that helps us. It created a digital wardrobe from pictures of your clothing and you select daily what clothes you will wear, and over time the app can see what clothes you are NOT wearing and suggest to sell the clothes on ecommerce cites like depop/grailed and it uses AI to generate descriptions-tags-title for you and uploads to the said website.
YourDrobe - Digital Wardrobe Management
A full-stack application for managing your wardrobe, creating outfits, and tracking clothing usage.
ποΈ Architecture
- Frontend: React + TypeScript + Vite + TailwindCSS
- Backend: FastAPI (Python 3.13)
- Database: MongoDB Atlas
- Authentication: JWT-based
π Prerequisites
- Python 3.13+
- Node.js 18+
- MongoDB Atlas account (free tier available)
π Quick Start
1. Backend Setup
# Navigate to backend directory
cd backend
# Create virtual environment
python3.13 -m venv venv
# Activate virtual environment
# On macOS/Linux:
source venv/bin/activate
# On Windows:
# venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
# Create .env file from example
cp .env.example .env
# Edit .env and add your MongoDB Atlas URI and other settings
# Get MongoDB URI from: https://cloud.mongodb.com
Required Environment Variables (in backend/.env):
APP_ENV=development
PORT=8000
MONGODB_URI=mongodb+srv://user:pass@cluster.mongodb.net/yourdrobe?retryWrites=true&w=majority
JWT_SECRET=your-super-secret-key-min-32-characters-long
JWT_EXPIRES_IN=604800
CORS_ORIGINS=http://localhost:5173,http://localhost:3000
Start the backend server:
uvicorn main:app --reload --port 8000
The backend will be available at http://localhost:8000
2. Frontend Setup
# Navigate to frontend directory
cd frontend
# Install dependencies
npm install
# Start development server
npm run dev
The frontend will be available at http://localhost:5173
ποΈ MongoDB Atlas Setup
- Create account at https://cloud.mongodb.com
- Create a new cluster (free tier M0 is sufficient)
- Create a database user with read/write permissions
- Whitelist your IP address (or use
0.0.0.0/0for development) - Get your connection string from the "Connect" button
- Add the connection string to
backend/.envasMONGODB_URI
π§ͺ Testing the Application
Backend Health Check
Visit http://localhost:8000/healthz to verify:
- Backend is running
- Database connection is established
Expected response:
{
"status": "healthy",
"database": "connected"
}
API Documentation
FastAPI provides automatic interactive API documentation:
- Swagger UI:
http://localhost:8000/docs - ReDoc:
http://localhost:8000/redoc
π Project Structure
yourdrobe/
βββ backend/
β βββ main.py # FastAPI application entry point
β βββ config.py # Settings management with Pydantic
β βββ database.py # MongoDB connection with Motor
β βββ requirements.txt # Python dependencies
β βββ .env.example # Environment variables template
β βββ .env # Your environment variables (not in git)
βββ frontend/
β βββ src/
β β βββ components/ # React components
β β βββ config/
β β β βββ api.ts # API configuration
β β βββ pages/ # Page components
β β βββ types/ # TypeScript types
β β βββ utils/ # Utility functions
β βββ package.json
β βββ vite.config.ts
βββ .gitignore
βββ README.md
π― Sprint 0 Status - β COMPLETED
Sprint 0 has been completed with the following deliverables:
- β FastAPI backend structure created
- β MongoDB connection implemented with Motor
- β
/healthzendpoint with database health check - β CORS middleware configured for frontend
- β Frontend API configuration created
- β
Git repository initialized with proper
.gitignore - β
Initial commit pushed to
mainbranch
π Next Steps (Sprint 1)
Sprint 1 will implement:
- User registration (signup)
- User login with JWT tokens
- User logout
- Protected routes and authentication middleware
π οΈ Development Workflow
- Create a
.envfile in thebackend/directory (copy from.env.example) - Start the backend server:
uvicorn backend.main:app --reload - Start the frontend dev server:
npm run dev(infrontend/directory) - Make changes and test via the frontend UI
- Commit changes to the
mainbranch after testing
π Notes
- The backend uses async/await with Motor for MongoDB operations
- All passwords will be hashed with Argon2 (Sprint 1+)
- JWT tokens expire after 7 days by default
- CORS is configured to allow requests from the frontend
π Troubleshooting
Backend won't start:
- Verify Python 3.13+ is installed:
python3 --version - Ensure virtual environment is activated
- Check that all dependencies are installed:
pip list - Verify
.envfile exists with correct values
Database connection fails:
- Verify MongoDB Atlas URI is correct
- Check that your IP is whitelisted in MongoDB Atlas
- Ensure database user has proper permissions
- Test connection in MongoDB Compass
Frontend can't connect to backend:
- Verify backend is running on port 8000
- Check CORS settings in
backend/main.py - Verify
API_BASE_URLinfrontend/src/config/api.ts
π License
This project is part of the YourDrobe application development.# yourdrobe
Analysis
View
Metric
- 3
- 3
Figures cover GitHub contributors during the hackathon window. A co-authored commit counts in full for each author, so per-member totals add up to more than the whole-team figures.
Technology
- CSSIn code
- FastAPIIn code
- HTMLIn code
- JavaScriptIn code
- PythonIn code
- ReactIn code
- Tailwind CSSIn code
- TypeScriptIn code
8 of 8 appear in the indexed code.
AI coding agents
No AI coding agent signals were found in this repository.
Detected from committed agent config files and commit authorship. Absence of a signal is not proof an agent was unused.
Codebase size
Source size
475 KB
Source files
86
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
4aidan/yourdrobe
99 files Β· 739 KB Β· @ 09b6edd
Structure
Interface
58 files Β· 59%Screens, components and styles rendered to the user.
Application logic
18 files Β· 18%Domain rules, services and shared utilities.
Supporting
Layers are inferred from where files sit in the tree, not from reading the code. A project that names its directories unconventionally will read oddly here β open the file browser to check anything the diagram implies.
Languages
- TypeScript47%
- YAML37%
- Markdown15%
- Python1%
- CSS1%
- JavaScript0%
- Other (1)0%
Share of indexed source by file size. Binary and vendored files are excluded.
Dependencies
frontend/package.json
npm Β· 67- @hookform/resolvers
- @radix-ui/react-accordion
- @radix-ui/react-alert-dialog
- @radix-ui/react-aspect-ratio
- @radix-ui/react-avatar
- @radix-ui/react-checkbox
- @radix-ui/react-collapsible
- @radix-ui/react-context-menu
- @radix-ui/react-dialog
- @radix-ui/react-dropdown-menu
- @radix-ui/react-hover-card
- @radix-ui/react-label
- @radix-ui/react-menubar
- @radix-ui/react-navigation-menu
- @radix-ui/react-popover
- @radix-ui/react-progress
- @radix-ui/react-radio-group
- @radix-ui/react-scroll-area
- +49 more
backend/requirements.txt
pypi Β· 6- fastapi
- motor
- pydantic
- pydantic-settings
- python-multipart
- uvicorn[standard]
Declared in the repositoryβs manifests at the indexed commit. A declared package is not proof it is used, and runtime dependencies are listed first.
This projectβs features have not been analysed yet.
Export this project's context (description, README, evidence, key source files) to chat with an AI agent elsewhere.