Congratulations on reaching this phase of the course! Over the next few days, you will be working on your third project, which will allow you to further apply your knowledge and skills to build another real-world application. This exam project will serve as a demonstration of your proficiency in API usage, the implementation of the Bloc pattern for state management in Flutter, and the use of Supabase as a database management. It will focus on understanding Flutter's architecture, project structure, widgets, Bloc state management, and networking concepts.
Your task is to create a functional and user-friendly Weather app using Flutter with the implementation of the Bloc pattern for state management and Supabase. The app should accurately retrieve and display weather information based on the user's location or a location of their choice. Users should be able to view the current weather conditions, such as temperature, humidity, wind speed, and weather description (e.g., sunny, rainy, cloudy). All weather data should be fetched from a reliable weather API and displayed in a user-friendly manner.
-
Group Work: You and your group members are expected to work collaboratively on the capstone project. Each group member should contribute to the project, and collaboration among group members is encouraged to deliver a well-rounded and polished application.
-
Original Work: Your project should be an original creation. Do not copy or reuse code from previous boot camp assignments, external sources, or open-source projects. The capstone project is a showcase of your learning progress and creativity.
-
Version Control (Git): Create a Git repository for your capstone project. Commit frequently with descriptive messages to show your progress throughout the development.
-
Clean Code: Write code that is clear, well-organized, and follows standard coding conventions. Use meaningful variable and function names to enhance code readability. Maintain a consistent coding style across the project. Consider implementing the Clean Architecture principles to organize your codebase, separating concerns into different layers (e.g., presentation, domain, data) for better maintainability and scalability.
-
Academic Integrity: Ensure you adhere to academic integrity principles, avoiding plagiarism and unauthorized collaboration.
-
Learning References: We encourage you to be self-learning and creative, and to use other learning resources to enhance your understanding and implementation. However, implement your own solutions independently and avoid copying or reusing code from external sources.
- Exam Start Date: 31/8/2023 - 10:00 AM
- Exam Submission Deadline: 3/9/2023 – 9:59 AM
-
Correct Structure: Ensure that the application is built with the appropriate structure. Follow Flutter's best practices for organizing code and project files.
-
Code Quality:
- The project code should follow Flutter's best practices for organizing code and project files.
- Your code should be clean, well-structured, and easy to understand.
- Use meaningful variable and function names to enhance code readability.
- Adhere to standard coding conventions and formatting guidelines.
- Make proper use of programming concepts and techniques. Implement efficient algorithms and follow Flutter's design patterns to create a robust and functional app.
-
Applying Concepts: Make proper use of programming concepts and techniques. Implement efficient algorithms and follow Flutter's design patterns to create a robust and functional.
-
Bloc Pattern Implementation:
- Implement the Bloc pattern for state management in your Weather app.
- Use blocs to manage the app's state and data updates effectively.
- Ensure that the blocs are properly structured and that they separate the business logic from the presentation layer.
-
Data Representation: Treat weather data as objects using a model. Create a model class to define the structure of weather information, including attributes like name, quantity, etc.
-
Supabase: Implement a supabase functions to retrieve and store weather data that is retrieved from API.
-
App Design and User Experience:
- The app should have an intuitive and visually appealing user interface.
- Ensure that the design elements, colors, and fonts are consistent and pleasing to the eye.
- Users should be able to navigate the app easily and access all features without confusion.
- Use appropriate icons and graphics to represent weather conditions and forecast details.
-
Error Handling: Implement proper error handling mechanisms for cases where the weather API data is not available or errors occur during data retrieval.
- Dark Mode: Implement a dark mode option in the Weather app, allowing users to switch between light and dark themes based on their preferences. Ensure that the dark mode is visually appealing and does not compromise the app's user experience.
- Location Autocomplete: Enhance the user experience by adding location autocomplete functionality to the app's search feature. Utilize a location-based API or service to provide suggestions as users type, making it easier for them to select their desired location.
- Weather Animations: Add subtle animations to the app's UI to create a more engaging and dynamic user experience. For example, you could animate weather icons, temperature changes, or background transitions based on weather conditions.
- Weather Forecast: Extend the app to display weather forecasts for the upcoming days, allowing users to plan ahead and stay prepared for changing weather conditions.
-
GitHub Submission:
- Create a Fork from the exam’s GitHub repository.
- Create a new branch with your name, i.e., Nawaf-Alshawan.
- Commit frequently with descriptive messages to show your progress.
- Finally, create a Pull Request to the exam’s original repository containing your solution.
-
Readme File:
- Provide a README.md file in the root directory of your riles.
- Provide a detailed and well-structured description of the project in the README file, including the following sections:
- Project Overview:
- Screenshots: Include relevant screenshots of the app to showcase its appearance and functionalities. Visuals can help users understand the app's design and layout.
- Features:
- Technologies Used: Mention the technologies and libraries utilized in the development of the app. This could include mentioning Flutter, specific plugins used, or any other relevant technologies.
- Code Explanation: Optionally, provide explanations or documentation for the key parts of the code if necessary. This could be particularly helpful for complex algorithms or unique implementations.
- Dart Tutorials
- Flutter Documentation
- Flutter Tutorial by GeeksforGeeks
Good luck with your exam project! If you have any general questions or need guidance, don't hesitate to reach out to the instructor. Happy coding!