I've kept a private list of ideas for programming projects for years. These projects aren't dream ideas for striking it rich. No. They're projects for learning. Little projects. Things I'd like to see exist. Projects that would stretch my skills a bit but not require working another 20 hours a week.
I know I learn best by building things, trying to figure out what I don't know, and doing online research when I'm stuck.
When it comes to learning a new programming language, library, or framework, knowing what an appropriate project is for learning can be overwhelming on top of learning the new thing! So I've collected over 100 project ideas of varying difficulty and type into a free book called Projectbook. It's free and open source.
The projects contain specifications, concepts, examples, and mock-ups I designed to get you inspired and building things. From CLIs to apps to games, I've collected all of the projects I'm personally interested in building.
πΊ Prefer a video intro?
Okay, let's dig into some examples of some of the projects.
HTTPal CLI
The gist: write a CLI that makes HTTP network requests and responds with the output.
curl
and wget
are common programs used to transfer data to or from a server, like downloading a file over HTTP. This project is writing something similar to them. Start with just GET requests and then go from there.
I always call this idea httpal
because it's kinda fun. It's your buddy for making requests!
Spec
This could look something like:
httpal https://openlibrary.org/books/OL7353617M.json
That would make a GET request to that API endpoint for Fantastic Mr. Fox and return the JSON, which could then be output to a file like:
httpal https://openlibrary.org/books/OL7353617M.json > fmf.json
Concepts
- Making network requests, often times available within the standard library of a language
- Outputting the response body
- Basic CLI interactions
Extra Credit
- Follow redirects
- Support different forms of authentication and request headers
- Support other HTTP methods like PUT, POST, and DELETE
- Support specifying a request body file, like a JSON file, to include in the request body
- Support other protocols! Maybe a better name would be
reqbud
. π¬ - What if program specifically catered to those interacting with GraphQL APIs? That means it would always POST to the same endpoint but allow for configurable requests and variables.
gqlpal
??? - What if there was a way to load requests for a project from a variety of spec files and easily make those requests? Like a CLI version of Postman or Paw.
RecipeHub
Want to build a full-stack web app? Okay!
The gist: GitHub for recipes! But for food, not software.
I love cooking and baking. It's seriously so fun and creative. I love taking recipes and adjusting and tweaking them to my liking. The neat thing about recipes is that they're not observed by copyright! The photos, the descriptions, etc. are, but the actual ingredients and steps aren't. That always gets me thinking about how awesome it would be if there was a web application for people to share their recipes on. It would be centered around loading quickly, browsing by tags, collecting your favorites, and copying and modifying others' recipes.
I'm hungry and excited just writing this!
Mock-Ups
There are a lot of features that could exist for this app, and mocking them all up would be a lot, but here's a gist of what some of the key elements of the UI could be like (viewing your recipes, viewing a recipe, and the recipe form):
Specs
- User accounts (authentication)
- Recipe management
- Data model for a recipe:
- Name
- Description
- Ingredients
- Instructions
- Data model for a recipe:
- Viewing another user's recipes
- Fork a recipe (make a copy to edit and adjust to your liking, but maintain an association to the original)
Concepts
- Authentication
- Permissions
- Data management
- Network graph
Extra Credit
- Add ability to favorite another user's recipes & view your favorites
- More metadata like prep time and cooking time (and thus total time)
- Image upload for a recipe
- Tags for things like vegan, breakfast, etc. where you can discover similar recipes
- If you build the back-end with an API, you could then build out a mobile app that consumes it! That would be pretty handy when cooking in the kitchen
- Dream feature: when viewing a recipe on the mobile app, prevent the phone from sleeping
Find over 100 more projects in Projectbook.
Let me know what you think and if it inspires you to build anything.
Happy building!
Top comments (0)