Authors: Randy Garcia, Suryateja Duvvuri, Nicholas Wong, Yujie Kang
Our project is based on recreating the main component features that come with a regular weather app but also implementing some of our own unique features that don’t come with usual weather apps.
The weather app not only has the ability to display weather information but it allows us to be creative when it comes to implementing other useful features such as setting up personalized suggestions for the user, and allowing the user to share weather pictures to connect with others which becomes very interactive, compared to the usual weather apps. Simultaneously, we’ll be able to learn the graphical library and other new libraries, along with using the api to extract and display information.
We will be focusing on C++ as our primary language. Some tools we will be using would be a free provided weather API that gathers information regarding the weather from a specific location. In addition, we will also be using the QTgraphical framework implemented into C++ to develop the features graphically. We will be using Github, Git, and VS Code to develop and test most of our code
The input of our project will revolve around the username and password that allows the user to log in to their own account. The input will also contain user location that contributes to the weather api to display accurate information regarding the weather. The output will consist of the weather conditions, weather forecast, recommendation on clothing wear, and activities for that specific day depending on weather conditions.
- Regular weather app(displays time, date, location, temperature)
- the state of the weather(sunny, cloudy etc..)
- clothes suggestions based off of weather
- log in with username and password
- calendar for user to add events
- quote bar generator
- music button to change background into a moving lofi image
- a Pomodoro timer & to-do list
- to convert the temperature to their desired unit.
In addition to completing the "User Interface Specification" and "Class Diagram" sections below, you will need to:
- Create an "Epic" (note) for each feature. Place these epics in the
Product Backlogcolumn- Complete your first sprint planning meeting to plan out the next 7 days of work.
- Break down the "Epics" into smaller actionable user stories (i.e. smaller development tasks). Convert them into issues and assign them to team members. Place these in the
TODOcolumn.- These cards should represent roughly 7 days worth of development time for your team. Then, once the sprint is over you should be repeating these steps to plan a new sprint, taking you until your second scrum meeting with the reader in phase III.
- Schedule two check-ins using Calendly. You need to pick both time slots during your lab on week 6. Your entire team must be present for both check-ins.
- The first check-in needs to be scheduled with your lab TA. During that meeting, you will discuss your project design/class diagram from phase II.
- The second check-in should be scheduled with a reader. During that meeting you will discuss:
- The tasks you are planning for the first sprint
- How work will be divided between the team members
Include a navigation diagram for your screens and the layout of each of those screens as desribed below. For all the layouts/diagrams, you can use any tool such as PowerPoint or a drawing program. (Specification requirement is adapted from this template)
Navigation Diagram.pdf The navigation diagram shows how users will interact with our software. This diagram includes the features that our software will have, bringing a visual representation.
Main Menu(after login): Weather Home Page
- Displays features such as
- quote bar generator, hourly weather forecast, clothes suggestions, and to-do list
- Buttons to redirect to other pages to show more features
- Includes a page for timer, temperature converter, calendar, and login
Menu(before login): Menu without logging
- Application is started off with a mere home page without any info
- Exit button is there to terminate the application itself
Login page: Login
- Username and password prompts the user.
- Uses location api everytime the user is logged in.
Menu with alerts and notifications: Notifications popup and night theme
- Notifications popup to prompt the user
- Alerts popup depending on the weather condition
- Different theme is shown according to the time(or the button response from the user in the timer page)
Timer: Timer page
- Change theme button is for changing the background, affecting all other pages of the application
- Start & Reset button is there for using the timer
Calendar: Calendar page
- Dates and weeks are shown in a google calendar format
- user is prompted with textboxes to add event details(name, date, time, location)
Temperature converter: Converter page
- user is prompted to put a fahrenheit degree value(or celsius value
- result is shown in either textbox once the user clicks convert button
SkyTrack UML Diagram - UML Class.pdf
Description: The UML diagram represents the structure and representation for our project. In this UML diagram we use a login screen that uses two private variables and one public function to gather information from the user input. The login screen is the main interface that allows the user to enter our application and be shown the features that are provided. In addition, the user menu is the second main component. This is due to the fact of displaying all possible features in our project. That being weather info, calendar, alert messages, location status and a log out button. Due to the user menu being the second main component of our project, the features provide are all connected to one another in some sort of way. For example, the location and calendar class are both aggregation types towards the use user menu class. While the To-Do list and notification class are compositions to the claendar and weather information class.
SkyTrack UML Diagram - Revised UML Class.pdf
Description: From the creation of our new UML diagram and through the help of our TA Garrett, sevral major changes were made. These changes allowed our team to fully understand the functions needed and which classes belong to one another. For example, the differences in this uml diagram from the other would be the surplus of several functions and the composition relation with several classes. In accordance to the SOLID principles, we can see that the main menu function is heavily focused on the display and the gui buttons that basically allow these display features to work. This follows the SOLID principle through the single responsibility principle. This change allowed us to write better code because it allows us to create display functions in one signle class rather than several classes where it can cause a lot of confusion. Some other changes that were made were the surplus of several new classes . These classes will benefit other classes due to composition. The composition displayed in the UML diagram would be the weather, tasks, date, time and calendar class. As mentioned previously, new classes were created to allow us to know what functions belong in those classes. This follows the SOLID principles due to each class having its own responsibility. In adittion, we can also apply the dependency inversion principle. The reason for this is because of our login menu. We know that this principle makes entities depend on abstractions not on concretions. Due to our login menu, we give the user the ability to choose their own username and password. Because of this it abides to the dependancy inversion principle because the login menu connects to the main menu where one can see the enitre ui/ data being displayed.
Total Number of commits for this project is 155 commits in a span of 4 weeks.
Instructions on installing and running your application Steps to install and run Skytrack:
- https://www.qt.io/download click link to go to qt page and install qt.
- Make account and click link on the left with appropriate device to install qt.
- After installation, open Qt Maintenance tool and set configuratioins to download Qt Creator.
- After Qt Creator is installed, perform git pull of this repository.
- Open Qt Creator and select open Project, select files for Skytrack.
- Qt Creator has its own ide, therefore the application can be run through Qt instead of the terminal. Select build option on the bottom left corner or right click the project files and clicking run cmake.
- After the project has been buit, run by selecting the run/play icon in the bottom left corner.
In regards to our unit testing, we used QTest to build and create our unit test. Due to error confrontation, we were only able to hard code the unit test.The unit test are the converter.cpp, the api test.cpp and several more. We were not able to use functions within these tests. In addition, QT has a built in memcheck, when running this memcheck, it gave us no error. But due to not displaying the data, it does not verify it accuratley.






