Skip to content

Latest commit

 

History

49 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Emberly

A full-stack job portal built with the MERN stack, featuring a user-facing job platform and a dedicated administration panel.

🌐 Live Applications


✨ Features

👤 User Platform

  • User registration and authentication
  • Email verification with OTP
  • OTP resend with cooldown and request limits
  • Secure JWT-based authentication
  • Forgot password / reset password
  • User profile management
  • Resume upload
  • Browse available jobs
  • Search and filter jobs
  • View company information
  • Apply for jobs
  • Save jobs
  • Save interview questions
  • Company-specific interview questions
  • Role-specific interview questions
  • Interview preparation resources
  • Responsive UI
  • Dark/light theme support

🛠️ Admin Panel

A separate administration interface for managing Emberly's platform data.

  • Admin authentication
  • Dashboard
  • Job management
  • Company management
  • Company interview questions
  • Role interview questions
  • Add and manage job listings
  • Dedicated admin UI

🏗️ Project Structure

emberly/
│
├── frontend/              # User-facing React application
│   ├── src/
│   ├── public/
│   └── package.json
│
├── admin/                 # Admin React application
│   ├── src/
│   ├── public/
│   └── package.json
│
├── backend/               # Node.js + Express API
│   ├── config/
│   ├── controllers/
│   ├── middleware/
│   ├── models/
│   ├── routes/
│   ├── utils/
│   ├── uploads/
│   ├── server.js
│   └── package.json
│
└── README.md

🧰 Tech Stack

Frontend

  • React
  • Vite
  • React Router
  • Axios
  • Tailwind CSS
  • Lucide React
  • JavaScript

Admin

  • React
  • Vite
  • React Router
  • Axios
  • Tailwind CSS
  • Lucide React

Backend

  • Node.js
  • Express.js
  • MongoDB
  • Mongoose
  • JWT
  • bcrypt
  • CORS
  • Nodemailer/Brevo email API integration
  • Cloudinary

Deployment

  • Frontend: Vercel
  • Admin: Vercel
  • Backend: Render
  • Database: MongoDB
  • File Storage: Cloudinary
  • Email: Brevo

🔐 Authentication

Emberly uses JWT-based authentication.

User Authentication Flow

Sign Up
   ↓
Verification OTP
   ↓
Email Verification
   ↓
Sign In
   ↓
JWT Authentication
   ↓
User Dashboard

Password Recovery

Forgot Password
      ↓
Email
      ↓
Reset Password
      ↓
Sign In

⚙️ Environment Variables

Environment variables are required for the frontend, admin panel, and backend.

Frontend

VITE_API_URL=""

Admin

VITE_API_URL=""

Backend

MONGODB_URL=your_mongodb_connection_string

JWT_SECRET=your_jwt_secret

BREVO_BASE_URL=your_brevo_base_url
BREVO_API_KEY=your_brevo_api_key
EMAIL_USER=your_email

CLOUDINARY_NAME=your_cloudinary_name
CLOUDINARY_API_KEY=your_cloudinary_api_key
CLOUDINARY_SECRET_KEY=your_cloudinary_secret_key

FRONTEND_URL=frontend_deployed_url,admin_deployed_url

🚀 Running Locally

  1. Clone the repository
git clone https://github.com/nihalsheikh/emberly.git
cd emberly
  1. Start the Backend
cd backend
npm install
npm start
  1. Start the User Frontend
cd frontend
bun install
bun run dev
  1. Start the Admin Panel
cd admin
bun install
bun run dev

🔄 API Architecture

The frontend applications communicate with the Express backend through REST APIs.

                    ┌─────────────────────┐
                    │      MongoDB        │
                    └──────────▲──────────┘
                               │
                               │
                    ┌──────────┴──────────┐
                    │   Express Backend   │
                    │   Node.js / REST API│
                    └───────▲───────▲─────┘
                            │       │
                  ┌─────────┘       └─────────┐
                  │                           │
        ┌─────────┴─────────┐       ┌─────────┴─────────┐
        │   User Frontend   │       │    Admin Panel    │
        │   React + Vite    │       │   React + Vite    │
        └───────────────────┘       └───────────────────┘

📡 Main API Routes

/api/auth
/api/user
/api/company
/api/job
/api/interview
/api/application
/api/saved
/api/inquiry

📁 Backend Architecture

The backend follows a controller/route/model structure:

backend/
│
├── config/
│   └── db.js
│
├── controllers/
│   └── ...
│
├── models/
│   └── ...
│
├── routes/
│   └── ...
│
├── middleware/
│   └── ...
│
├── utils/
│   └── emailService.js
│
└── server.js

🔒 Security

Emberly implements several security measures:

  • Password hashing with bcrypt
  • JWT authentication
  • Protected API routes
  • Role-based access control
  • Email verification
  • OTP expiration
  • OTP resend cooldown
  • OTP resend limits
  • Environment variables for sensitive credentials
  • CORS configuration for deployed applications

☁️ Deployment

Frontend & Admin

Vercel

Backend

Render

👨‍💻 Author

Nihal Sheikh


📄 License

This project is currently intended for personal/project use.

About

Job Portal: Apply for jobs and track them

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages