This project is a freelancing platform built with React, TypeScript, and Vite. It allows users to create projects, submit proposals, and manage their freelancing activities.
- User authentication and profile management
- Project creation and management for owners
- Proposal submission and status tracking for freelancers
- Admin dashboard for managing users, projects, and proposals
- Responsive design with Tailwind CSS
- Frontend: React, TypeScript, Vite, Tailwind CSS
- Backend: Node.js, Express, MongoDB
- State Management: React Query
- Form Validation: React Hook Form, Zod
- Notifications: React Hot Toast
- Node.js (v16 or higher)
- MongoDB (local or cloud instance)
-
Clone the repository:
git clone https://github.com/your-repo/freelancing-app.git cd freelancing-app
-
Install dependencies for both frontend and backend:
cd frontend npm install cd ../backend npm install
-
Set up environment variables:
- Create
.env
files in bothfrontend
andbackend
directories. - Refer to
.env.example
files for required variables.
- Create
-
Start the backend server:
cd backend npm run dev
-
Start the frontend development server:
cd frontend npm run dev
-
Open the app in your browser at
http://localhost:5173
.
If you are developing a production application, we recommend updating the ESLint configuration to enable type-aware lint rules:
- Configure the top-level
parserOptions
property like this:
export default tseslint.config({
languageOptions: {
// other options...
parserOptions: {
project: ["./tsconfig.node.json", "./tsconfig.app.json"],
tsconfigRootDir: import.meta.dirname,
},
},
});
- Replace
tseslint.configs.recommended
withtseslint.configs.recommendedTypeChecked
ortseslint.configs.strictTypeChecked
. - Optionally add
...tseslint.configs.stylisticTypeChecked
. - Install eslint-plugin-react and update the config:
// eslint.config.js
import react from "eslint-plugin-react";
export default tseslint.config({
// Set the React version
settings: { react: { version: "18.3" } },
plugins: {
// Add the React plugin
react,
},
rules: {
// other rules...
// Enable its recommended rules
...react.configs.recommended.rules,
...react.configs["jsx-runtime"].rules,
},
});
This project is licensed under the MIT License.