-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathReportText.txt
More file actions
42 lines (13 loc) · 5.69 KB
/
Copy pathReportText.txt
File metadata and controls
42 lines (13 loc) · 5.69 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
Shebang © - Command-Line To-Do List Manager
The creation of Shebang, as my group has decided to name it, is a command-line To-Do List Manager, it was developed in collaboration and efficient group planning among members. Given the outline of the task ahead, a well-analyzed breakdown of the complexity of the task was done and our team adopted a tactical division of the task according to our strong suites. Each team member was assigned to different parts such as adding tasks, filtering, sorting, and report writing. This approach fostered a sense of responsibility and accountability among one another.
We established a GitHub repository to facilitate well-organized collaboration. This setup enabled us to share code, track our progress, and merge contributions effectively. The code was designed to consist of multiple scripts: individual feature scripts handled core functionality, while the main scripts were the main space for user interaction which processes input commands and forwards them to the appropriate feature scripts.
As part of the project, we also wrote a man page to document the tool’s usage comprehensively. This decision added a professional touch to our program and ensured that users could access detailed instructions without external guidance.
However, this did not come without challenges. We had a lot of challenges during the project, one of the main challenges we had was the lack of a unified development environment. None of us had access to a native Linux machine. Instead, one team member used WSL on Windows, another relied on Github Codespaces, and the third worked on MacOS, which defaulted to Bash version 3. This environment mismatch introduced compatibility issues, particularly with Bash syntax. The modern features of Bash 5 were incompatible with the MacOS system, making it harder for that team member to contribute as effectively as he could. While the issue continued to remain a hurdle, we found a workaround and made it work in the end.
Another major hustle arose from file compatibility. The team member using GitHub Codespaces unknowingly saved files in DOS format (\r\n line endings), causing scripts to fail on Unix systems. This issue was a major problem and disrupted the whole program at one point. When fixing this issue we had to convert all the files to Unix-compatible line endings (LF) using packages on linux like dos2unix. Moving forward and preventing such an error, we enforced that we always standardize all file formats.
We also had no way to test the man page to see if it was formatted correctly without compiling and installing it to my system, so we googled on Stack Overflow and found out that there is a tool called groff that can be used for loads of different uses to do with text rendering, like a CLI LaTeX, and it has a "manpage" mode. macOS, though, doesn't have it installed by default and macOS doesn't support apt-get, so we had to find another way to install it to my system, which ended up running it in Node.js somehow in a VM installed via Home-brew. In the end, at least, it worked for us, and we were able to preview the page and confirm no syntax errors and that it renders correctly.
Leaving technical hurdles, communication, and learning were recurring challenges. A particular team member lacked enough knowledge to fully participate in GitHub and Bash scripting, which slowed progress. To overcome this, we adopted a learning approach, sharing resources and telling this member to go over school-shared materials to strengthen the person's knowledge on the topics he was struggling with, as well as having the members with more knowledge teach them some of the concepts and features.
Another key struggle to note was the searching and sorting functionality. Tasks such as filtering by priority, due date, or tags required careful use of Unix tools like grep, awk, and sort. These commands had to be implemented very precisely to ensure desirable result
The development of Shebang was a challenging yet rewarding experience. Despite all the difficulties we had to go through, we have successfully built a functional, modular, and user-friendly To-Do List Manager. The challenges we faced were from searching and sorting to communication problems and file compatibility. This taught us the importance of communication, adaptability, and teamwork
We really pushed our limits for this project but given more time, we would focus on enhancing the program to make it even more feature-rich. There are a couple of more improvements that could have been valuable additions. Interactive Mode, implementing an interactive interface would allow users to manage their tasks without typing longer commands, making it more user-friendly. Another great addition could be a calendar-based task view, a visual calendar that displays tasks by the due date would be such a lovely addition to the overall functionality it would provide a clear and organized overview for users. Aesthetic enhancements could also have been implemented; it would help improve the visual representation and would greatly impact user experience.
The Shebang project was such a great learning experience for our team. It really helped to develop external skills such as collaboration, problem-solving, precision, and planning ahead. We as a team have successfully delivered a functional To-Do List Manager that meets the project requirements. The design we implemented, combined with the use of Unix tools, allowed us to build a versatile script.
Throughout the development of the project, we gained hands-on experience with Bash scripting, Git version control, and Unix command-line tools. We also learned how to overcome real-world challenges, adaptation to technical limitations, and work well as a team despite our knowledge barrier.