loom is a revolutionary dating app that goes beyond superficial bios to create meaningful human connections based on psychological principles, behavioral patterns, communication styles, and deeper personality insights.
- Psychological Matching: Advanced compatibility based on Big Five personality traits, love languages, and communication styles
- Personality Quiz: Comprehensive assessment covering personality, love languages, communication style, and lifestyle preferences
- Smart Recommendations: Algorithm that learns from your preferences to suggest the most compatible matches
- Real-time Chat: Secure, real-time messaging system for matched users
- Compatibility Scoring: Detailed breakdown of compatibility factors with explanations
- Node.js with Express.js
- MongoDB with Mongoose for data modeling
- JWT authentication with bcrypt password hashing
- Socket.IO for real-time chat functionality
- Express Validator for input validation
- React 18 with modern hooks
- TailwindCSS for styling
- React Router for navigation
- Axios for API calls
- Socket.IO Client for real-time features
- Framer Motion for animations
- React Hot Toast for notifications
loom/
├── client/ # React frontend
│ ├── src/
│ │ ├── components/ # Reusable components
│ │ ├── contexts/ # React contexts (Auth, Socket)
│ │ ├── pages/ # Page components
│ │ └── main.jsx # App entry point
│ ├── package.json
│ └── vite.config.js
├── server/ # Express backend
│ ├── models/ # Mongoose schemas
│ ├── routes/ # API routes
│ ├── middleware/ # Custom middleware
│ ├── utils/ # Utility functions
│ ├── index.js # Server entry point
│ └── package.json
└── README.md
- Node.js (v16 or higher)
- MongoDB (local or cloud instance)
- npm or yarn
-
Clone the repository
git clone <repository-url> cd loom
-
Install dependencies
npm run install-all
-
Set up environment variables
cd server cp env.example .envEdit
.envwith your configuration:PORT=5000 MONGODB_URI=mongodb://localhost:27017/loom JWT_SECRET=your_jwt_secret_key_here NODE_ENV=development
-
Start MongoDB
# If using local MongoDB mongod -
Run the application
# From the root directory npm run devThis will start both the backend server (port 3000) and frontend development server (port 5173).
# Terminal 1 - Backend
cd server
npm run dev
# Terminal 2 - Frontend
cd client
npm run devThe loom compatibility engine calculates matches based on multiple psychological factors:
- Openness: Creativity, curiosity, and openness to new experiences
- Conscientiousness: Organization, discipline, and goal-oriented behavior
- Extraversion: Social energy, assertiveness, and positive emotions
- Agreeableness: Trust, cooperation, and empathy
- Neuroticism: Emotional stability and stress response
- Words of Affirmation: Verbal expressions of love and appreciation
- Acts of Service: Actions that demonstrate care and support
- Receiving Gifts: Thoughtful presents and gestures
- Quality Time: Undivided attention and meaningful moments
- Physical Touch: Affectionate contact and intimacy
- Directness: How straightforward someone is in communication
- Emotional Expression: How openly emotions are shared
- Conflict Resolution: Approach to handling disagreements
- Humor: Use and appreciation of humor in relationships
- Social Activity: Preference for social vs. solitary activities
- Adventure: Openness to new experiences and spontaneity
- Routine: Preference for structure vs. flexibility
- Work-Life Balance: Priorities between career and personal life
- Core Values: Fundamental beliefs and principles
- Shared Interests: Common hobbies and activities
- Basic information (name, email, age, gender, location)
- Authentication data (password hash, JWT tokens)
- Profile completion status
- Extended user information (bio, photos, interests)
- Psychological assessment results
- Privacy settings and preferences
- Compatibility scores and breakdowns
- Match status (potential, mutual, declined)
- Chat room associations
- Real-time chat messages
- Read status and timestamps
- Message reactions and editing
- JWT-based authentication with 7-day expiration
- Password hashing using bcrypt with salt rounds of 12
- Protected routes with middleware validation
- Secure token storage in localStorage
- Socket.IO integration for instant messaging
- Room-based chat system
- Message delivery confirmation
- Online/offline status indicators
- Modern, responsive design with TailwindCSS
- Gradient color schemes and smooth animations
- Mobile-first approach
- Accessibility considerations
- Loading states and error handling
- AI Love Coach: Personalized insights and relationship advice
- Advanced ML Algorithm: Machine learning-based compatibility scoring
- Video Chat Integration: Face-to-face conversations
- Date Planning: AI-suggested activities based on shared interests
- Friend Matching: Expand beyond romantic relationships
- Photo Verification: Prevent catfishing with image verification
- Premium Features: Advanced filters and unlimited likes
- Microservices Architecture: Scalable backend services
- Redis Caching: Improved performance and session management
- Image Processing: Automated photo optimization and filtering
- Push Notifications: Real-time alerts for matches and messages
- Analytics Dashboard: User engagement and success metrics
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Psychological research on compatibility and relationship success
- Big Five personality model and love languages theory
- Modern web development best practices
- Open source community contributions
loom - Where meaningful connections begin with psychological compatibility.