Project Ideas
Are you stuck? Look at these ideas for inspiration. Also consider the data that you can pull from a public API, that could lead to a really interesting application!
ChatGPT’s Suggestions
Project ideas, courtesy of ChatGPT. Choose an idea that aligns with your interests and skills! If you use one of these, you will likely need to add 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. To make it really interesting, integrate with their Google Calendar.
- Note-taking App: Develop a note-taking application where users can create, organize, and search through their notes. Include features like rich text formatting, image embedding, tagging, and synchronization of notes 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. Let them export/import data from their banking application.
- 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. Encrypt everything!
- 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. Provide alerts based on conditions that they set e.g., “it’s below 10 degrees, so wear a coat”.
- 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.
- Movie 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!
Jeff’s Examples
Some contrived (but reasonable) examples.
Recipe tracker
Image courtesy of Recipe Keeper
Recipe Tracker
Users
A group of friends that want to cook together e.g., roommates.
Problem
How do you keep track of what recipes you have tried, and which ones each person liked?
Proposal
A recipe planning and tracking application that allows users to:
- Enter recipes (imported from a recipe site or manually entered).
- Browse a collection of recipes, with pictures. Search your recipes and friends recipes.
- Rate recipes, and view what other users have rated.
- Generate a list of “most wanted” recipes, or “most popular” after the group has tried them.
- Extra: track food allergies and support automatic filtering of recipes.
Design
Technical aspects to consider.
- Android application, with screens for all of this functionality
- Multi-user, so each person has a profile (login/logout/edit).
- Local database for caching details (SQLite & file storage)
- Remote database for storing user data and recipes (Firebase)
- OAuth authentication using Google accounts (also Firebase)
Software design tool
Image from Visual Paradigm.
UML tool
Users
Software developers that are interested in collaborative design.
Problem
Collaborative tools aren’t tailored towards software design, so we end up trying to create UML documents in Google Docs (awkward). UML tools often don’t support collaborative, which would be incredibly valuable!
Our goal is collaborative UML drawings.
Proposal
An online tool that lets multiple people work together to draw UML diagrams in real-time.
- Can have multiple drawing canvases; on launch choose which one to open and work on.
- Canvases should have a name, date-created, date-edited. Anyone can edit anything.
- Drawing tools: draw shapes; draw lines to connect them; move shapes; change properties.
- Export canvas to JPG (PNG, other formats) for use in other applications.
- Extra: Templates so that you can draw a plain box-arrows diagram, or a specific UML diagram e.g., class diagram, component diagram. (Do not support all UML, but a small subset; focus on infrastructure to add more later).
- Extra: Support more diagrams by expanding the templates!
Design
- Desktop tool, since it’s more precise for drawing.
- Multi-user, so each person has a profile (login/logout/edit).
- Investigate canvas classes in Compose for drawing arbitrary shapes.
- SQL database, since we expect a large collection of templates (predefined shapes) and think that’s a better approach.
- Will likely need a way to handle real-time updates for multiple users working on a document e.g., WebSockets.