Over 100 project ideas for developers learning any new programming language
Tags: beginners, showdev, tutorials
Published: 2022-10-17 13:53:38

---
title: Over 100 project ideas for developers learning any new programming language
published: true
description: Introducing Projectbook, a free online book collecting ideas to help developers.
tags: 
- beginners
- showdev
- tutorials
cover_image: https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ki4k00n8j4cayhvnsf9p.jpg
---

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_](https://projectbook.code.brettchalupa.com/). It's free and [open source](https://github.com/brettchalupa/projectbook). 

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?

{% embed https://www.youtube.com/watch?v=mrMc7ymm2z0 %}

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](https://www.postman.com) or [Paw](https://paw.cloud).

---

## 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):

![RecipeHub mobile mock-ups. First view: site title/logo, "Your Recipe Box" heading with "Add Recipe" button horizontally aligned and a two-column grid of recipes with a placeholder image and title each. Second view: placeholder image, recipe title and author with horizontally-aligned like/save and fork buttons, followed by the body of the recipe (description, tags, ingredients and instructions). Third view: "Add Recipe" heading followed by inputs for name, description, tags, photo, ingredients and instructions](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xpkknymg5pbk45be04va.png)

### Specs

- User accounts (authentication)
- Recipe management
    - Data model for a recipe:
        - Name
        - Description
        - Ingredients
        - Instructions
- 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_](https://projectbook.code.brettchalupa.com/).

Let me know what you think and if it inspires you to build anything.

Happy building!