A Node.js command-line application that takes in information about members in a software engineering team, then generates an HTML webpage that displays basic summaries for each person.
- Getting Started
- What I Learned
- Features
- Limitations and Future Enhancements
- Tests
- Contribution
- Credits
- Download or clone the repository
- Navigate to the repository folder in your terminal
- Run
npm i
to install dependencies - Run
node index.js
to start the app
Upon starting the app, you will be prompted to enter basic information about a manager. Afterwards, a menu will appear, giving you options to add details about either an engineer or an intern.
Information about an unlimited number of engineers and interns can be added. Once finished, selecting the "Finish building team" option will render the desired HTML file in the output
folder and end the app.
In this project, I gained experience in:
- Building a Node.js app with a modular file structure, where each module performs a specific task.
- Creating objects using class structures, with a focus on inheritance.
- Implementing unit testing to aid app development.
- Validating user input using regular expressions.
- Generating dynamic webpages using stored data, array methods, and template literals.
- Styling webpages with a mobile-first approach using CSS.
- Asynchronous operations: Struggled to add a menu after page render, likely due to lack of understanding of promises.
- Flexbox: Had difficulty getting items to take a specific percentage of container width. Tried using flex-basis and box-sizing, but realised margin wasn't factored in.
Recommend future study of JavaScript promises and CSS Flexbox.
The HTML file rendered by the app is designed to adapt to various screen sizes for a responsive display.
- Module Import: Currently, the app uses the older
require()
method for importing modular files. So a future enhancement could be to switch to the newerimport
syntax. - Asynchronous Operations: The app handles asynchronous operations using promise chaining. An enhancement could be to use the async-await method for improved readability and simplicity.
- Limited Features: The app is currently limited to adding information for only three roles in a single team once. Future improvements could include the ability to add more roles, edit stored data, and to add information about multiple teams.
To run the basic tests, in your terminal run npm test
.
If you're excited about this project and want to get involved, that'd be awesome! Here are a few ways you can contribute:
- Fork the repository and create a pull request with your changes.
- Submit an issue to report bugs or request new features.
- Help improve the documentation.
Please follow the guidelines for contributions:
- Make sure your code is well-documented and follows the same style as the rest of the codebase.
- Keep pull requests small and focused on a single change.
- Include test cases for any new features or changes.
If you have any questions or suggestions, feel free to contact me via email.
The color scheme and layout for the rendered HTML file were influenced by The Correspondent website.
Other credits: