Skip to content

prathmesh796/getlancer

Repository files navigation

getLancer

getLancer is a simple and efficient freelancing platform, specially targeting people who are just entering the freelancing world — including students looking for their first professional experience.

Features

  • Direct messages between client / freelancer
  • Google Calendar API integration
  • Multiple login options (Google, GitHub)
  • Enhanced profile and dashboards
  • OTP-based email verification
  • Cloudflare Turnstile CAPTCHA protection

Tech Stack

Layer Technology
Framework Next.js 15 (App Router)
Database MongoDB / Mongoose
Auth NextAuth v4 (Google & GitHub OAuth)
Realtime / Messaging Firebase
File Storage Cloudflare R2 (S3-compatible)
Email Nodemailer (Gmail SMTP)
Cache (optional) Redis / ioredis
Styling Tailwind CSS

Prerequisites

Make sure you have the following installed before proceeding:

Installation

1. Clone the repository

git clone https://github.com/prathmesh796/getlancer.git
cd getlancer

2. Install dependencies

npm install

3. Configure environment variables

Copy the example env file and fill in your values:

cp .env.example .env.local

Open .env.local and set each variable. The table below describes every variable:

Variable Required Description
NEXTAUTH_SECRET Random secret for JWT signing. Generate with openssl rand -base64 32
NEXTAUTH_URL Canonical URL of your app (e.g. http://localhost:3000)
GOOGLE_CLIENT_ID Google OAuth client ID
GOOGLE_CLIENT_SECRET Google OAuth client secret
GITHUB_CLIENT_ID GitHub OAuth client ID
GITHUB_CLIENT_SECRET GitHub OAuth client secret
MONGO_URL MongoDB connection URI
EMAIL_USER Gmail address used for sending OTPs
EMAIL_PASS Gmail App Password (not your account password)
R2_ENDPOINT Cloudflare R2 endpoint URL
R2_ACCESS_KEY_ID Cloudflare R2 access key ID
R2_SECRET_ACCESS_KEY Cloudflare R2 secret access key
NEXT_PUBLIC_TURNSTILE_SITE_KEY Cloudflare Turnstile public site key
TURNSTILE_SECRET_KEY Cloudflare Turnstile secret key
NEXT_PUBLIC_FIREBASE_API_KEY Firebase public API key
NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN Firebase auth domain
NEXT_PUBLIC_FIREBASE_PROJECT_ID Firebase project ID
NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET Firebase storage bucket
NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID Firebase messaging sender ID
NEXT_PUBLIC_FIREBASE_APP_ID Firebase app ID
REDIS_URL Redis URL (optional, for Redis-based OTP storage)

Setting up Google OAuth

  1. Go to Google Cloud Console.
  2. Create a new OAuth 2.0 Client ID (Web application).
  3. Add http://localhost:3000/api/auth/callback/google to Authorised redirect URIs.
  4. Copy the Client ID and Client Secret into .env.local.

Setting up GitHub OAuth

  1. Go to GitHub Developer SettingsNew OAuth App.
  2. Set Authorization callback URL to http://localhost:3000/api/auth/callback/github.
  3. Copy the Client ID and generate a Client Secret, then add them to .env.local.

Setting up Gmail App Password

  1. Enable 2-Step Verification on your Google account.
  2. Go to App Passwords.
  3. Generate a password for Mail and paste it into EMAIL_PASS.

4. Run the development server

npm run dev

Open http://localhost:3000 in your browser.

5. Build for production

npm run build
npm start

Running with Docker

Make sure Docker and Docker Compose are installed, then:

# Copy and fill in env variables
cp .env.example .env.local

# Build and start the container
docker compose up --build

The app will be available at http://localhost:3000.

Screenshots

Landing page

Sign up

Dashboard

Profile

Contributing

Contributions are welcome! Please read CONTRIBUTING.md for guidelines.

License

This project is licensed under the terms of the LICENSE file.

About

A freelancing website

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages