Professional Documents
Culture Documents
These projects are suited for engineers trying to beef up their computer science
fundamentals. They’ll help you learn more about specific aspects of computing, like file
transfer and operating systems design. These projects can be particularly useful for self-
taught developers who’ve focused more on practical skills than comp sci fundamentals.
master). To understand HTTP deeply, build an HTTP server. There are a number
of tutorials available to guide you through the process.
3. Build a simple operating system (suggested implementation: any programming
language you want to master). This is a project that is technically challenging and
will deepen your understanding of how computers and operating systems work. You
might wish to start with the free (and cleverly named) book, Operating Systems:
From 0 to 1.
4. Build a web scraper (suggested implementation: any programming language you
want to master). Build a tool that takes a URL as input and returns the content of
the URL as HTML or XML.
5. Bandwidth monitor (suggested implementation: live updating CLI tool). Build a tool
to track how much data you have downloaded or uploaded on the internet. Have it
email you a weekly report of your usage. As a bonus challenge, predict peak usage
times.
6. Implement a cipher (suggested implementation: any programming language you
want to master). Build a tool that takes a string of text as input and encrypts it using
a cipher, such as the Caesar cipher.
7. Create a text message downtime alerter (suggested implementation: app hooked
up to the Twilio API for sending text messages). Create an app that takes a URL as
input and sends you a text message when a request to the URL returns a response
code other than 200 (OK).
Personal Finance Side Projects
These projects will help you achieve a practical goal (get a better handle on your
finances), while also improving your software engineering skills.
mobile app). Build a calculator you can use to track the rise or fall of your net worth
on a monthly basis. You can use something like this net worth worksheet from
Charles Schwab to guide you. Optional extension: have it send you a 12 month
report for the previous year on the first of January each year.
9. A tax forecaster (suggested implementation: web app). This will be particularly
useful if you do any freelance software engineering. Build a tool that takes your
freelance earnings as input and then predicts your expected tax liability for the rest
of the financial year. Make it smart enough to predict periods of higher or lower
demand for your services, and adjust accordingly.
10. A deal finder (suggested implementation: web app with mobile notifications).
Build a simple web app to notify you when an item you covet goes on sale for a
good price. You could use a web scraper to pull the item’s product page and notify
you of any price changes.
11. An expense tracker (suggested implementation: web or mobile app). Create
a simple interface you can use to add and categorize your expenses. Generate
monthly reports based on the inputs and write custom alerts for things, like,
“spending too much money on coffee… as always.”
12. A financial independence calculator (suggested implementation: web
Most software engineers I know are fascinated by the world of game development,
graphics, and simulations, but don’t have a lot of experience with them. These projects
are small enough that you can set foot into this world without biting off more than you can
chew.
Build a random name generator (example) that creates unique names on the fly,
based on an algorithm. Use machine learning techniques to help you by training the
program with a sample data set of names similar to those you want to generate.
Otherwise, create your own lexical rules for how names are generated. For
example, a name generating algorithm inspired by The Handmaid's Tale might
stipulate that names for Handmaid women should start with 'Of', and end with a
random male name, e.g., Ofpeter.
15. Conway’s Game of Life (suggested implementation: any platform capable of real-
time graphical rendering). Conway’s Game of Life simulates the lives of simple cells
that obey algorithmic laws. This video explains how the game works and includes
an example of one possible result:
AI’s usefulness in day-to-day software engineering is increasing by leaps and bounds. It’s
now easier than ever before to make your first forays into the world of Artificial
Intelligence.
an excellent first AI project, try to write an engine that cannot be beaten at Tic-Tac-
Toe. You can achieve this by implementing this strategy, which produces a draw as
its worst-case outcome.
20. A chess engine (suggested implementation: an engine written in a programming
language you want to learn, or master). Try to write an engine that can play chess
against a human opponent using a Universal Chess Interface compatible GUI, such
as XBoard. See Stockfish as an example. For a less daunting challenge, you may
wish to focus on the behavior of just one piece, e.g., Knights.
21. A niche chatbot (suggested implementation: web app). Some of the greatest
minds in the world are working on chatbots that respond in lifelike ways. It’s an
incredibly difficult challenge, but, by reducing the scope of your chatbot, you have a
side project that is more approachable for evenings and weekends. Create a
chatbot that produces real-sounding responses based on a niche topic that you’re
passionate about: your favorite band, video game, sports team, or TV show.
Leverage an existing library to help you, such as ChatterBot.
22. A spam classifier (suggested implementation: any programming language you
want to master). Build a tool to classify whether an email is or isn’t spam based on
the content alone. You can use this public data set of emails from the Enron
investigation to test your spam classifier.
These projects are for software engineers who want to work on something fun and light-
hearted.
email or text message notifications). Build a program that notifies you, by text or
email, about showtimes for potentially interesting movies playing at your favorite
cinema. The concept of an 'interesting movie' can be derived using machine
learning (if you watch enough movies to have good training data), or a handcrafted
algorithm. For example, you might use the Open Movie Database API , paired with
an HTML parser like BeautifulSoup, to build a program that alerts you to sci-fi
movies rated 7.0 or above on IMDB, movies starring Amy Adams, and/or any movie
with an average rating of 8.0 or higher.
24. A spoiler blocker (suggested implementation: browser extension). Short of
implementing a total social media/internet/watercooler chat ban, it can be difficult to
avoid seeing spoilers for your favorite TV show… especially if that TV show is as
popular as Game of Thrones. Create a browser extension that removes all
mentions of your favorite show from any webpage loaded in your browser… or
replaces them with cute pictures of puppies.
These projects are all different, from logging sensor data to finding new desktop
backgrounds for your computer. One thing they all have in common is that they’re fun,
and several of them will have you work with interesting APIs.
API). Create a tool that tracks the music you listen to and generates a playlist with
similar qualities, but of songs you haven’t heard before. The Spotify API provides all
of the tools needed to extract what you’ve listened to and create a playlist — the
recommendation engine is up to you!
27. Temperature logger (suggested implementation: Raspberry Pi, temperature
sensor, web app). Have your Raspberry Pi hooked up to a temperature sensor and
send temperature data from your home to a web app that saves the data to a
database or updates a CSV file. For bonus points, have a weekly temperature
report emailed to you. Other Raspberry Pi projects: home automation, home
security.
28. Microlearning app (suggested implementation: web or mobile app). Build an
application that sends you one page per day about something you want to learn.
This could be a random page from Wikipedia, a page of React documentation,
a Kanji character, or a page from the CIA World Factbook.
29. Slack bot (suggested implementation: Slack API). If you or your team use the
popular chat app Slack, build a bot to make some aspect of your (or your team’s)
life easier. Ideas: a coffee order bot, a bot that reports daily on the number of
commits made to your team repos, or a daily stand-up reminder bot.
30. Daily desktop background (suggested implementation: Unsplash API, scripting
language for your OS). Build an app that refreshes your desktop background with a
new image every day.
Rather than building a project from scratch, these are collections of coding challenges to
improve your skills. If you want to get better at solving discrete problems, or improving
your chops with a new programming language, these are all good options.
31. Advent of Code (suggested implementation: any language you want to practice).
Advent of Code challenges occur every year in the days leading up to Christmas.
They include lots of fun programming challenges that can help you develop your
chops in a programming language you’re learning or one you want to master. The
challenges from 2015, 2016, and 2017 are still available.
32. Kaggle’s Titanic Challenge (suggested implementation: Python or R). Kaggle
practice). Project Euler challenges are dedicated to exploring the marriage between
mathematics and programming. Use programming tools to solve various
mathematical challenges.
Daily Life Side Projects
These side projects have a practical purpose: they help with some aspect of your daily
life. Though they solve simple real-world problems (things like what to have for lunch), the
solutions can be as simple, or as complex, as you’d like.
These projects will improve your ability to work with data. Software engineers work with
ever-larger amounts of data. These projects will help you learn how to collate, parse, and
analyze data with confidence.
39. Create and automatically update a data set (suggested implementation:
web scraper input to CSV output). Build a tool to automatically build and update a
data set about something you’re interested in. Suggested data sets: stats about
your favorite sports team, flights to destinations you want to visit, meteorological
data from where you live, or anything else that interests you. The most important
thing is that the data set should require constant updates as new data is generated
— and should occur automatically. For example, as soon as your sport’s team’s
results are posted on a website, the data should be automatically scraped and
added to your data set.
40. Enter a data science competition (suggested implementation: R or Python).
Kaggle hosts a number of data science competitions featuring real-world data sets
and hefty cash prizes. You’ll also often be tasked with solving real-world problems
like: how to classify toxic online comments, forecast restaurant visitors, or recognize
objects from space.
Project #1: A Calendar app for making appointments (like Google calendar)
A simple calendar appointments app
This can start off as a simple app which you can gradually improve by adding more features and UX
improvements.
It will help you practice using nested components (like a day component, nested inside a week component,
or a nested inside a month component).
I use this as an example app in my Free Complete React on Rails course. So check it out if you want to try
this out.
Project #2: A Github explorer app for finding interesting code repositories
https://github.algolia.com
You can build the search part purely on the client side, but you can make it more fun by storing the
searches in a database using Rails and show the most popular searches.
You will practice using an external API and handling the JSON response. You could experiment with pre-
rendering the component on the server.
See this browser plugin by Algolia to get your idea juices flowing:
If that’s too hard as a first app, you could first try out using an external text editor component to learn how
it works, and then implement your own:
Use the react-slack-chat component to add a chat widget to your existing Rails site. The component does
most of the heavy lifting but you can have fun by making your own bot in Rails and customizing the widget
in React.
You could generate the meme on the server using ImageMagick or in the browser using canvas. See this
repo by Hung Tran:
tranhungt/meme-maker meme-maker - Make your favorite memes and send them to your friend!
github.com
Allow users to bookmark their favorite images. You could even experiment with making the backend just a
Rails API app and make a separate React app for the front end.
Project #8: Twitter web client for multiple accounts (like Tweetdeck)
I use Tweetdeck for running my personal and business Twitter accounts from one place
A Twitter web client app in which you can connect more than one Twitter account (using OAuth) and then
add multiple columns to the UI — for things like the feed, notifications, search, direct messages.
This will give you the unparalleled joy of dealing with the ridiculous API rate limits from the most developer-
friendly company in the world.
You could add Tweetdeck-style automatic fetching of new tweets and notifications using polling or Action
Cable.
Lots of nested components and you can try out some simple animations in React.
It might be best to start off with building just reading capabilities. Once you have that, you can add the
ability to post, like and retweet.
You can get the repo here, set it up on your own machine and then tinker with adding React to the front
end!
If you’re not into lunch, do coffee or cocktails or something else more exciting.
Use the Rails backend for saving user accounts and preferences, and talking to the different APIs. You
could also fetch data from the APIs directly from the client side.
Want to build these apps with me? Come, check out my Free Complete React on Rails Course, where I
will teach you how to be a pro at using React with Rails, while building some fun stuff.
Check out this series of blog posts by Andrea Mazzini, in which he describes in detail how he built a
Medium clone with a Rails API app, React and Flux.
You can build it without using Flux, but it might be worth a try if you’re up for the challenge.
spree/spree spree - Spree is a complete open source e-commerce solution for Ruby on Rails.github.com
Guess what? I’m building this online store idea in a series of tutorials. The first one will be published right
here on the freeCodeCamp blog! Make sure you follow me on Medium and sign up on Learnetto to get it in
your inbox.
Project #17: Just Mail No Chimp
I have a love-hate relationship with Mailchimp
An email newsletter app with a good UI that doesn’t make you want to tear your hair out. And no cute
monkey nonsense ?
You can still use the Mailchimp API or use Sendgrid. If you’ve used Mailchimp, you know there are a ton
of features you can try building — viewing/filtering/managing subscribers, designing forms, creating
campaigns, and more.
Just pick one feature and try to build it. Most features will involve some kind of form, so it should be good
practice for dividing your UI into React components that will handle state and some stateless functional
components.
Use the google-api-client gem and check out this awesome React tutorial and code repo by Mark Brown
☕ to get started:
I’ve built a tiny little app with it before and it’s quite easy to use. Spotify only allows the music itself to be
played with their own apps, so you have to keep the app running alongside.
Build a simple dashboard which lists your apps and lets you quickly view key information about each of
them. You can add editing capabilities as a second step.
Make it mobile-friendly so that you can use it on the go. Once you’re comfortable with React, you could
even build a mobile app using React Native.
Depending on what you, your family and friends use, you could easily pull in data from a number of APIs
— Fitbit, Google Fit, Moves, Runkeeper, Strava, Withings and lots more!
You could even allow the user to manually enter data for simple things like weight tracking and exercise
routines.
You could start off by just showing reports and then enhance it with new features like adding notes and
sharing.
I’ve built a simple dashboard for Fitbit data. See the code here:
learnetto/reactfit reactfit - A fitness dashboard app built using Rails 5.1 and React.jsgithub.com
Use Rails to upload and save the drawing and show it to someone on another computer.
As an advanced exercise in fun, add machine learning and make the computer guess ?
Use classifier-reborn for classifying the text and React for handling the form. This app is mostly backend-
heavy, so experiment with some UI animations. See this repo for some cool ideas:
I’ve already built this one! Check out these two video tutorials which will show you how to build this step-
by-step:
Part 1:
Rails 5 API and React.js tutorial - How to make an Idea board app | Learnetto Rails 5 API and React.js
tutorial - How to make an Idea board app | Learnettolearnetto.com
Part 2:
How to animate a component using React Transition Group | Learnetto How to animate a component
using React Transition Group | Learnettolearnetto.com
These tutorials cover many practical concepts including stateless functional components, class-based
components, use of axios for making API calls, immutability-helper and more.
So many ideas!
Now that’s a whole lot of interesting ideas for you to kickstart your React on Rails journey!
Want to build these apps with me? Come, check out free tutorials on React, Rails and more on
Learnetto.com.
Which one has the most luxurious bathroom? Which ones mark up their
menu prices? Which ones have funny drunks at 1AM in the morning? This
would be a review site for those fast-food chains that are supposedly
consistent.
Type of Site: Reviews
Key Functions:
Ability to create an account with a picture, username and location
Use Google Maps to let a user pick out a specific restaurant, either through
searching a location on the map or through typing in a name and choosing from a
list (typeahead)
Allow the user to write a review
Allow user to rate the following fast-food specific topics on 1–5 scale:
Bathroom Quality, Staff, Cleanliness, Drive-thru Sassy Level, Delivery Speed
Ability to add pictures to the review
Responsive design down to mobile
Key Feature Decisions:
Is this a serious website, or is it really about the funny things that can happen
at a fast-food joint?
Who will be using this site? People on roadtrips trying to choose a lunch
place? Frequent fast-food visitors looking to share their experience?
Should this be a community where people frequently check the site for funny
stories and participate? Or more one-time, infrequent use?
What social media integration might help spread stories/reviews?
What You Will Learn: User systems and picture storage are two major
challenges. This will be a good chance to implement a basic version of
each. Also, if you choose to make this a humor-oriented site, how can your
design influence an appropriate level of humor that is not nasty? If you
want to gain a following, this will be a good test to see where you might be
able to source current fast food reviews to seed your database and create
immediate content.
2. GrillBer
The Idea: Yep, you guessed it. Uber for grills. If you live in a city, you may
not have the space for a grill or a safe place to lock it up. For example, if
you live on the 20th floor of an apartment building, where can you put your
grill?
Problem solved with GrillBer, a delivery service for grill rentals. This will
allow customers to put on a cookout with none of the logistics. In fact, you
might want to include a roll of turf and chairs so your customers can create
a pop-up park in a parking space!
Type of Site: Delivery/Logistics
Key Functions:
Form that allows a user to book a grill for a certain number of hours at a
certain hourly rate, and stores that in a database. User must input their name,
address etc.
Calendar that shows different times that grills are available. Check
out Zipcar for an example of this.
Product details page that shows the grill and tells you more about the
different add-ons, like chairs and turf.
Social media integration with Instagram that shows all the awesome
cookouts people have held with GrillBer.
A checkout process and payments system with Stripe so users can complete
the process.
Key Feature Decisions:
This does not need to be visually stimulating like Uber. But does it even
need a cool interactive calendar? Or can you get away with a basic form like an e-
commerce site?
How many pains in the grilling process will you offer to address? Do you
expect the user to clean the grill? Are these the cheaper but slower charcoal grills,
or more expensive gas grills?
Cookouts are meant to be a low-stress experience. If people have to hurry to
cook their food, it will not be a great experience. How can you use copy and
microcopy to clearly state how this will not be a stressful process?
What logic do you need to have on your back-end for the booking system?
Do you need to allow a half-hour before and after for grill delivery?
What You Will Learn: How to coordinate the front-end and back-end of a
booking system. Think about how many sites do this. Restaurant booking
sites. Conference room booking sites. There are many more. This is a very
common pattern, and a great accomplishment to have on your resume for
discussion.
3. NetworkTap
The Idea: Social media is an increasingly popular advertisement strategy.
Companies use Twitter, Facebook, LinkedIn and Pinterest to reach
customers in the middle of browsing. However, there is one untapped
space: the user’s actual post.
Advertisers love word of mouth marketing, and having users post the
actual ads themselves would be a great way to confuse others in their
newsfeed!
This site would allow users that want to make a little extra cash to
volunteer information on themselves, and advertisers to briefly hijack a
post with an ad. Users get paid on a per-view basis or another method.
Now, ads can reach eyeballs in new and innovative ways!
Type of Site: Marketplace
Key Functions:
Individual users must be able to create an account with info like: location,
age, interests, and family status so advertisers can pick who they want to post
about their product
Advertisers must be able to create an account and post about their brand
identity, and who they are looking to reach.
Each user must be able to reach out to an advertiser to talk about their
interest in doing a post.
Each advertiser must be able to search all users by criteria like age, gender
etc. and send a mass message to their chosen demographic about interest in doing
an ad.
Users and advertisers must agree on a payment method: pay-per-like, pay-
per-view, pay-per-click or other.
Key Feature Decisions:
Search functionality will be a big deal for the advertisers. How do you
represent each search result? May want to use data visualization like Google
Analytics.
How can you get the most info out of users? Integrating with a social media
account? Perhaps paying them more based on how much info they offer?
What power dynamics are there between advertisers and users? Do users get
input on the ad text and picture? Or do advertisers make all the decisions on what
gets shown?
People will not want $10 a week out of this. They will probably want more
like $100 at minimum. How can you balance this with the number of ads they will
likely need to show to get there? Nobody wants to completely pollute their news
feed.
How sly do you want the ads to be? Should it be obvious, or should it feel
more like an authentic post?
What You Will Learn: Marketplaces are another very popular type of site.
This one will let you create two types of accounts, which is a common
structure. Messaging within a site will be a good skill to learn with this one.
Check out Fiverr for an example.
4. Repair My ‘Ship
The Idea: This is short for “Repair My Relationship”. It is a forum where
users can post about their relationship issues, and others can chime in
with advice on how to fix their problems.
If you have experienced the fine communities on sites like 4chan, Reddit
or Bodybuilding.com, then you know that there are plenty of people willing
to donate a few minutes of time to help out.
Type of Site: Forum
Key Functions:
A post/comment system similar to Reddit or Quora.
An upvote system for both posts and comments
An opportunity for the user to post what they actually tried with their
significant other, and what results ensued
A badges or karma system to reward frequently upvoted users
A user account system for those that want to comment or post, similar to
Reddit
Key Feature Decisions:
Should this be more anonymized like Reddit, or tied to a social media
account like Quora for credibility?
There will be plenty of trolls on this site. How do you deal with it?
Should this strictly relate to romantic relationships? Or friendships as well?
How can you use the badge system to motivate especially good commenters
to come back?
What You Will Learn: How to build a forum! Also, there are plenty of
people out there that are willing to donate a few minutes of their time to
help Internet strangers in need. Seriously. Your main challenge is making
sure these helpful users feel rewarded for their efforts, because that will
motivate them to come back.
5. CatBattles
The Idea: Cat videos are… incredibly popular. One particularly distinctive
form of cat video is the amateur battle, where two cats duke it out with
minimal consequences, but plenty of meowing and wrestling.
This site would allow users to post videos of their cats wrestling, and allow
viewers to offer funny comments. This site would also NOT allow
professional cat battles, or fights with gruesome ends. It is strictly for
casual entertainment, not animal rights violations.
Even if one of these suggestions does not help you, you should consider
building projects that can create a little personality and distinguish yourself
from all the others.
Did you enjoy this? Give it a like and let me know in the comments!
Also, if you are looking for visualized coding tutorials that make HTML,
CSS and JavaScript simple, sign up for my newsletter here:
JavaScript code makes it possible to coordinate the lolcat images with set times picked by
the user or by pushing the “Party Time!” button. I can haz time? Yes you can.
>>Link to the JavaScript project source code here
2. BUILD A JAVASCRIPT TIP CALCULATOR
Whenever I go out to eat and I’m having a hard time calculating the right tip, I’ll fumble
with my phone and search for a “tip calculator” on Google. I couldn’t tell you the name or
the url of the one I usually end up using, but it’s a simple JavaScript app. So go ahead and
take a swing at making your own tip calculator. This calculator on CodePen by Carolyn
Hemmings is a perfect JavaScript sample project that shows the kind of fun JavaScript
projects you can build with JavaScript and a little bit of HTML and CSS.
>>Link to the JavaScript project source code here
3. BUILD A JAVASCRIPT ANIMATED NAVIGATION TOGGLE
When you build website menus using only HTML and CSS, you’re limited to creating links
that move the user from one static page to another—it’s JavaScript that allows for drop
down, collapsible, and otherwise animated navigation features when you’re doing web
development. Animated navigation toggles are another ubiquitous part of the internet
landscape that you’ll be able to crank out for clients and potential employers once you get
the hang of the JavaScript programming language. This JavaScript project sample by A.
James Liptak shows the kind of dynamic navigation features you’ll have access to once
you’ve added JavaScript to your toolkit.
>>Link to the JavasScript project source code here
4. BUILD A JAVASCRIPT MAP
If you’ve ever used Google Maps to zoom in on a location and change your view mode, you
were using features that were built with JavaScript. JavaScript’s ability to create dynamic
objects makes it a natural fit for creative interactive maps on websites or in a web app.
While you don’t need to aim for recreating Google Maps on your first time out,
experimenting with simple JavaScript projects like Sara B’s interactive Codepen map (built
using the JavaScript framework jQuery—a collection of JavaScript libraries with pre-written,
reusable code) is a solid way to familiarize yourself with JavaScript’s map-making
capabilities.
>>Link to the JavaScript project source code
5. BUILD A JAVASCRIPT GAME
HTML and CSS are important building blocks in web development, but JavaScript is the
programming language that moves websites from function to fun. So it’s no surprise that
games are on the list of fun JavaScript projects that let you practice your skills without
falling asleep at the keyboard. Martin’s Codepen maze is a perfect example of games as
simple JavaScript projects.
>>Link to the JavaScript project source code here
6. BUILD A JAVASCRIPT MOUSEOVER ELEMENT
Another bit of JavaScript goodness you’ve come to rely on online is the mouseover effect—
instances where hovering a mouse over a certain icon or area on a screen produces an
action or result from the spot where you’re hovering. Mouseovers are a routine part of
JavaScript development, so spending your time on a quick mouseover JavaScript project is
a worthwhile way to spend the afternoon. Roger Van Hout’s Happy Bouncing Balls
mouseover on CodePen displays a field of balls resembling the kind you’d get from gum
machines as a kid. Hover your mouse over any single sphere and watch it expand.
>>Link to the JavaScript project source code here
7. BUILD A JAVASCRIPT LOGIN AUTHENTICATION
Something as simple as a website’s login authentication bar (the area where you enter your
email and password to log in to the site) is another part of JavaScript’s domain. This
JavaScript project for beginners is a good idea to master, since just about every website has
a login authentication feature. Mike Tran’s Codepen authentication bar built
using AngularJS (another JavaScript framework) is a clean, to the point JavaScript sample
project.
Make a plan for learning the tech skills you need to land a new job with this 60+ page FREE
ebook!
SEND IT!
Skillcrush needs the contact information you provide to us to contact you about our products and services. You may unsubscribe from
these communications at anytime. For information on how to unsubscribe, as well as our privacy practices and commitment to protecting
your privacy, check out our Privacy Policy.
And Shirley Wu’s interactive data visualization of every line from the musical Hamilton.
As your experience with JavaScript code grows, your imagination will soon be the only
thing holding you back, so it’s time to get to work!