{"id":26896999,"url":"https://github.com/yusef-ahmed/employee_directory","last_synced_at":"2026-04-11T05:05:08.599Z","repository":{"id":284845340,"uuid":"956190780","full_name":"Yusef-Ahmed/Employee_Directory","owner":"Yusef-Ahmed","description":"An employee directory system application that stores and manages employee information within an organization. It allows employees and HR teams to search, view, and manage employee details such as names, job titles, departments, contact information, and more.","archived":false,"fork":false,"pushed_at":"2025-03-28T22:55:47.000Z","size":47,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-28T23:26:43.609Z","etag":null,"topics":["drizzle-orm","express-validator","expressjs","git","mysql","nodejs","reactjs","tailwindcss"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Yusef-Ahmed.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-03-27T21:02:12.000Z","updated_at":"2025-03-28T22:55:50.000Z","dependencies_parsed_at":"2025-03-28T23:26:58.902Z","dependency_job_id":null,"html_url":"https://github.com/Yusef-Ahmed/Employee_Directory","commit_stats":null,"previous_names":["yusef-ahmed/employee-directory","yusef-ahmed/employee_directory"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Yusef-Ahmed%2FEmployee_Directory","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Yusef-Ahmed%2FEmployee_Directory/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Yusef-Ahmed%2FEmployee_Directory/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Yusef-Ahmed%2FEmployee_Directory/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Yusef-Ahmed","download_url":"https://codeload.github.com/Yusef-Ahmed/Employee_Directory/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246586107,"owners_count":20801026,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["drizzle-orm","express-validator","expressjs","git","mysql","nodejs","reactjs","tailwindcss"],"created_at":"2025-04-01T04:32:58.644Z","updated_at":"2025-12-30T19:07:04.798Z","avatar_url":"https://github.com/Yusef-Ahmed.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# **Employee Directory**\n\n## Overview\n\nAn employee directory application that stores and manages employee information within an organization.\nIt allows HR professionals to search, view, and manage employee details including names, job titles, departments, contact information, and more.\n\n## [Flow Chart](https://lucid.app/lucidchart/916a75b6-7552-424f-8b69-9dd0bf828ef6/view)\n\n![Flowchart](Employee_Directory_Flowchart.png)\n\n## Tech Stack\n\n### Frontend (React + TypeScript)\n\n- React.js – For building a scalable frontend.\n\n- Tailwind CSS – Utility-first CSS framework for styling.\n\n- Material-UI (MUI) – Component library for modern UI design.\n\n- React Router – Client-side navigation.\n\n- Fetch API – Making HTTP requests.\n\n### Backend (Node.js + Express.js)\n\n- Node.js – JavaScript runtime for backend development.\n\n- Express.js – Lightweight web framework for building REST APIs.\n\n- JWT (JSON Web Token) – Secure authentication and authorization.\n\n- Bcrypt.js – Password hashing for user authentication.\n\n- Express Validator – Middleware for input validation.\n\n- Postman – API testing tool.\n\n### Database \u0026 ORM\n\n- MySQL – Relational database for structured data storage.\n\n- Drizzle ORM – TypeScript ORM for MySQL database management.\n\n## Installation \u0026 Setup\n\n### With Docker\n\n##### **1- Go into server directory and create `.env` file as following**\n\n```env\nJWT_SECRET=SOME_SECRET_KEY\nJWT_EXPIRES_IN=30d\n\n# For Docker\nDATABASE_URL_DOCKER=mysql://root:12345678@mysql-employee-directory:3306/employee_directory\nMYSQL_ROOT_PASSWORD=12345678\nMYSQL_DATABASE=employee_directory\n```\n\n##### **2- Run docker compose in the root directory**\n\n```sh\ndocker compose up\n```\n\n### Without Docker\n\n#### Server Setup\n\n##### **1- Go into the server directory (from the root directory)**\n\n```sh\ncd server\n```\n\n##### **2- Create a `.env` file as following**\n\n```env\nDATABASE_URL=mysql://\u003cusername\u003e:\u003cpassword\u003e@\u003chost\u003e:\u003cport\u003e/\u003cdatabase_name\u003e\n\nJWT_SECRET=SOME_SECRET_KEY\n\nJWT_EXPIRES_IN=30d\n```\n\n***Note**: Replace `\u003cusername\u003e`, `\u003cpassword\u003e`, `\u003chost\u003e`, `\u003cport\u003e`, and `\u003cdatabase_name\u003e` with your database credentials*\n\n##### **3- Install backend dependencies**\n\n```sh\nnpm install\n```\n\n##### **4- Open MySQL Workbench and create the database**\n\n```sql\nCREATE DATABASE database_name;\n```\n\n***Note**: Replace `database_name` with the name you chose in `.env`*\n\n##### **5- Create the database tables**\n\n```sh\nnpm run db:migrate # Applies migrations to set up tables\n```\n\n##### **6- Start the server (with nodemon)**\n\n```sh\nnpm start\n```\n\nThe server should now be running at `http://localhost:3000`\n\n#### Client Setup\n\n##### **1- Go into the client directory**\n\n```sh\ncd client\n```\n\n##### **2- Install frontend dependencies**\n\n```sh\nnpm install\n```\n\n##### **3- Start the frontend**\n\n```sh\nnpm start\n```\n\nThe frontend should now be running at `http://localhost:5173`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyusef-ahmed%2Femployee_directory","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyusef-ahmed%2Femployee_directory","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyusef-ahmed%2Femployee_directory/lists"}