This project considers the topic of real-world collaboration workflows in git and GitHub for software development in agile teams. Components of collaboration workflows that will be touched upon include development branches, production branches, feature branches, pull requests, code reviews, and ticket tracking. While there are discrete workflows that teams follow, it is also important to emphasize that standard workflow definitions are completely up to the individual teams/companies. These standards are, in fact, most often altered to better fit the work environment at hand. The presented workflow components serve as a foundation for learning how to customize the optimal workflow for a development team.
Students are expected to distinguish between different types of workflows for managing a git repository and know how to deal with merge conflicts. They will also learn how to communicate with other team members in a git setting to get changes implemented and pushed. They’ll understand the importance of tests in ensuring the production branch is reliably functional.
- Basic arithmetic operations:
+
,-
,*
,/
- Clear (
Clear
) and delete last character (Del
) buttons - Memory storage (
Store
), memory recall (Recall
), and memory clear (Reset
) functionality - Error handling for invalid inputs
- Display for calculator operations
- Basic arithmetic functions
- Clear and Delete buttons
- Implement square root function
- Implement square function
- Add keyboard support for number input
- Improve the design (CSS styling)
- Memory Store (
MS
), Recall (MR
), and Clear (MC
)
- Fix reciprocal function
The goal of this project is to create a fully functioning and visually appealing JavaScript calculator, while encouraging contributions and learning. Below is the roadmap for future improvements and features:
-
Basic Calculator Expansion:
- Implement scientific calculator functions like square root, square, and reciprocal.
- Add more advanced memory functions, such as memory addition and
subtraction (
M+
,M-
).
-
UI/UX Improvements:
- Design a more user-friendly and modern UI.
- Add responsiveness for mobile devices.
-
Input & Error Handling:
- Enable keyboard input for numbers and operations.
- Improve error handling with better feedback for the user.
-
Testing:
- Add unit tests for core functions.
- Implement end-to-end tests for UI and functionality.
-
Documentation:
- Write detailed function explanations for new features.
- Create usage examples in the
README
.
-
Fork the template
-
Add all contributing TAs to the list of repository contributors
-
Create ticket in Issue's tab
-
Clone your fork:
git clone https://github.com/your-username/js-calculator.git
-
Create a new branch with name matching corresponding issue:
git checkout -b feature/my-feature
-
Make your changes and commit them:
-
Push your changes to your fork:
git push origin feature/my-feature
Two TAs will present this lab case study to a group of students. If presented on Zoom, the TAs will take turns sharing their screens presenting the steps they are taking in the following workflow:
- (TA #1) Select 2 issues from the list above and create corresponding GitHub issues. Include descriptions, tags, and assignments in the issues. Assing one issue to yourself and one issue to the other TA.
- (TA #1) Create the branch corresponding to the issue assigned to yourself. Make and push any changes to complete the issue. Don't forget about adding and running tests in the tests file. Create a pull request for the branch and assign the TA #2 as a reviewer.
- (TA #2) Create the branch corresponding to the issue assigned to yourself. Make and push any changes to complete the issue. Don't forget about adding and running tests in the tests file. Create a pull request for the branch and assign the TA #1 as a reviewer.
- (TA #2) Review the PR from TA #1 and create any necessary comments.
- (TA #1) Respond to the TA #1 comments and make any additional commits to fix the changes.
- (TA #1) Take a look at TA #2's PR, and approve/merge it if everything looks good.
- (TA #2) Approve/merge TA #1's PR.