Connecting Talent with Opportunity, Seamlessly.
- ⭐ Overview
- ✨ Key Features
- 🛠️ Tech Stack & Architecture
- 🚀 Getting Started
- 🔧 Usage
- 🤝 Contributing
- 📝 License
TalentHub is a cutting-edge, full-stack freelance marketplace platform designed to empower individuals and businesses to seamlessly connect, collaborate, and transact for various services.
The modern economy thrives on specialized skills, yet finding the right talent or showcasing one's expertise often remains a fragmented and inefficient process. Existing solutions frequently suffer from high fees, limited communication channels, or a lack of focused features, hindering productive collaborations and stifling opportunities for skilled professionals.
TalentHub addresses these challenges by providing a robust, intuitive, and secure environment where freelancers can showcase their "gigs" (service offerings) and clients can discover, hire, and manage projects with ease. With an emphasis on secure transactions, clear communication, and transparent reviews, TalentHub fosters a vibrant community built on trust and efficiency.
Inferred Architecture: This project adopts a Monorepo architecture, housing both the frontend and backend components within a single repository for streamlined development and deployment. It operates as a sophisticated MERN (MongoDB, Express.js, React, Node.js) stack application:
- Backend: A robust Node.js application built with Express.js serves as a RESTful API. It handles authentication (JWT), data management (likely leveraging MongoDB for persistent storage), payment processing (Stripe integration), and business logic. The
controllers,routes, andmodelsstructure indicates a well-organized API layer. - Frontend: A dynamic Single Page Application (SPA) developed using React.js. It leverages Vite for a fast development experience and efficient bundling, React Router DOM for navigation, and Sass for modular styling. The frontend consumes the backend API to provide a rich, interactive user experience for gig management, messaging, orders, and user profiles.
TalentHub is packed with functionalities designed to provide a comprehensive freelance marketplace experience:
- 📈 Gig Management & Discovery: Users can effortlessly create, publish, edit, and manage their service offerings (gigs) with detailed descriptions, pricing, and categories. Clients can browse and discover relevant gigs through intuitive search and filtering capabilities.
- 👤 Secure User Authentication & Profiles: A complete authentication system allows for secure user registration, login, and robust password management (forgot/reset password functionality). Comprehensive user profiles enable talent to showcase their skills and clients to view credentials.
- 💳 Integrated Order & Payment System: Facilitates secure and seamless service ordering. Leverages Stripe for reliable payment processing, allowing clients to pay for services and freelancers to receive payments with confidence. Includes success and error handling for transactions.
- ⭐ Review & Rating System: Fosters trust and transparency by enabling clients to leave detailed reviews and ratings for completed gigs, helping future users make informed decisions.
- 💬 Real-time Messaging & Conversations: Provides a dedicated messaging system for direct, private communication between clients and service providers, ensuring clarity and efficient collaboration throughout a project's lifecycle.
- 📂 Category-based Service Organization: Services are meticulously categorized, allowing for easy navigation and discovery of specific talent or gig types, from graphic design to web development.
- 🔒 Protected Routes & Authorization: Implements robust access control mechanisms using JWT, ensuring that sensitive routes and functionalities are accessible only to authenticated and authorized users.
TalentHub is built using a modern and scalable set of technologies, chosen for their performance, developer experience, and ecosystem maturity.
| Technology | Purpose | Why it was Chosen |
|---|---|---|
| Node.js | Backend Runtime | High performance, non-blocking I/O, vast npm ecosystem, ideal for API services. |
| Express.js | Backend Web Framework | Minimalist, fast, unopinionated, flexible for building robust REST APIs. |
| MongoDB | Database | NoSQL, schema-less, highly scalable, ideal for handling diverse freelance data. (Inferred from model structure) |
| Mongoose | ODM for MongoDB | Provides object data modeling for MongoDB, simplifying data interaction and validation. (Inferred from model structure) |
| React 19 | Frontend Library | Declarative, component-based UI development, excellent for complex SPAs. |
| Vite | Frontend Build Tool | Extremely fast development server and build times, optimizing developer productivity. |
| Sass | CSS Preprocessor | Enables modular, maintainable, and scalable CSS with features like variables and mixins. |
| Axios | HTTP Client (Frontend) | Promise-based HTTP client for making API requests from the frontend, robust error handling. |
| Stripe | Payment Processing | Secure, reliable, and widely adopted platform for online payment gateways. |
| JSON Web Tokens (JWT) | Authentication & Authorization | Securely transmits information between parties as a JSON object, stateless authentication. |
| React Router DOM | Frontend Routing | Declarative routing for React applications, enabling seamless navigation within the SPA. |
| TanStack Query | Data Fetching & Caching (Frontend) | Powerful library for managing, caching, synchronizing, and updating asynchronous data in React. |
| Embla Carousel | UI Component (Frontend) | Lightweight and dependency-free carousel library for responsive image/content sliders. |
Follow these steps to get TalentHub up and running on your local machine.
Ensure you have the following software installed:
- Node.js:
v18.xor higher (includes npm) - MongoDB: Local installation or access to a cloud-hosted MongoDB instance (e.g., MongoDB Atlas).
-
Clone the repository:
git clone https://github.com/Ankur7470/Ankur7470-TalentHub-website-1fb4bfa.git cd Ankur7470-TalentHub-website-1fb4bfa -
Backend Setup: Navigate to the
backenddirectory, install dependencies, and configure environment variables.cd backend npm install cp .env.example .envOpen the newly created
.envfile and update the following variables with your actual values:# Example .env content (adjust as needed based on your actual backend env variables) PORT=8800 MONGO_URI="mongodb://localhost:27017/talenthub" # Or your MongoDB Atlas connection string JWT_KEY="YOUR_SUPER_SECRET_JWT_KEY" STRIPE_SECRET_KEY="sk_test_YOUR_STRIPE_SECRET_KEY" CLIENT_URL="http://localhost:5173" # Add any other environment variables (e.g., for email services)Start the backend server:
npm start # or node server.js if "start" script is not defined in package.json -
Frontend Setup: Open a new terminal, navigate to the
clientdirectory, install dependencies, and configure environment variables.cd ../client # From backend directory npm install cp .env.example .env # If an .env.example exists in client, otherwise create .env manually
Open the
.envfile (create if it doesn't exist) and set your API base URL and Stripe public key:VITE_API_BASE_URL=http://localhost:8800/api # Ensure this matches your backend port VITE_STRIPE_PUBLIC_KEY="pk_test_YOUR_STRIPE_PUBLIC_KEY"Start the frontend development server:
npm run dev
Once both the backend and frontend servers are running:
- Open your web browser and navigate to
http://localhost:5173(or the port Vite specified if different). - Register a new user as a client or a seller.
- Explore Gigs: Browse existing service offerings.
- Create a Gig: If registered as a seller, navigate to "Add a New Gig" to list your services.
- Place an Order: As a client, select a gig and proceed through the secure payment process.
- Communicate: Use the integrated messaging system to interact with sellers/clients.
- Manage Orders & Messages: Access your dashboard to view active orders, messages, and your listed gigs.
We welcome contributions from the community! If you're interested in making TalentHub even better, please follow these steps:
- Fork the repository.
- Create a new branch for your feature or bug fix (
git checkout -b feature/your-feature-nameorfix/bug-description). - Implement your changes.
- Commit your changes with a clear and descriptive message (
git commit -m "feat: Add new feature X"orfix: Resolve bug Y). - Push your branch to your forked repository (
git push origin feature/your-feature-name). - Open a Pull Request to the
mainbranch of the original repository.
Please ensure your code adheres to the existing style and conventions.
Distributed under the MIT License. See the LICENSE file for more information.