Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/miryasha/employee_summary
https://github.com/miryasha/employee_summary
Last synced: 11 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/miryasha/employee_summary
- Owner: miryasha
- Created: 2020-11-17T05:06:34.000Z (about 4 years ago)
- Default Branch: main
- Last Pushed: 2020-11-17T16:37:21.000Z (about 4 years ago)
- Last Synced: 2023-07-19T20:33:25.338Z (over 1 year ago)
- Language: JavaScript
- Size: 362 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
Template Engine - Employee Summary
One of the most important aspects of programming is writing code that is readable, reliable, and maintainable. Oftentimes, *how* we design our code is just as important as the code itself. In this homework assignment, your challenge is to build a Node CLI that takes in information about employees and generates an HTML webpage that displays summaries for each person. Since testing is a key piece in making code maintainable, you will also be ensuring that all unit tests pass.
## Instructions
You will build a software engineering team generator command line application. The application will prompt the user for information about the team manager and then information about the team members. The user can input any number of team members, and they may be a mix of engineers and interns. This assignment must also pass all unit tests. When the user has completed building the team, the application will create an HTML file that displays a nicely formatted team roster based on the information provided by the user. Following the [common templates for user stories](https://en.wikipedia.org/wiki/User_story#Common_templates), we can frame this challenge as follows:
```
As a manager
I want to generate a webpage that displays my team's basic info
so that I have quick access to emails and GitHub profiles
```How do you deliver this? Here are some guidelines:
* Use the [Inquirer npm package](https://github.com/SBoudrias/Inquirer.js/) to prompt the user for their email, id, and specific information based on their role with the company. For instance, an intern may provide their school, whereas an engineer may provide their GitHub username.
* Your app will run as a Node CLI to gather information about each employee.
* Below is an example of what your application may look like. Remember, the styling is completely up to you so try to make it unique.
![Employee Summary 1](./Assets/10-OOP-homework-demo-1.png)
![Employee Summary 2](./Assets/10-OOP-homework-demo-2.png)### Classes
The project must have the these classes: `Employee`, `Manager`, `Engineer`,
`Intern`. The tests for these classes in the `tests` directory must all pass.The first class is an `Employee` parent class with the following properties and
methods:* name
* id
* getName()
* getId()
* getEmail()
* getRole() // Returns 'Employee'The other three classes will extend `Employee`.
In addition to `Employee`'s properties and methods, `Manager` will also have:
* officeNumber
* getRole() // Overridden to return 'Manager'
In addition to `Employee`'s properties and methods, `Engineer` will also have:
* github // GitHub username
* getGithub()
* getRole() // Overridden to return 'Engineer'
In addition to `Employee`'s properties and methods, `Intern` will also have:
* school
* getSchool()
* getRole() // Overridden to return 'Intern'
### User input
The project must prompt the user to build an engineering team. An engineering
team consists of a manager, and any number of engineers and interns.### Roster output
The project must generate a `team.html` page in the `output` directory, that displays a nicely formatted team roster. Each team member should display the following in no particular order:
* Name
* Role
* ID
* Role-specific property (School, link to GitHub profile, or office number)