A modern web application that enables users to list their skills and request skill swaps with others in the community.
- User Profiles: Name, location, profile photo, skills offered/wanted, availability
- Skill Management: List skills you can teach and skills you want to learn
- Privacy Controls: Make profiles public or private
- Search & Browse: Find users by skills, location, or availability
- Swap Requests: Send, accept, reject, and manage skill swap requests
- Rating System: Provide feedback after completed swaps
- Admin Panel: Content moderation and platform management
- Modern, responsive UI with beautiful design
- Real-time notifications for swap requests
- Advanced search and filtering capabilities
- Rating and feedback system
- Profile customization options
- Frontend: React.js with TypeScript, Tailwind CSS, Framer Motion
- Backend: Node.js with Express, TypeScript
- Database: MongoDB with Mongoose ODM
- Authentication: JWT tokens
- File Upload: Multer for profile photos
- Real-time: Socket.io for notifications
-
Clone the repository
git clone <repository-url> cd TheCodeCartel_OdooHackathon
-
Install dependencies
# Install backend dependencies cd backend npm install # Install frontend dependencies cd ../frontend npm install
-
Environment Setup
# Backend environment variables cd backend cp .env.example .env # Edit .env with your MongoDB URI and JWT secret
-
Run the application
# Start backend server (from backend directory) npm run dev # Start frontend (from frontend directory) npm start
POST /api/auth/register- User registrationPOST /api/auth/login- User loginGET /api/auth/profile- Get user profile
GET /api/users- Get all public usersGET /api/users/:id- Get specific user profilePUT /api/users/profile- Update user profilePOST /api/users/upload-photo- Upload profile photo
GET /api/skills- Get all skillsPOST /api/skills- Add skill to user profileDELETE /api/skills/:id- Remove skill from profile
POST /api/swaps/request- Send swap requestGET /api/swaps/received- Get received requestsGET /api/swaps/sent- Get sent requestsPUT /api/swaps/:id/accept- Accept swap requestPUT /api/swaps/:id/reject- Reject swap requestDELETE /api/swaps/:id- Delete swap request
GET /api/admin/users- Get all users (admin only)PUT /api/admin/users/:id/ban- Ban user (admin only)GET /api/admin/reports- Get platform reports (admin only)
TheCodeCartel_OdooHackathon/
├── backend/ # Backend API server
│ ├── src/
│ │ ├── controllers/ # Route controllers
│ │ ├── models/ # Database models
│ │ ├── routes/ # API routes
│ │ ├── middleware/ # Custom middleware
│ │ ├── utils/ # Utility functions
│ │ └── app.ts # Main server file
│ ├── package.json
│ └── tsconfig.json
├── frontend/ # React frontend
│ ├── src/
│ │ ├── components/ # React components
│ │ ├── pages/ # Page components
│ │ ├── hooks/ # Custom hooks
│ │ ├── services/ # API services
│ │ ├── utils/ # Utility functions
│ │ └── App.tsx # Main app component
│ ├── package.json
│ └── tsconfig.json
└── README.md
- Responsive Design: Works on desktop, tablet, and mobile
- Dark/Light Mode: Toggle between themes
- Smooth Animations: Framer Motion for delightful interactions
- Loading States: Skeleton loaders and progress indicators
- Error Handling: User-friendly error messages
- Accessibility: WCAG compliant design
- JWT-based authentication
- Password hashing with bcrypt
- Input validation and sanitization
- Rate limiting on API endpoints
- CORS configuration
- File upload security
- Basic info (name, email, location, bio)
- Profile photo URL
- Skills offered and wanted arrays
- Availability settings
- Privacy settings
- Rating and feedback
- Requester and recipient IDs
- Requested and offered skills
- Status (pending, accepted, rejected, completed)
- Timestamps
- Messages
- Skill name and category
- Description
- Difficulty level
The application can be deployed to:
- Backend: Heroku, Railway, or AWS
- Frontend: Vercel, Netlify, or GitHub Pages
- Database: MongoDB Atlas
- The Code Cartel Team
This project is created for the Odoo Hackathon.