#
M0: Selecting a Project
After choosing a team, selecting a project is the next important decision you need to make.
Your will define, design and build an Android application that solves a particular problem for users. Your target should be a well-designed, robust application that wouldn't feel out-of-place on a commercial app store. Dream big!
An ideal project is something that (a) addresses a problem for users, and (b) uses technology to solve that problem in a novel or interesting way.
#
Steps to Take
We recommend the following steps to find a project idea:
- Have an open discussion around any personal goals that you might have. For example, if you're interested in learning about a particular technology, or if you're interested in a particular domain, this might be a good opportunity to explore that.
- Review the project requirements to understand the type of application you need to design.
- Brainstorm! Try and identify potential users, and problems that you could solve for them. If you need inspiration, look at existing applications and try and improve on those. This is important: identify the need first, and then secondly think of how to solve that need.
- Record all of your ideas. You want to capture everything, and as they say, "there is no bad idea" at this point!
- Discuss as a team and narrow down your ideas to a single problem/solution that you would like to address. It's perfectly fine to have a few ideas, but you should only work on one project.
#
Project Suggestions
Here's a few different sources of inspiration for your project:
#
ChatGPT generated list
So, you're really not sure what to build? Here's a few ideas courtesy of ChatGPT. Choose an idea that aligns with your interests and skills, and consider adding unique features to make your application stand out!
- Task Manager: Create a desktop task manager application that allows users to organize their tasks, set reminders, and prioritize tasks based on deadlines or importance.
- Note-taking App: Develop a note-taking application where users can create, organize, and search through their notes. Include features like rich text formatting, tagging, and synchronization across devices.
- Expense Tracker: Build a desktop expense tracker to help users manage their finances. Include features like expense categorization, budget tracking, and generating reports or visualizations.
- Password Manager: Design a password manager application that securely stores and manages users' login credentials for various accounts. Implement encryption and features like password generation and synchronization.
- Weather App: Create a desktop weather application that provides users with real-time weather information, forecasts, and weather alerts for their location or specified locations.
- Fitness Tracker: Build a fitness tracker application that helps users track their physical activity, set fitness goals, and monitor their progress over time. Include features like exercise logging, calorie tracking, and workout planning.
- Recipe Organizer: Develop a recipe organizer application where users can save, categorize, and search for recipes. Include features like meal planning, ingredient shopping lists, and recipe sharing.
- Code Snippet Manager: Design a code snippet manager application that allows developers to store, organize, and search through their code snippets. Include features like syntax highlighting, tagging, and integration with code editors.
- File Encryption Tool: Create a desktop application for encrypting and decrypting files to ensure users' data privacy and security. Implement strong encryption algorithms and user-friendly interface.
- Screen Capture Tool: Build a screen capture tool that allows users to capture screenshots or record screen activities. Include features like annotation tools, customizable capture settings, and sharing options.
- Music Player: Develop a desktop music player application with features like playlist management, equalizer settings, and support for various audio formats. Optionally, include online streaming capabilities.
- Calendar App: Design a calendar application that helps users manage their schedules, appointments, and events. Include features like multiple calendar views, event reminders, and synchronization with other calendar services.
- Language Learning Tool: Build a desktop application to help users learn a new language, with features like flashcards, vocabulary exercises, pronunciation practice, and language learning progress tracking.
- Move tracker: Build a mobile application to track movies that you've seen. Import movie data from IMDB, rate them, add comments and share reviews with your friends!
#
Public data/APIs
If you're still stuck for an idea, here are some interesting public APIs that you might be able to leverage (e.g., build an application for comic-book collectors, or weather enthusiasts!)
- Stack Overflow API: https://api.stackexchange.com/
- UWaterloo Open API: https://openapi.data.uwaterloo.ca/api-docs/index.html
- Notion API: https://developers.notion.com/
- Pokemon API: https://pokeapi.co/
- Marvel Developer Portal: https://developer.marvel.com/
- REST Countries: https://restcountries.com/
- NASA Open APIs: https://api.nasa.gov/
- Weather API: https://openweathermap.org/api
- Market Data API: https://polygon.io/
- News API: https://newsapi.org/
- YouTube API: https://developers.google.com/youtube/?ref=apilist.fun
- OMDb (Open Movie Database) API: https://www.omdbapi.com/
- DeckOfCards API: https://deckofcardsapi.com/
- Open Library API: https://openlibrary.org/developers/api
#
Gallery
For inspiration, look at the Gallery of past projects. This should give you the idea of the level of quality and polish that you need to get an A in this course. Avoid doing this until you have at least a small set of possible project ideas; we don't want everyone duplicating the first project they see in the Gallery!
#
How to submit
Surprise, you don't submit this! You do need to select a project before you can proceed to the M2 Project Proposal.