A social networking platform designed for matcha enthusiasts to share reviews, discover new matcha products and cafes, and connect with fellow matcha lovers.
Matcha Social is a full-stack web application that combines the best of review platforms and social networking. Users can create detailed reviews of matcha products and cafes, share photos, rate their experiences, and interact with other matcha enthusiasts in the community.
- Store Information: Review cafes and shops with location details
- Product Details: Document matcha products with brand, type, origin, and price range
- Detailed Ratings: Rate overall experience plus specific aspects (taste, texture, bitterness, sweetness)
- Multiple Photos: Upload and display multiple images per review
- Tags & Flavor Notes: Add custom tags and select from predefined flavor notes (earthy, grassy, umami, creamy, etc.)
- Rich Content: Comprehensive review text with all matcha-specific details
- User Authentication: Secure registration and login system
- User Profiles: Personal profiles with avatars and bios
- Like System: Like and interact with reviews
- Feed: Browse latest reviews from the community
- Responsive Design: Beautiful, modern UI that works on all devices
β
User authentication (register, login)
β
Enhanced review creation with all product details
β
Review feed with detailed post cards
β
Like/unlike functionality
β
Multiple image support with carousel
β
Tags and flavor notes
β
Detailed rating system
π User profiles and follow system
π Comments and replies
π Search and filtering
π Collections and bookmarks
π Recommendations based on preferences
π Location-based discovery
π Notifications
- React 19 - UI library
- React Router - Client-side routing
- Axios - HTTP client for API requests
- Tailwind CSS - Utility-first CSS framework
- Vite - Build tool and dev server
- Node.js - Runtime environment
- Express.js 5 - Web framework
- MongoDB - NoSQL database
- Mongoose - MongoDB object modeling
- JWT - Authentication tokens
- bcrypt - Password hashing
Before you begin, ensure you have the following installed:
- Node.js (v18 or higher)
- MongoDB (local installation or MongoDB Atlas account)
- npm or yarn
git clone <repository-url>
cd matchazcd backend
npm installCreate a .env file in the backend directory:
MONGODB_URI=mongodb://localhost:27017/matchaz
JWT_SECRET=your-secret-key-change-this-in-production
PORT=5000Note: For production, use a strong random string for JWT_SECRET and a secure MongoDB connection string.
cd frontend
npm installMake sure MongoDB is running on your system. If using a local installation:
# macOS (if installed via Homebrew)
brew services start mongodb-community
# Linux
sudo systemctl start mongod
# Or use MongoDB Atlas cloud databaseTerminal 1 - Backend:
cd backend
npm start
# or for development with auto-reload:
npm run devThe backend server will run on http://localhost:5000
Terminal 2 - Frontend:
cd frontend
npm run devThe frontend will run on http://localhost:5173 (or the next available port)
Open your browser and navigate to:
http://localhost:5173
matchaz/
βββ backend/
β βββ config/
β β βββ database.js # MongoDB connection
β βββ middleware/
β β βββ auth.js # JWT authentication middleware
β βββ models/
β β βββ User.js # User model
β β βββ Post.js # Post/Review model
β βββ routes/
β β βββ auth.js # Authentication routes
β β βββ posts.js # Post/Review routes
β βββ server.js # Express server setup
β βββ package.json
β
βββ frontend/
β βββ src/
β β βββ api/
β β β βββ axiosClient.js # API client configuration
β β βββ components/
β β β βββ Navbar.jsx # Navigation bar
β β β βββ PostCard.jsx # Review card component
β β β βββ ShopsBar.jsx # Shops/stories bar
β β βββ contexts/
β β β βββ AuthContext.jsx # Authentication context
β β βββ pages/
β β β βββ HomePage.jsx # Main feed page
β β β βββ LoginPage.jsx # Login page
β β β βββ RegisterPage.jsx # Registration page
β β β βββ CreatePostPage.jsx # Create review page
β β βββ App.jsx # Main app component
β β βββ main.jsx # Entry point
β βββ package.json
β
βββ README.md
POST /api/auth/register- Register a new userPOST /api/auth/login- Login userGET /api/auth/me- Get current user (protected)
GET /api/posts- Get all postsGET /api/posts/:id- Get single postPOST /api/posts- Create a new post (protected)PUT /api/posts/:id- Update a post (protected, owner only)DELETE /api/posts/:id- Delete a post (protected, owner only)PUT /api/posts/:id/like- Like/unlike a post (protected)
When creating a review, users can provide:
- Store Information: Name, address, city, state, ZIP code
- Product Details: Product name, brand, matcha type (ceremonial, culinary, premium, latte-grade), origin, price range
- Ratings: Overall rating (1-5 stars) plus detailed ratings for taste, texture, bitterness, and sweetness
- Content: Review text, multiple photos, custom tags, and flavor notes
- Flavor Notes: Select from options like earthy, grassy, umami, sweet, bitter, creamy, smooth, nutty, vegetal, fresh, rich, delicate
Each review card shows:
- User information with avatar
- Image carousel for multiple photos
- Store and product information
- All ratings (overall and detailed)
- Location information
- Tags and flavor notes
- Like count and interaction buttons
The following features are planned for future releases:
-
User Profiles & Follow System
- Detailed user profiles
- Follow/unfollow users
- Personalized feed based on following
-
Comments & Interactions
- Comment on reviews
- Reply to comments
- Share reviews
-
Search & Discovery
- Search reviews, shops, and users
- Filter by location, rating, matcha type
- Advanced search with multiple criteria
-
Collections & Bookmarks
- Save favorite reviews
- Create custom collections
- Public and private lists
-
Recommendations
- Personalized recommendations
- Similar products/shops
- Based on user preferences and ratings
This is a personal project, but suggestions and feedback are welcome!
This project is open source and available for personal use.
Built with love for the matcha community! π΅
Note: This is an active development project. Features are being added incrementally. Check back regularly for updates!