Working on different kinds of side-projects not only makes you a stronger developer but also gives you an opportunity to try technologies you can't learn during working hours, even though you really want to, because the new framework, according to its creators, is BLAZINGLY FAST.

This is a well-known fact. I have not said anything novel, but often the idea of a fun project that you would like to spend time on simply does not come to mind. As I suffer from it myself, today I'd like to share with you 10 ideas that have been accumulating in my head for some time now.

Of course, we cannot avoid the topic of AI, the trend that explodes around the world, inspires fear in many, inspires hope in many, and creates anticipation of new customers, but which simply cannot be ignored. We will touch on this topic, but I will not emphasize it too much, so as not to cause you disgust, because many people already have a cognitive overload from it.

I also want to stipulate that we will consider projects of varying complexity in ascending order. This is from those that can be done in a couple of evenings to those that require a major time investment. But even if a project seems too simple to you, with additional functional requirements it can become super-complicated and vice versa.

Projects do not have any definite technological orientation and there is enough work both on the back end and on the front end. The choice of technology for implementation is also up to you. You probably have a list of them you want to try for a long time: Go, Rust, Svelte, SolidJS. Substitute your option. This is an excellent chance to finally accomplish it with the ideas below.

Idea 1. Subscription tracker#

Subscription tracker

Excerpt from a conversation I had with a colleague in line in the cafeteria:

— Alice, have you seen the last season of The Mandalorian yet?

— Not yet. I'm waiting for The Last of Us to end so I can cancel my HBO subscription and activate Disney+.

There are probably dozens of streaming services today, many with A-rated products that can't be missed. At the same time, somewhere else you have already finished watching a fun show and can't see anything attractive on the horizon. Many people spend money consciously and know how to count, so they go to service A and cancel a subscription there, and then they switch to service B and activate a subscription. And that's how they juggle subscriptions constantly.

That is how the idea of this project was born - to make a subscription tracker that clearly shows what services you subscribe to and how much money you spend on them monthly / annually. It doesn't have to stop at streaming services subscriptions. You can add other providers to the search, such as iCloud or Amazon Prime. Also, you can leave users with the option to add their own services to the base, since it is impossible to cover everything by yourself.

It may look pretty simple and many will think, why waste time on such a service? Instead, you could just as easily create an Excel spreadsheet or Spreadsheet, put all subscriptions there and summarize their cost in one of the cells. Yes, that solves the issue math-wise, but we're trying to solve a slightly different problem - making it easier for people to juggle subscriptions.

To accomplish it, I propose equipping the service with functionality to display what is coming up next on various platforms, allowing users to mark series or movies they are interested in and be notified of their start dates.

The difficulty with this is that not all services provide an API to get this information. This means you will have to use a web scrapper and collect it bit by bit from different resources.

On top of that, if you implement the ability to subscribe/unsubscribe automatically at the start/end of a show in which the user has expressed interest, you will make life incredibly easier for many people.

Idea 2. Assistant chatbot#

Assistant chatbot

How nice it would be to have a personal assistant bot in your favorite messenger, that provides you with a summary of current information at the right time.

This could be, for example,

  • News headlines with a short description, so it is easy to go to the source if you are interested
  • A weather forecast for the location you are interested in
  • The level of traffic congestion
  • Currency exchange rate
  • A stock price
  • A quote from a famous person, etc.

Such assistance may come in handy for business people, who value their time and want all interesting data in one place.

All information will be based on the settings and preferences of each individual user - the time of receiving the next bulletins according to the user's time zone, the location of news and sources, the location of weather forecasts and traffic jams, etc.

All settings can be made, both in the messenger interface, where the bot will run, and in the web application, where, among other things, you will need to implement a user authentication flow. By the way, I do not recommend implementing authentication from scratch, and I wrote why here.

Idea 3. An ultimate note-taking app#

An ultimate note-taking app

I don't know about you, but I use note-taking apps daily. Years later, after trying many of them, the best ones for me are Google Keep and Twos. The first is for its concise interface, which I think is the finest, and the second is for its awesome text search and formatting capabilities.

There is a common problem with both - I can't attach files other than pictures to my notes. However, I often need to attach PDF, Word, or Excel documents to my notes, but at the moment I cannot.

And how convenient it would be to have all the necessary artifacts within one note and use it as a single workspace for a task without having to navigate to other resources...

If you want to add extra complexity to the project, you can add the following features:

  • View/edit the attached text documents without downloading them
  • The ability to use Markdown to edit text
  • Grouping notes into folders/tags
  • Using the notes as a TODO list with completion and due date
  • Sharing public links to the notes
  • Exporting notes to other applications

If you can make such an app fast, with a user-friendly interface like Google Keep, high security, and fast search - I'll be the first to pay for a paid subscription.

Idea 4. Widgets dashboard#

Widgets dashboard

The following idea develops the chatbot-assistant topic but has a front-end focus. I propose you develop a dashboard where the user can place customizable widgets for quick access to the data of interest. The widgets can contain, for instance, the following information:

  • Current date and time
  • Cryptocurrency price
  • Weather forecast
  • Currency exchange rate
  • Stock price
  • Countdown timer
  • Traffic jams etc.

The beauty of this dashboard is that the user is not limited to one widget of any type. For example, the user can add a widget with Bitcoin price and create another displaying how much Ethereum costs. The same applies to currency exchange rates, stock prices, weather in different locations, etc.

There can also be settings: dashboard background image, widget size, font, and others.

If you want to make the task harder, you can develop each type of widget as a micro-frontend, located within the mono-repository. Such micro-frontends can even be written using different libraries or frameworks if you want to improve your skills in several at once. However, remember that performance can suffer because users will have to download the source code of all the tools you've used, so be reasonable.

The real success, however, may be implementing the idea as a Chrome or Firefox extension. By doing so, users won't need to visit another site. People see the home page of their browsers many times a day. Why not turn it into a personal dashboard so they don't miss anything important?

Along the way, you will practice writing browser extensions, which can bring in substantial income if you enrich them with paid functionality. For example, in the paid version, you can shorten the data update interval on the widgets. This is because requests to API resources-providers of data in this volume will also cost you money. Or you can add more options for customizing widgets. Here everything is limited only by your imagination.

Idea 5. Warm-up online games#

Warm-up online games

This idea was born out of having to think about how to "warm up" people at the beginning of daily Zoom meetings if it's my turn to facilitate them.

Most of the time the facilitator proposes people to answer a question like, "If you could only eat one dish for the rest of your life, what dish would you choose?", or the hundreds of similar ones you can find on the pages of An ultimate list of 300 icebreaker questions. Eventually, everyone got bored with it, and I've noticed that much more positive feedback and childlike enthusiasm are generated by short online games like Guess the Country Flag.

And there are also times when you get stuck on some difficult task and just need a distraction for 10 minutes to look at the problem from a different angle afterwards. It becomes only a matter of finding a like-minded person, which should not be difficult if the games are interesting, and the implementation is of high quality.

Unfortunately, there is no such functionality built into Zoom itself. I've seen it in one of Zoom's competitors called Around, but the app itself didn't catch on, and we're still having calls in Zoom.

The idea is to develop a series of quick online games for a small company. The interface should be as simple as possible: you navigate to the site as the facilitator and choose a game. Then, you must share the link generated by the app with the rest of the group. Before joining the game they will need to choose a character name.

As quick as possible, as simple as possible.

However, it's only simple for users; for developers, the project can pose a real challenge. In addition to developing the game's mechanics, you'll need to master Canvas to guarantee the proper game performance in the browser. Also, the web socket server must handle many simultaneous connections.

All in all, the challenge is complex but interesting, and can really be useful for many people.

Idea 6. Visual Tailwind-based UI builder#

Visual Tailwind-based UI builder

Not everyone likes utility-first classes for HTML elements: TailwindCSS's approach. Many people think that using this framework makes HTML a mess of short classes that can't be understood. I, on the other hand, am a big fan of this approach and have used it long before the Tailwind authors popularized it.

However, I don't want to and can't memorize all of its classes, so I don't spend too much time switching to the Tailwind documentation.

This is how the idea of a visual builder for the Tailwind-based interface came about. There's already a project, maybe more than one, that implements this idea in some form: https://www.tailwindhelper.com/, but I propose to extend it much further.

Imagine that by clicking the toolbar button, an arbitrary Box is added to the canvas. Clicking on the element you activate the sidebar on the right, which contains all the controls of the properties and settings relevant to the type of the element, much like in Webflow. By pulling the borders of the element, you can change its size in increments corresponding to the step in the Tailwind classes. In the right sidebar, you can also change properties like text color, background color, font size, padding, margin, etc. The more properties you can add - the better, but don't make the interface too cluttered, and don't waste time on totally exotic CSS properties used once a year.

Inside the Box, you can, for example, add a Text element, which is also easy to change using drag-n-drop. Or another Box.

All of the added properties will be immediately visible in the interface, as Tailwind classes, which can be quickly copied and transferred to the code.

The icing on the cake is the ability to preview the resulting HTML or JSX markup for the content on the canvas, taking nesting into account. Imagine how much time you can save people on the scale of all developers using Tailwind.

Idea 7. AI-based music web-player#

AI-based music web-player

Here we get to artificial intelligence, as I said at the beginning of this article. And I propose to implement it in a web-based audio player.

GPT-4 can generate playlists based on the given criteria. For example, based on a song, selecting similar ones, by mood or activity. We can take this ability and combine OpenAI and Spotify APIs to build an innovative new-age web player with artificial intelligence under the hood.

The interface can be anything you want. The key thing is that users can not only view a list of recommended tracks as text but also listen to them. To do this, we need a paid subscription to one of the streaming services. Luckily Spotify, with its millions of subscribers and excellent API can cover all needs.

To make the task more difficult, we can reproduce the interface of one of the well-known products, such as the legendary WinAmp. By the way, there is already such a project and it is a work of programming art at https://webamp.org/. You can find all the source code of this product on GitHub, where you can not only learn how it all works inside but also fork the repository and build your own player based on it, enriching it with AI functions.

If you are not satisfied with one of the existing players and want to build your own from scratch, you can search for interface ideas on Dribbble. There are hundreds of them.

This project can take a lot of time to implement. However, the amount of experience you will get in working on it, as well as the gratitude from users will be overwhelming.

Idea 8. Skill swap platform#

Skill swap platform

If you're not afraid to take on projects like social networks, the following idea might interest you. It is about creating a platform where people can share their skills.

For example, John is a designer and he's been thinking about mastering front-end development to breathe life into his projects for a long time. But John wants to get the most out of his classes and stay motivated, knowing he must commit. Online courses can't do that; often we drop out after watching a video or two. Personalized lessons with a mentor are another matter. So John goes to such a platform and creates a profile. He fills out a list of skills he has and a list of skills he wants to have.

Based on John's list of skills, the platform finds candidates who can teach him those skills.

From the list of candidates, John finds Alex, a front-end developer who wants to master web design to make his side projects look better. Following that, John needs to write Alex to agree on the terms and schedule the first class.

The number of technologies that can be applied to such a project is not small either. I would highlight the following:

  • Web sockets to organize embedded chat communication
  • WebRTC, if you want to implement video calls through the platform, or integration with Zoom API to schedule at the Zoom platform
  • Organizing the schedule of scheduled lessons, etc.

The principle is the same as before - you can make it pretty simple if you integrate with various third-party APIs, and you can make it very complicated by implementing the functionality yourself.

By implementing such a product you will help a huge number of people who either prefer a personal approach to learning, or simply do not have the money to pay for a course, but have useful skills instead.

Idea 9. Friends trip mobile app#

Friends trip mobile app

This idea was also born of practical necessity. I often travel with friends. On my last trip, I noticed that we constantly found that after we had dinner together, one person would pay, and the others would calculate who owed how much.

This problem was eventually solved. Someone found a suitable application, which took all the calculations, it was only necessary to enter a total amount, distribute it among the participants, and at the end of the trip sum up and settle accounts. This app, by the way, is called Splitwise. Probably there are others with similar functionality.

But what was not solved was the problem of convenient storage and exchange of media files, which the company generated during the trip.

Just imagine how convenient it would be that when you are on a trip, you could add it to the app, include all the participants, and get shared storage space for all the media files. That is, people could add media from their feed to a shared folder, and therefore everyone interested could find all the pictures there and either save them on their device or share them on a social network.

If you combine these two functions in a single mobile application to get a combination for conveniently traveling together with friends, you would make many people happy.

If you took it even further, in addition to the functions I have outlined, you could also add a measure of the total distance a person went (or traveled, if we are talking about skiing or snowboarding), the maximum and average speed, the number of calories spent, and so on. At the end of the day, you can summarize and nominate a winner. Again, everything is limited by your imagination.

If you want to learn Kotlin, Swift, or React Native, here is an idea that will require not only good knowledge of math but will also involve communication with cloud services for storing media files and interaction with sensors embedded in smartphones. Isn't that a challenge?

Idea 10. Daily article digest#

Daily article digest

The last idea for today I think is the hardest to implement. It consists of developing a service that selects and sends out a daily e-mail with a list of several articles that, in its opinion, are the most relevant today to a particular user.

Don't be frightened, you don't have to write articles yourself. Instead, you will need to use or write your own web crawler, which will scan through the list of Internet resources and sort out the articles found, putting the appropriate tags. I would not recommend storing the articles' text in the database. An article's main image, title, and short description are sufficient.

By clicking on an article in the interface, the user jumps to the source.

With such a scheme, think about the fact that you will have to regularly check the list of links to articles you have already added to the database for viability, checking the status of the request to the server on a schedule.

Users initially registering with the service will choose from a list of tags they are interested in. This will be your starting point for determining which articles from the database are worth sending to that user.

Receiving the next portion of articles, subscribers can rate them, if the article caught their eye, whether in a positive or negative sense. And then you have to consider these voices and their weight, picking up the next articles.

In addition to the mailing list, you can implement a web application where the user could just as well navigate to articles from the selection for the day. At the same time, use the calendar to return to the previous mailing of previous days.

When a modern person's time is very limited, but staying abreast of the latest developments and ideas is necessary, and ChatGPT was trained on data with the cut-off a year and a half ago, this service can become an indispensable assistant. Plus, the potential for monetizing it with advertising integrations is evident.

In conclusion#

The legend Linus Torvalds once said:

Theory and practice sometimes clash. And when that happens, theory loses. Every single time.

It would be incredibly helpful if we could learn programming and cutting-edge technologies by reading articles or watching YouTube. But it doesn't work that way. Practicing a skill has always been the only way to learn it. Of course, it must be supported by theory, because on its own, practice does not make any sense. Only harmoniously complementing each other theory and practice can make an experienced engineer out of you, which we all want to become.

Speaking about the practical side of the question, I really hope that among the project ideas we have reviewed today, something will resonate with you, and you will want to bring this idea to life.

Good luck with your endeavors and see you in the next article!