From 1d4a5bbb33796b127ac3e542b81043111cec98fc Mon Sep 17 00:00:00 2001 From: Luiza Date: Thu, 19 Dec 2024 16:00:38 -0300 Subject: [PATCH 01/13] cluster readme: initial part --- README.md | 270 ++++++++++++++---------------------------------------- 1 file changed, 71 insertions(+), 199 deletions(-) diff --git a/README.md b/README.md index 0317e5d..f27324f 100644 --- a/README.md +++ b/README.md @@ -1,241 +1,113 @@ - - - -[![Contributors][contributors-shield]][contributors-url] -[![Forks][forks-shield]][forks-url] -[![Stargazers][stars-shield]][stars-url] -[![Issues][issues-shield]][issues-url] -[![MIT License][license-shield]][license-url] -[![LinkedIn][linkedin-shield]][linkedin-url] - - -
-
- - Logo - - -

Best-README-Template

- -

- An awesome README template to jumpstart your projects! -
- Explore the docs » -
-
- View Demo - · - Report Bug - · - Request Feature -

-
- - -
- Table of Contents -
    -
  1. - About The Project - -
  2. -
  3. - Getting Started - -
  4. -
  5. Usage
  6. -
  7. Roadmap
  8. -
  9. Contributing
  10. -
  11. License
  12. -
  13. Contact
  14. -
  15. Acknowledgments
  16. -
-
- - - +# Instrument Cluster + +## Table of Contents +1. [About The Project](#about-the-project) + - [Built With](#built-with) +2. [Usage](#usage) +3. [Roadmap](#roadmap) +4. [Contributing](#contributing) +5. [License](#license) +6. [Contact](#contact) +7. [Acknowledgments](#acknowledgments) + ## About The Project -[![Product Name Screen Shot][product-screenshot]](https://example.com) +The **Instrument Cluster** is designed to provide real-time speed data from a PiRacer car on a graphical interface (GUI). The application is split across two devices: the **Jetson Nano** handles all the processing tasks, while the **Raspberry Pi** is used solely for rendering the Qt-based display. Both devices receive speed data simultaneously from the sensor via the Controller Area Network (CAN) protocol. The Jetson Nano processes the data for any necessary computations (such as filtering, calculations, etc.), and the Raspberry Pi renders the GUI with the processed speed data. -There are many great README templates available on GitHub; however, I didn't find one that really suited my needs so I created this enhanced one. I want to create a README template so amazing that it'll be the last one you ever need -- I think this is it. +This architecture allows for improved performance by offloading processing to the Jetson Nano while simplifying the display connection on the Raspberry Pi. Check it out the pheripherals Readme to better understand about the project architecture. -Here's why: -* Your time should be focused on creating something amazing. A project that solves a problem and helps others -* You shouldn't be doing the same tasks over and over like creating a README from scratch -* You should implement DRY principles to the rest of your life :smile: +This project offers hands-on experience with software engineering, embedded systems, and automotive communication protocols, with a focus on performance optimization through a modular system design. -Of course, no one template will serve all projects since your needs may be different. So I'll be adding more in the near future. You may also suggest changes by forking this repo and creating a pull request or opening an issue. Thanks to all the people have contributed to expanding this template! +### Project Goals: +- **Design and implement** a Qt-based graphical user interface (GUI) for displaying speed data on the Raspberry Pi. +- **Use the Jetson Nano** for handling all processing tasks related to speed data and mathematical calculations. +- **Integrate** a Raspberry Pi with an Arduino-based speed sensor using the CAN protocol. +- **Display real-time speed** data on the instrument cluster. +- **Test the application** in realistic driving scenarios. +- **Document** the entire project, including system architecture, software design, and implementation details. -

(back to top)

+**BONUS:** Display battery level on the instrument cluster. -### Built With +### Architecture Overview -This section should list any major frameworks/libraries used to bootstrap your project. Leave any add-ons/plugins for the acknowledgements section. Here are a few examples. +- **Jetson Nano:** Handles all the computational tasks and mathematical processing for the instrument cluster. It processes speed sensor data and other inputs before sending them to the Raspberry Pi. +- **Raspberry Pi:** Dedicated to rendering the GUI with Qt, displaying the processed data received from the Jetson Nano over CAN bus. -* [![Next][Next.js]][Next-url] -* [![React][React.js]][React-url] -* [![Vue][Vue.js]][Vue-url] -* [![Angular][Angular.io]][Angular-url] -* [![Svelte][Svelte.dev]][Svelte-url] -* [![Laravel][Laravel.com]][Laravel-url] -* [![Bootstrap][Bootstrap.com]][Bootstrap-url] -* [![JQuery][JQuery.com]][JQuery-url] +--- -

(back to top)

+### Built With - -## Getting Started +This section lists the major frameworks, libraries, and tools used in this project. -This is an example of how you may give instructions on setting up your project locally. -To get a local copy up and running follow these simple example steps. +#### Technologies and Frameworks -### Prerequisites +- [![Qt](https://img.shields.io/badge/Qt-41CD52?style=for-the-badge&logo=qt&logoColor=white)](https://www.qt.io/) +- [![Python](https://img.shields.io/badge/Python-3776AB?style=for-the-badge&logo=python&logoColor=white)](https://www.python.org/) +- [![C++](https://img.shields.io/badge/C++-00599C?style=for-the-badge&logo=c%2B%2B&logoColor=white)](https://isocpp.org/) -This is an example of how to list things you need to use the software and how to install them. -* npm - ```sh - npm install npm@latest -g - ``` - -### Installation +#### Communication Protocols -_Below is an example of how you can instruct your audience on installing and setting up your app. This template doesn't rely on any external dependencies or services._ +- [![CAN Bus](https://img.shields.io/badge/CAN%20Bus-Protocol-000000?style=for-the-badge)](https://www.kvaser.com/can/) +- [![SPI](https://img.shields.io/badge/SPI-Protocol-000000?style=for-the-badge)](https://en.wikipedia.org/wiki/Serial_Peripheral_Interface) +- [![I2C](https://img.shields.io/badge/I2C-Protocol-000000?style=for-the-badge)](https://en.wikipedia.org/wiki/I%2F2C) -1. Get a free API Key at [https://example.com](https://example.com) -2. Clone the repo - ```sh - git clone https://github.com/github_username/repo_name.git - ``` -3. Install NPM packages - ```sh - npm install - ``` -4. Enter your API in `config.js` - ```js - const API_KEY = 'ENTER YOUR API'; - ``` -5. Change git remote url to avoid accidental pushes to base project - ```sh - git remote set-url origin github_username/repo_name - git remote -v # confirm the changes - ``` -

(back to top)

+#### Hardware - -## Usage +- [![Jetson Nano](https://img.shields.io/badge/Jetson%20Nano-Developer%20Kit-76B900?style=for-the-badge&logo=nvidia&logoColor=white)](https://developer.nvidia.com/embedded/jetson-nano) +- [![Raspberry Pi](https://img.shields.io/badge/Raspberry%20Pi-C51A4A?style=for-the-badge&logo=raspberry-pi&logoColor=white)](https://www.raspberrypi.org/) +- [![Arduino](https://img.shields.io/badge/Arduino-00979D?style=for-the-badge&logo=arduino&logoColor=white)](https://www.arduino.cc/) -Use this space to show useful examples of how a project can be used. Additional screenshots, code examples and demos work well in this space. You may also link to more resources. +--- -_For more examples, please refer to the [Documentation](https://example.com)_ +### Usage +Once the application is up and running, the instrument cluster will display `real-time speed data` and the `vehicle's battery status` on an LCD screen. The data is continuously updated as it is received **via the CAN bus**. -

(back to top)

+A demonstration of the running application can be seen in the GIF below: - -## Roadmap +[DEMONSTRATION GIF WILL BE ATTACHED] +--- -- [x] Add Changelog -- [x] Add back to top links -- [ ] Add Additional Templates w/ Examples -- [ ] Add "components" document to easily copy & paste sections of the readme -- [ ] Multi-language Support - - [ ] Chinese - - [ ] Spanish +## Roadmap -See the [open issues](https://github.com/othneildrew/Best-README-Template/issues) for a full list of proposed features (and known issues). +- **v1.0:** Initial release with basic speedometer functionality. +- **v1.1:** Add PiRacer battery level display. +- **v2.0:** Implement advanced features like trip data, RPM counter, and GPS integration. +- **v3.0:** Testing and validation on various real-world driving conditions. -

(back to top)

+--- - ## Contributing -Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are **greatly appreciated**. - -If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". -Don't forget to give the project a star! Thanks again! - -1. Fork the Project -2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`) -3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`) -4. Push to the Branch (`git push origin feature/AmazingFeature`) -5. Open a Pull Request - -### Top contributors: +If you’d like to contribute to this project, please fork the repository, create a feature branch, and submit a pull request with your changes. Contributions are welcome to improve the system, add new features, or fix bugs. - - contrib.rocks image - +- Fork the repository +- Create a new branch for your feature (`git checkout -b feature-name`) +- Commit your changes (`git commit -am 'Add feature'`) +- Push to the branch (`git push origin feature-name`) +- Open a pull request -

(back to top)

+--- - ## License -Distributed under the MIT License. See `LICENSE.txt` for more information. +Distributed under the MIT License. See `LICENSE` for more information. -

(back to top)

+--- - ## Contact -Name - [@your_twitter](https://twitter.com/your_username) - email@example.com +For questions or suggestions, feel free to reach out: -Project Link: [https://github.com/your_username/repo_name](https://github.com/your_username/repo_name) +- **Project lead:** [Your Name](https://your-website.com) +- **Email:** your-email@example.com -

(back to top)

+--- - ## Acknowledgments -Use this space to list resources you find helpful and would like to give credit to. I've included a few of my favorites to kick things off! - -* [Choose an Open Source License](https://choosealicense.com) -* [GitHub Emoji Cheat Sheet](https://www.webpagefx.com/tools/emoji-cheat-sheet) -* [Malven's Flexbox Cheatsheet](https://flexbox.malven.co/) -* [Malven's Grid Cheatsheet](https://grid.malven.co/) -* [Img Shields](https://shields.io) -* [GitHub Pages](https://pages.github.com) -* [Font Awesome](https://fontawesome.com) -* [React Icons](https://react-icons.github.io/react-icons/search) - -

(back to top)

- - - - - -[contributors-shield]: https://img.shields.io/github/contributors/othneildrew/Best-README-Template.svg?style=for-the-badge -[contributors-url]: https://github.com/othneildrew/Best-README-Template/graphs/contributors -[forks-shield]: https://img.shields.io/github/forks/othneildrew/Best-README-Template.svg?style=for-the-badge -[forks-url]: https://github.com/othneildrew/Best-README-Template/network/members -[stars-shield]: https://img.shields.io/github/stars/othneildrew/Best-README-Template.svg?style=for-the-badge -[stars-url]: https://github.com/othneildrew/Best-README-Template/stargazers -[issues-shield]: https://img.shields.io/github/issues/othneildrew/Best-README-Template.svg?style=for-the-badge -[issues-url]: https://github.com/othneildrew/Best-README-Template/issues -[license-shield]: https://img.shields.io/github/license/othneildrew/Best-README-Template.svg?style=for-the-badge -[license-url]: https://github.com/othneildrew/Best-README-Template/blob/master/LICENSE.txt -[linkedin-shield]: https://img.shields.io/badge/-LinkedIn-black.svg?style=for-the-badge&logo=linkedin&colorB=555 -[linkedin-url]: https://linkedin.com/in/othneildrew -[product-screenshot]: images/screenshot.png -[Next.js]: https://img.shields.io/badge/next.js-000000?style=for-the-badge&logo=nextdotjs&logoColor=white -[Next-url]: https://nextjs.org/ -[React.js]: https://img.shields.io/badge/React-20232A?style=for-the-badge&logo=react&logoColor=61DAFB -[React-url]: https://reactjs.org/ -[Vue.js]: https://img.shields.io/badge/Vue.js-35495E?style=for-the-badge&logo=vuedotjs&logoColor=4FC08D -[Vue-url]: https://vuejs.org/ -[Angular.io]: https://img.shields.io/badge/Angular-DD0031?style=for-the-badge&logo=angular&logoColor=white -[Angular-url]: https://angular.io/ -[Svelte.dev]: https://img.shields.io/badge/Svelte-4A4A55?style=for-the-badge&logo=svelte&logoColor=FF3E00 -[Svelte-url]: https://svelte.dev/ -[Laravel.com]: https://img.shields.io/badge/Laravel-FF2D20?style=for-the-badge&logo=laravel&logoColor=white -[Laravel-url]: https://laravel.com -[Bootstrap.com]: https://img.shields.io/badge/Bootstrap-563D7C?style=for-the-badge&logo=bootstrap&logoColor=white -[Bootstrap-url]: https://getbootstrap.com -[JQuery.com]: https://img.shields.io/badge/jQuery-0769AD?style=for-the-badge&logo=jquery&logoColor=white -[JQuery-url]: https://jquery.com +- **Qt Framework:** [Qt](https://www.qt.io/) – A cross-platform framework for GUI applications. +- **Jetson Nano:** [NVIDIA Jetson Nano](https://developer.nvidia.com/embedded/jetson-nano) – A powerful single-board computer for processing tasks. +- **Raspberry Pi Foundation:** [Raspberry Pi](https://www.raspberrypi.org/) – The small, powerful computer that powers the display side of the project. +- **Arduino:** [Arduino](https://www.arduino.cc/) – A versatile open-source electronics platform used for sensor data collection. +- **CAN Bus Protocol:** [CAN Protocol](https://www.kvaser.com/can/) – The communication protocol used to connect different ECUs in the vehicle. From fc552132fe102aaa8aeba201d223b05c37fc87dc Mon Sep 17 00:00:00 2001 From: Luiza Date: Thu, 19 Dec 2024 16:31:43 -0300 Subject: [PATCH 02/13] logo add --- README.md | 19 ++++++++++++++++++- images/logo.png | Bin 0 -> 39328 bytes 2 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 images/logo.png diff --git a/README.md b/README.md index f27324f..69b3364 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,21 @@ -# Instrument Cluster + +
+
+ + Logo + +

Instrument Cluster

+

+ A real-time vehicle speed and data display. +
+
+ View Demo + · + Report Bug + · + Request Feature +

+
## Table of Contents 1. [About The Project](#about-the-project) diff --git a/images/logo.png b/images/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..d53f9a2e29a285733cdffe302c752c617223ded7 GIT binary patch literal 39328 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 Date: Mon, 6 Jan 2025 12:15:00 +0000 Subject: [PATCH 03/13] changes into readme file --- Arduino | 1 + README.md | 57 ++++++++++++++++++++++++++++++++++++------------------- 2 files changed, 39 insertions(+), 19 deletions(-) create mode 160000 Arduino diff --git a/Arduino b/Arduino new file mode 160000 index 0000000..9979666 --- /dev/null +++ b/Arduino @@ -0,0 +1 @@ +Subproject commit 99796662b861fb00b3e617685f4a8a9d7a1af412 diff --git a/README.md b/README.md index 69b3364..e6ecbde 100644 --- a/README.md +++ b/README.md @@ -1,15 +1,12 @@

- - Logo -

Instrument Cluster

A real-time vehicle speed and data display.
+ [GIF]
- View Demo · Report Bug · @@ -80,6 +77,8 @@ This section lists the major frameworks, libraries, and tools used in this proje ### Usage Once the application is up and running, the instrument cluster will display `real-time speed data` and the `vehicle's battery status` on an LCD screen. The data is continuously updated as it is received **via the CAN bus**. +[**step by step usage will be attached**] + A demonstration of the running application can be seen in the GIF below: [DEMONSTRATION GIF WILL BE ATTACHED] @@ -94,30 +93,50 @@ A demonstration of the running application can be seen in the GIF below: --- -## Contributing +## The team +> We worked together to develop and enhance this project, sharing knowledge and experiences throughout the process. -If you’d like to contribute to this project, please fork the repository, create a feature branch, and submit a pull request with your changes. Contributions are welcome to improve the system, add new features, or fix bugs. +

+
+ Rui Pires +
+ Rui Pires +
+
+ Luiza Zilio +
+ Luiza Zilio +
+
+ Jorge Cruz +
+ Jorge Cruz +
+ +
-- Fork the repository -- Create a new branch for your feature (`git checkout -b feature-name`) -- Commit your changes (`git commit -am 'Add feature'`) -- Push to the branch (`git push origin feature-name`) -- Open a pull request ---- +## Contributing -## License +Contributions are what make the open source community such an amazing place to learn, inspire, and create. **Any contributions you make are greatly appreciated.** -Distributed under the MIT License. See `LICENSE` for more information. +If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again! ---- +1. Fork the repository +2. Create a new branch for your feature (`git checkout -b feature-name`) +3. Commit your changes (`git commit -am 'Add feature'`) +4. Push to the branch (`git push origin feature-name`) +5. Open a pull request -## Contact +--- -For questions or suggestions, feel free to reach out: +## License -- **Project lead:** [Your Name](https://your-website.com) -- **Email:** your-email@example.com +Distributed under the MIT License. See `LICENSE` for more information. --- From 63d9534e746db16150bb5d79e277855063db89b4 Mon Sep 17 00:00:00 2001 From: ziliolu Date: Mon, 6 Jan 2025 13:55:59 +0000 Subject: [PATCH 04/13] rounded pics --- README.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index e6ecbde..e8e3edf 100644 --- a/README.md +++ b/README.md @@ -98,28 +98,29 @@ A demonstration of the running application can be seen in the GIF below: + ## Contributing Contributions are what make the open source community such an amazing place to learn, inspire, and create. **Any contributions you make are greatly appreciated.** From 8f05c8a7b2f02a80c708376070e0229eb122cfc5 Mon Sep 17 00:00:00 2001 From: Luiza Zilio <86267379+ziliolu@users.noreply.github.com> Date: Mon, 6 Jan 2025 13:57:15 +0000 Subject: [PATCH 05/13] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index e8e3edf..e816be6 100644 --- a/README.md +++ b/README.md @@ -121,6 +121,7 @@ A demonstration of the running application can be seen in the GIF below: + ## Contributing Contributions are what make the open source community such an amazing place to learn, inspire, and create. **Any contributions you make are greatly appreciated.** From 35b09697498a85b077d4ac14e8e65934e29e7cfe Mon Sep 17 00:00:00 2001 From: Luiza Zilio <86267379+ziliolu@users.noreply.github.com> Date: Mon, 6 Jan 2025 13:57:40 +0000 Subject: [PATCH 06/13] Update README.md --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index e816be6..48cce6e 100644 --- a/README.md +++ b/README.md @@ -102,6 +102,11 @@ A demonstration of the running application can be seen in the GIF below:
Rui Pires
+
+ Jorge Cruz +
+ Jorge Cruz +
Luiza Zilio
From afb62943161c050b15adc572d5d9e0beabdd9bfe Mon Sep 17 00:00:00 2001 From: Luiza Zilio <86267379+ziliolu@users.noreply.github.com> Date: Mon, 6 Jan 2025 13:58:36 +0000 Subject: [PATCH 07/13] Update README.md --- README.md | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 48cce6e..9aa580a 100644 --- a/README.md +++ b/README.md @@ -98,27 +98,22 @@ A demonstration of the running application can be seen in the GIF below:
- Rui Pires + Rui Pires
Rui Pires
- Jorge Cruz -
- Jorge Cruz -
- @@ -126,7 +121,6 @@ A demonstration of the running application can be seen in the GIF below: - ## Contributing Contributions are what make the open source community such an amazing place to learn, inspire, and create. **Any contributions you make are greatly appreciated.** From 024409c90a2b0025b640cfe04b753149f2fff0b5 Mon Sep 17 00:00:00 2001 From: Luiza Zilio <86267379+ziliolu@users.noreply.github.com> Date: Mon, 6 Jan 2025 14:00:37 +0000 Subject: [PATCH 08/13] Update README.md --- README.md | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 9aa580a..02537b5 100644 --- a/README.md +++ b/README.md @@ -97,30 +97,28 @@ A demonstration of the running application can be seen in the GIF below: > We worked together to develop and enhance this project, sharing knowledge and experiences throughout the process.
-
- Rui Pires + -
- Luiza Zilio + -
- Jorge Cruz + - - - ## Contributing Contributions are what make the open source community such an amazing place to learn, inspire, and create. **Any contributions you make are greatly appreciated.** From 88ca6574c896a3452ad49a3f1036681c54a6afa8 Mon Sep 17 00:00:00 2001 From: Luiza Zilio <86267379+ziliolu@users.noreply.github.com> Date: Mon, 6 Jan 2025 14:15:13 +0000 Subject: [PATCH 09/13] Update README.md --- README.md | 28 ++++++---------------------- 1 file changed, 6 insertions(+), 22 deletions(-) diff --git a/README.md b/README.md index 02537b5..8510dec 100644 --- a/README.md +++ b/README.md @@ -96,28 +96,12 @@ A demonstration of the running application can be seen in the GIF below: ## The team > We worked together to develop and enhance this project, sharing knowledge and experiences throughout the process. -
-
- Rui Pires -
- Rui Pires -
-
- Luiza Zilio -
- Luiza Zilio -
-
- Jorge Cruz -
- Jorge Cruz -
- -
+ Rui Pires + · + Luiza Zilio + . + Luis Filipe Carvalho + Jorge Cruz ## Contributing From 4e8d9ef7fcfe755d0d777f548ae46d170b1cd3c4 Mon Sep 17 00:00:00 2001 From: Luiza Zilio <86267379+ziliolu@users.noreply.github.com> Date: Mon, 6 Jan 2025 14:15:33 +0000 Subject: [PATCH 10/13] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 8510dec..7a61de3 100644 --- a/README.md +++ b/README.md @@ -101,6 +101,7 @@ A demonstration of the running application can be seen in the GIF below: Luiza Zilio . Luis Filipe Carvalho + . Jorge Cruz ## Contributing From ab2ebec8654f4e50f23502316592d792b29297e1 Mon Sep 17 00:00:00 2001 From: Luiza Zilio <86267379+ziliolu@users.noreply.github.com> Date: Mon, 6 Jan 2025 14:15:59 +0000 Subject: [PATCH 11/13] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7a61de3..6fc8d0c 100644 --- a/README.md +++ b/README.md @@ -96,7 +96,7 @@ A demonstration of the running application can be seen in the GIF below: ## The team > We worked together to develop and enhance this project, sharing knowledge and experiences throughout the process. - Rui Pires + Rui Pires · Luiza Zilio . From 4410abb6321fffe8ac00fa5ae607f029fe4f75da Mon Sep 17 00:00:00 2001 From: Luiza Zilio <86267379+ziliolu@users.noreply.github.com> Date: Mon, 6 Jan 2025 14:16:36 +0000 Subject: [PATCH 12/13] Update README.md --- README.md | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 6fc8d0c..e10d5be 100644 --- a/README.md +++ b/README.md @@ -96,13 +96,10 @@ A demonstration of the running application can be seen in the GIF below: ## The team > We worked together to develop and enhance this project, sharing knowledge and experiences throughout the process. - Rui Pires - · - Luiza Zilio - . - Luis Filipe Carvalho - . - Jorge Cruz + - Rui Pires + - Luiza Zilio + - Luis Filipe Carvalho + - Jorge Cruz ## Contributing From 252b55a72045eb6e1401857e4cb18f61c955547f Mon Sep 17 00:00:00 2001 From: Luiza Zilio <86267379+ziliolu@users.noreply.github.com> Date: Mon, 6 Jan 2025 14:18:28 +0000 Subject: [PATCH 13/13] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index e10d5be..d56bb8b 100644 --- a/README.md +++ b/README.md @@ -93,8 +93,8 @@ A demonstration of the running application can be seen in the GIF below: --- -## The team -> We worked together to develop and enhance this project, sharing knowledge and experiences throughout the process. +## The Team 🤝 +> Together, we've collaborated to bring this project to life, combining our knowledge, skills, and experience every step of the way. It has been a great journey of learning and growing as a team. - Rui Pires - Luiza Zilio