Skip to content

MahmoudAlHaj4/Lably

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

573 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Lably

Project Overview

Lably is a specialized job board for the dental technology industry. It connects dental labs and clinics with pre-verified CAD/CAM specialists, dental technicians, and dental lab professionals.

System Design

ER Diagram

Lably ER Diagram

System Flowchart

System Flowchart

For full system design, database decisions, API details, and architecture notes, see DESIGN.md.

Screenshots

Landing Page Job Seeker
Landing Page Job Seeker
Employer Admin
Employer Admin

Tech Stack

Frontend Backend Database File Storage Auth Email Testing CI/CD Deployment
HTML CSS JavaScript Node.js Express PostgreSQL Neon Supabase JWT bcrypt Nodemailer Brevo Jest Supertest GitHub Actions Render

Testing

Integration tests using Jest and Supertest against a real PostgreSQL database (Neon) to catch real-world issues that mocks would miss.

What's Tested

  • Authentication — login success, wrong password, wrong email
  • Pending Applications — file upload submission, missing resume validation
  • Activation Flow — full end-to-end: submit application → admin approves → token validation → account activation → login
  • Jobs — create, edit, delete, and view job listings
  • Employer Profile — create and update employer profile
  • Email Service — mocked to prevent real emails during CI

Run Tests

npm test

Setup & Installation

Prerequisites

  • Node.js
  • PostgreSQL
  • Supabase account
  • Brevo account

1. Clone the Repository

git clone https://github.com/MahmoudAlHaj4/Lably.git
cd Lably

2. Install Dependencies

cd lably-backend
npm install

3. Configure Environment Variables

Create a .env file in the lably-backend directory and fill in the following:

DB_HOST=
DB_USER=
DB_PASSWORD=
DB_NAME=
PORT=
JWT_SECRET=

DATABASE_URL=

SUPABASE_URL=
SUPABASE_SERVICE_ROLE_KEY=

FRONTEND_URL=

BREVO_HOST=
BREVO_PORT=
BREVO_USER=
BREVO_PASS=
BREVO_SENDER=
BREVO_API_KEY=

4. Start the Server

node server.js

Live Demo

🔗 lably-three.vercel.app

Admin Credentials

Admin accounts are created manually. To log in as an admin, use the following credentials:

Field Value
Email admin@lably.com
Password admin123

To create or update the admin account, run the following SQL:

INSERT INTO users (email, password_hash, role)
VALUES ('admin@example.com', '<bcrypt_hashed_password>', 'admin');

Note: Never store plain-text passwords. Use bcrypt to hash the password before inserting.

To generate a bcrypt hash, run the following in Node.js:

const bcrypt = require('bcrypt');
const hash = await bcrypt.hash('your_password', 10);
console.log(hash);

About

Lably is a specialized job board for the dental technology industry. It connects dental labs and clinics with pre-verified CAD/CAM specialists, dental technicians, and dental lab professionals.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors