Skip to content

youssefrramdan/Free-Gency-Backend

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸš€ Free-Gency Backend

🌟 Overview

Free-Gency is a platform that connects clients with freelance teams, providing an integrated environment for collaboration and management of creative and technical projects. The platform allows clients to discover opportunities and contract with specialized teams in various fields such as design, development, marketing, and IT services.


🌍 Deployment

The project is deployed using Koyeb at the following link: πŸ”— https://free-gency-api-v1.onrender.com

🌐 Access the Live Application

πŸ”— https://free-gency-api-v1.onrender.com

πŸ“© Postman API Collection

You can test the API using Postman Workspace:

πŸ”— Postman Workspace


πŸ”₯ Features

βœ… Secure Authentication System: Login, registration, email verification, password recovery βœ… User Management: Clients, team leaders, team members βœ… Team Management: Create, manage, and join teams βœ… Project Management: Create, track, and manage projects βœ… Service Categories: Creative design, development & programming, advertising & marketing, IT services βœ… Profile Management: Update profiles, skills, and portfolio βœ… Reviews & Ratings: Rating system for teams and projects


πŸ›  Technologies Used

βš™ Backend

  • 🟒 Node.js
  • ⚑ Express.js

πŸ’Ύ Database

  • πŸƒ MongoDB
  • πŸ”΄ Mongoose

πŸ”’ Authentication

  • πŸ”‘ JWT (JSON Web Tokens)
  • πŸ” bcrypt

πŸ“§ Notifications

  • πŸ“¨ Nodemailer

πŸ”§ Validation

  • βœ… Validator.js
  • πŸ›‘οΈ Express Validator

πŸ“¦ Other Tools

  • πŸ”΄ Postman (API Testing)

πŸš€ Deployment

  • ☁️ Koyeb (Hosting Service)

⚑ Installation

1️⃣ Clone the Repository

git clone https://github.com/yourusername/Free-Gency-Backend.git
cd Free-Gency-Backend

2️⃣ Install Dependencies

npm install

3️⃣ Set Up Environment Variables

Create a config/config.env file in the project directory and configure the following variables:

# Server Configuration
PORT=8000
NODE_ENV=development

# Database Configuration
DB_USER=your_database_username
DB_PASSWORD=your_database_password
DB_NAME=your_database_name
DB_URI=your_mongodb_connection_string

# JWT Configuration
JWT_SECRET_KEY=your_jwt_secret
JWT_EXPIRE_TIME=3d

# Email Configuration
EMAIL_USER=your_email@example.com
EMAIL_PASS=your_email_password

# Cloudinary Configuration
CLOUDINARY_CLOUD_NAME=your_cloud_name
CLOUDINARY_API_KEY=your_api_key
CLOUDINARY_API_SECRET=your_api_secret

⚠ Make sure not to share these credentials publicly and add config/config.env to .gitignore.

4️⃣ Run the Application

# Development mode
npm run start:dev

# Production mode
npm run start:prod

The server will run at http://localhost:8000.


πŸ“Œ API Endpoints

Authentication Routes (/api/v1/auth)

Method Endpoint Description
POST /signup Register a new user
POST /signup-team Create a team with team leader
POST /login Login user
GET /verify/:token Confirm email verification
POST /resend-email Resend verification email
POST /forgot-password Request password reset
POST /verify-reset-code Verify reset code
POST /reset-password Reset password

User Routes (/api/v1/users)

Method Endpoint Description
GET / Get all users
POST / Create a new user (Admin only)
GET /me Get current logged in user
PUT /me Update current user profile
GET /:id Get a specific user
PUT /:id Update a specific user
DELETE /:id Delete a specific user
PATCH /changePassword Change current user password
PATCH /changePassword/:id Change user password (Admin only)

Teams Routes (/api/v1/teams)

Method Endpoint Description
POST / Create a new team
GET / Get all teams
GET /:id Get team by ID
PUT /:id Update team
DELETE /:id Delete team
POST /:id/join Request to join team
PATCH /:id/accept-member/:userId Accept member request
PATCH /:id/reject-member/:userId Reject member request

Projects Routes (/api/v1/projects)

Coming soon...


πŸ“± UI Screenshots

The project includes a beautifully designed mobile interface:

Splash Screens

Welcome screens showcasing the brand identity with a modern purple theme and creative elements.

Onboarding Screens

Introduction to key features with four main onboarding screens:

  • Welcome to Freegency: Connecting clients with agencies and teams
  • Seamless Collaboration: Simple communication and project execution
  • Discover Opportunities: Browse available talent and find the right team
  • Trusted Transactions: Secure payment processing and transparent reviews

Authentication Screens

  • User login
  • Registration
  • Password recovery
  • OTP verification

Client Home

  • Notifications feed
  • Team listings
  • Projects dashboard

Service Categories

  • Creative & Visual
  • Advertising & Marketing
  • Development & Product
  • IT Services

⚠ Error Handling

The application supports global error handling for:

  • ❌ Unhandled Promise Rejections
  • ❌ Uncaught Exceptions
  • ❌ Invalid Routes
  • ❌ Validation Errors

🀝 Contributing

Contributions are welcome! Feel free to fork the repository and submit pull requests.


πŸ“œ License

This project is licensed under the MIT License.


About

Free-Gency Backend: API connecting clients with freelance teams for creative and technical development projects

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published