8 (more) Great Ideas for Programming Projects That People Will Use
It shouldn't be possible to make such a huge difference with so little software.
Two trends are becoming increasingly apparent in the software development world.
- It is becoming easier, by the day, to build a software product;
- The number of people in search of ideas for those software products is increasing.
With the advent of No-Code solutions and the hacker/maker movement, we, more than ever, are recognizing the power of being able to idealize, build and ship a product that can impact more people than ever in history.
Having a CS degree or knowing a programming language are becoming less of a factor in what you can accomplish with software, so it's only natural that more people want to try their hand in building something with these technologies and since they are at it, why not consider a solution for somebody else's problems?
When I published the 12 Great Ideas for Programming Projects That People Will Use article I became even more convinced that people were claiming for this type of quickstarter. The feedback I received was incredible, and I knew I had to find another batch of, at least, as good ideas as the ones on that article.
The search is over and here they are.
CSS framework comparator
When you have 30+ CSS frameworks in active development it can be a pain to distinguish them and pick one that most adapts to your needs. It's not easy to compare styles, how easy can you custom some rules, their impact on performance, or even how approachable they are for a beginner.
I imagine a solution where a simple web app with, the most common UI elements, could be restyled with a dropdown selection of a CSS framework. This would easily let you compare the elements you would be interested in. In each section of the design, we should also be able to compare the differences in the HTML. You might like one style, but not so much the code supporting it.
I love the example of Happy Hues, which has a very similar purpose but for color palettes. You get to compare them and see how they look like in the context of a real landing page.
Questions you will be answering
- How should one pick a CSS framework?
- What is the best way to compare software development frameworks?
- How to handle more multiple CSS frameworks for the same project?
Programming project overview
Backend skills: β
Frontend skills: βββββ
Ops skills: ββ
Complexity: π€―π€―π€―
Profitability chances: π³
Inspiration: CSS Bed, Drop-in Minimal CSS
Your own text editor
We all have our quirks and that means we have our favorite text editor. I'm writing this in Typora. It doesn't mean it's perfect. It's only the best for me right now. If I wanted perfect, I would have to build it myself. And with a little bit of luck, it could also be perfect for someone else.
Take a look at the story of Inkdrop, the markdown editor turning \$1300/m in profit. Like many side projects that turn into something profitable, it all started with an itch.
You have two main approaches you could consider. One is to establish a vision for how a text editor should help someone write and make that. A second is to look at how your favorite text editors work, find what you don't like about them, and design your own with those problems addressed.
Questions you will be answering
- Free text or markdown? What are the pros and cons of each as a developer and as a user?
- How to process text inserted by the user? Where and how to store that text?
- What degree of text and app customization should be supported?
- What platforms should be supported?
Programming project overview
Backend skills: ββββ
Frontend skills: ββββ
Ops skills: β
Complexity: π€―π€―π€―π€―
Profitability chances: π³π³π³
Inspiration: Inkdrop, Writty, Lite, Write.md
Converter app
If you are a programmer you probably use some kind of converter on a regular basis. There's three main types of converters that could an interesting and not too complex project:
- Date formats converter (example: epochs <-> human readable time)
- Text formats converter (example: JSON <-> XML)
- File formats converter (example: JPEG <-> PDF)
- Unit converter (example: m <-> ft, β¬ <-> Β£, kmh <-> mph)
As always, I advise you to start with the use case that will most help with your daily tasks. What is the hardest thing about using the converters you know? There might be some clues there.
However, if you see the potential for a bigger improvement in other formats, go ahead and take advantage of that. I work a lot with JSON files and epochs, but if I had an eureka moment for PNG and JPEGs that's where I would jump head first.
Questions you will be answering
- How should the formats be validated? How do you guarantee that what the user sends is indeed what you convert from?
- How do you handle sensitive information on what the user uploads? Is this information stored somewhere? Is the conversion done client-side?
- What is left to improve in terms of UX in simple converter apps?
- How to keep conversion rates updated?
Programming project overview
Backend skills: βββ
Frontend skills: βββ
Ops skills: ββ
Complexity: π€―π€―
Profitability chances: π³π³
Inspiration: Markdown to PDF converter, WebsiteVoice, JPEG.io, unitMeasure
Reading time estimator
This one you are building for me, OK? I need an easy way to get the read time of the articles I share in my newsletter. I want to paste a link to the article and get a simple response with time it will take to read it. Well, about that...
There's an increasing number of sites that include a reading time estimation on its articles and posts, but it's far from the majority. The ones that do have it, sometimes wildly differ in estimations for the same article. This can be improved. Maybe include the possibility of the user logging how much time it took to read it and use it to adjust the next estimations.
Questions you will be answering
- How to give better estimates depending on the reader?
- How to store estimations and actual reading time for each reader?
Programming project overview
Backend skills: ββ
Frontend skills: β
Ops skills: ββ
Complexity: π€―π€―
Profitability chances: π³π³
Inspiration: X Minutes To Read, Read-o-meter, words to time, Reading Length
AI for a game
Do you have a favorite 2-player game? Are you having trouble finding opponents? Why not try your hand at developing an AI for that. Either to replace an opponent or to give you an extra edge against them. I know chess and go are the most famous candidates for this, but you can try with any other game you like.
Recently I have been enjoying these up and coming roll-and-write games, where the roll of dice or the draw of a card determines what you need to draw into your board/map. Of course the possibilities at the beginning are almost infinite, and as you play you will be more and more constrained in space and scoring opportunities. It's so simple, that I started toying with the idea of an app that would play the game against me. It would get the same roll as me, and then calculate the optimal place to draw.
Questions you will be answering
- How will the AI learn to play the game?
- How will the AI select a play of all the possibilities? How will that play be evaluated afterward?
Programming project overview
Backend skills: βββββ
Frontend skills: β
Ops skills: β
Complexity: π€―π€―π€―π€―π€―
Profitability chances: π³
Inspiration: 2048 AI, HearthSim
Retrospective tool
This is the type of app every team working with agile methodologies is familiar with. There are many implementations widely available and that reflects both the need for them and how hard it is for an app to be just right for every team.
Some teams like it simple and minimalist, others like to customize everything. Some want the process to be anonymous, others like to keep a recorded history of what has been discussed.
You should capitalize on the criticisms of existing tools and, if you already tried some with your team, it will not be hard to collect a handful of improvements everyone would like to see on the retrospective tool of their dreams.
Questions you will be answering
- How to manage user sessions? What information do you want to store (if any) during and after retrospectives?
- How to distinguish your tool from all the others?
Programming project overview
Backend skills: βββ
Frontend skills: βββ
Ops skills: βββ
Complexity: π€―π€―π€―
Profitability chances: π³π³π³
Inspiration: Reetro, EasyRetro, Metro Retro
An API
This is a project where its users will most likely be other developers. I think we can benefit from having that in mind from the start.
Like the name says, Application Programming Interface, provides a language that parties can use to send and receive information about a given domain. This means this project it's not just about code, but especially about how well you communicate. Being with other developers, through the documentation of your API, and through the API itself, provided by clarity and congruence between methods, endpoints, payloads, and what they promise to give you in return.
The challenge is simple.
You either gather information and provide a way for developers to retrieve it (example: weather APIs) or you set up a way for developers to save/transform the information they gather there (example: cloud APIs). Or both! You can do both. You can also transform custom implementations of already solved problems into an API, saving developer's time and sanity (example: form data validation APIs).
Questions you will be answering
- How to create a Restful API?
- When each HTTP method should be used in an endpoint?
- How do you manage the API keys you distribute to your clients?
- How to manage the limit of requests per user?
Programming project overview
Backend skills: βββββ
Frontend skills: β
Ops skills: ββββ
Complexity: π€―π€―π€―
Profitability chances: π³π³π³π³
Inspiration: Public APIs
Chrome extension
A browser extension is a good way to employ the good old paradigm "half the product, not a half-assed product". With minimal effort, you can provide meaningful help to someone using other products. Take the recent launch of Hey email client, and it's now infamous Imbox as an example. Of course someone already created an extension that the only thing it does is fixing the "typo".
A tiny thing done very well is such a good metric in software development.
With just HTML, CSS, and JavaScript needed to create your own extension, it can also provide a good stepping stone into frontend development. If you are getting started you can always check the many public repos of chrome extensions and try to replicate the one most similar to your idea.
Questions you will be answering
- What are the UI elements of the browser you can interact with? What options can you give to the user?
- What types of data can (or should) you access from the browser?
Programming project overview
Backend skills: ββ
Frontend skills: ββββ
Ops skills: β
Complexity: π€―π€―π€―
Profitability chances: π³π³π³
Inspiration: EmailThis, SponsorBlock, Memex
Wrap up
It's not everyone that has the will to start a project like these and take it to a good conclusion. If you are inspired by one of these ideas that's a tiny step, but what I think it's awesome is the overall plan that you have in your mind to achieve your goals through software.
βIf you want to look good in front of thousands, you have to outwork thousands in front of nobody.β - Damian Lillard
This is how you outwork thousands. And how lucky we are that we just have to build something with code.
The illustrations on this post are awesome and available at manypixels.
If you enjoyed this, there are many others to come.
This is my (almost) weekly newsletter.
You should consider be part of it to stay on top of new articles and other stuff I have yet to figure out. Yup, I'm improvising here.