A complete web application to manage companies, employees, work relationships, and management hierarchies.
Based on the ER diagram with 4 main tables:
┌─────────────┐ ┌─────────────┐
│ company │ │ works │
├─────────────┤ ├─────────────┤
│ company_name│◄──────│ emp_id │
│ city │ │ company_name│
└─────────────┘ │ salary │
└──────┬──────┘
│
┌─────────────┐ │
│ employee │◄─────────────┘
├─────────────┤
│ emp_id │◄──────┐
│ emp_name │ │
│ street_no │ │
│ city │ │
└─────────────┘ │
│
┌─────────────┐ │
│ manages │ │
├─────────────┤ │
│ emp_id │───────┘
│ manager_id │───────┘
└─────────────┘
- Companies: Create, edit, delete companies with city information
- Employees: Manage employee records with address details
- Works: Track which employees work for which companies and their salaries
- Manages: Define management hierarchies between employees
- Authentication: JWT-based login system
- Dashboard: Overview statistics and salary analytics
npm installCreate a .env file:
DB_HOST=localhost
DB_USER=root
DB_PASSWORD=your_password
DB_NAME=company_db
DB_PORT=3306
JWT_SECRET=your-secret-key
PORT=3000
npm run init-dbnpm start
# or for development
npm run dev- Frontend: http://localhost:3000
- API: http://localhost:3000/api
Default Login:
- Username:
admin - Password:
admin123
POST /api/auth/login- LoginPOST /api/auth/register- Register new userPOST /api/auth/change-password- Change password
GET /api/companies- List all companiesGET /api/companies/:name- Get company by nameGET /api/companies/:name/employees- Get company employeesPOST /api/companies- Create companyPUT /api/companies/:name- Update companyDELETE /api/companies/:name- Delete company
GET /api/employees- List all employeesGET /api/employees/:id- Get employee by IDGET /api/employees/:id/works- Get employee work historyGET /api/employees/:id/subordinates- Get subordinatesPOST /api/employees- Create employeePUT /api/employees/:id- Update employeeDELETE /api/employees/:id- Delete employee
GET /api/works- List all work relationshipsGET /api/works/stats- Get salary statisticsPOST /api/works- Create work relationshipPUT /api/works/:empId/:companyName- Update salaryDELETE /api/works/:empId/:companyName- Delete relationship
GET /api/manages- List all management relationshipsGET /api/manages/managers- Get all managersPOST /api/manages- Assign manager to employeeDELETE /api/manages/:empId- Remove management relationship
company/
├── database/
│ ├── connection.js # Database connection pool
│ └── init.js # Database initialization
├── middleware/
│ └── authMiddleware.js # JWT authentication
├── models/
│ ├── Company.js # Company model
│ ├── Employee.js # Employee model
│ ├── Works.js # Works relationship model
│ ├── Manages.js # Management model
│ └── User.js # User authentication model
├── routes/
│ ├── authRoutes.js # Authentication routes
│ ├── companyRoutes.js # Company CRUD
│ ├── employeeRoutes.js# Employee CRUD
│ ├── worksRoutes.js # Works CRUD
│ ├── managesRoutes.js # Management CRUD
│ └── userRoutes.js # User management
├── public/
│ ├── index.html # Main dashboard
│ ├── login.html # Login page
│ └── app.js # Frontend JavaScript
├── server.js # Express server
├── package.json
└── .env.example
- Backend: Node.js, Express.js
- Database: MySQL
- Authentication: JWT (JSON Web Tokens)
- Frontend: HTML5, CSS3, Vanilla JavaScript
- Password Hashing: bcryptjs
MIT