A Curated List of Coding Projects and Resources to Become a Better Developer



Hello, Hope you are doing great. I am Shivang. I have set up this site to list down genuinely helpful resources that'll help us become better engineers. This includes coding projects (in the form of guided blog tutorials, project ideas, coding challenges, courses, and more) and upskilling resources that'll deepen your understanding of the software engineering domain.


If you find the content helpful, don't forget to share it with your friends — it really helps with reach. I also write about systems architecture on my newsletter (whenever I find time!) and actively share engineering insights and curated reads on LinkedIn. Feel free to subscribe and follow along.



Coding Projects

Data Structures

Coding Challenge #1:


Write an algorithm for a scalable leaderboard system

Picture a popular online multiplayer game or a gamified app where users move up or down the ranking board after performing certain activities. This could be anything from winning a challenge against another user, completing a quest, or finishing a mission.

The idea is that whenever they perform an activity, their score changes — and so does their rank. Now, imagine a couple of million users on the platform, all performing actions concurrently and instantly checking their updated ranks. For every event, the system needs to recalculate and update the leaderboard.

At time t, there are n users with specific scores. At time t+1, their scores may change based on the activities they've performed.

Your challenge: Write an algorithm that calculates user ranks in real-time and keeps the leaderboard updated — at scale.

Thinking out loud

A no-brainer brute-force solution to this is to pick one user (assuming the users are stored in a List) and then compare them with the scores of all the other users and update the rankings. This is more like running a bubble sort algorithm having a worst-case time complexity of O(n^2). This is clearly not scalable. We can do better.

The idea is to:

What are our options? What data structures can we leverage to bring down the time complexity?

We have self-balancing binary search trees that can be used to construct and maintain ordered lists.

Heap is helpful if we want to find out the top K ranks in a large dataset. We can leverage it, but it's not ideal if we want to know the rank of every user in the dataset.

Segment tree is good for range queries like, "How many users have a higher score than X?"

Redis sorted sets, which is a combination of Skip List and Hash Table, are a top choice in implementing leaderboards in production systems. Skip List data structure is leveraged to order the elements for fast rank and range queries and Hash Table facilitates fast lookups.

You can write a similar solution from scratch or use a mix of other data structures to come up with a scalable solution. The idea of this challenge is to deepen your understanding of data structures, helping you understand how they are leveraged to build real-world scalable systems.

This will help you sharpen your systems thinking. Efficient systems rely on thoughtful use of the right data structures. By working through this challenge, you will understand how different data structures perform at scale and why brute force approaches fall apart when the systems are hit with millions of concurrent users.

You can extend this challenge further by building a web-based leaderboard to deepen your understanding of systems architecture. Real-world systems have different requirements based on the business use case:

Researching the web service implementation and the algorithmic solution will give you good talking points for your interviews as well.



Coding Challenge #2:


Code a lightweight key-value store with pluggable backends (HashMap and OrderedMap)

Build a key-value store with two different backends and with a config flag to switch between them at runtime:


The cache should:


Both backends must implement the below Cache interface:

set(key, value) : Inserts or updates the value for a key
get(key) : Returns the value for a key or null if not found
delete(key) : Removes the key from the store
list_keys() : Returns a list of all keys in the store, sorted by key

OrderedMap

An OrderedMap is a data structure that stores key-value pairs just like a regular map but keeps the keys sorted. Most implementations of ordered maps use a balanced tree such as a red-black tree, B-tree, or AVL tree.

These trees automatically rearrange themselves after insertions and deletions to keep everything sorted and balanced for performance.

The Need for An OrderedMap Backend

An OrderedMap is helpful in scenarios where the ordering of keys or range queries is essential and can't be handled efficiently by a plain HashMap, such as:

Time-series event storage (key: timestamp, value: event data), where we often need to get events between T1 and T2, iterate events in chronological order, fetch the latest N events, and so on.

Price index or stock ticker (key: price, value: stockID or price data), where we quickly need to find all items in a price range or sort by price. This is standard functionality in Ecomm platforms, Fintech apps, and such.

Leaderboards (key: score, value: userID), where we want to fetch top N players based on the score, find users within a certain range, insert while maintaining sorted ranking and more.

You can implement the common key-value store operations (set, get, delete, scan, etc.) and then benchmark how each backend behaves under different workloads.

Key Learning:

With this coding challenge, you'll :



Featured: CodeCrafters


If you enjoy building systems from scratch, CodeCrafters is something you'll love.


It offers hands-on programming challenges where you implement systems like Redis, Git, Kafka, and more — all from the ground up. It's one of the best ways to truly understand how systems work under the hood, exploring real-world architecture and internals one step at a time.


I genuinely recommend it. They offer free starter challenges you can try right away. And if you decide to dive deeper, you can use the same referral link to get 40% off (affiliate).




Backend


Build a Hackernews clone backed by a GraphQL API

Tags: Backend, Fullstack, GraphQL

Level: Intermediate

A free and open-source tutorial to help us create a GraphQL app from zero to production, following best practices and using the programming language and framework of our choice.


Build a high-performance shopping cart app with ScyllaDB

Tags: Backend, Python, FastAPI, ScyllaDB

Level: Intermediate

Link to GitHub repo

The blog post discusses building a shopping cart app with ScyllaDB, Python and the FastAPI framework. You'll also learn how to use ScyllaDB's change data capture feature to query and export the history of all changes made to the tables.


Build a Rust RPG application that tracks Bluesky user experiences and events

Tags: Backend, REST API, Rust, ScyllaDB

Level: Intermediate

Link to the GitHub repo

Build an RPG application with Rust and ScyllaDB that can:



Build a low-latency video streaming app with NextJS, TypeScript and ScyllaDB

Tags: Backend, NextJS, TypeScript, ScyllaDB

Level: Intermediate

Link to the GitHub repo

You'll learn coding a video streaming application with features like listing all videos sorted by date, listing videos that the user has started watching along with the progress bar, and more, in addition to learning the data modeling process.


Build a solar power monitoring app with Redis

Tags: Backend, Fullstack, Redis, Java, Python, JavaScript, VueJS

Level: Intermediate

Links to language-specific pages: Java, Python, JavaScript

Gain hands-on experience with Java/Python/JavaScript and Redis by building a solar power monitoring app. You'll develop a command-line data loader, a REST API with Dropwizard, and a Vue.js frontend while working with key Redis data structures like hashes, sets, geospatial indexes, and streams.

Learning Objectives:



Systems Programming


Building a simple load balancer in Go

Tags: Go, systems programming

Level: Beginner, Intermediate

The tutorial guides us through creating a basic load balancer using the Go programming language.


CDN up and running: Building a CDN from scratch

Tags: Nginx, Lua, Prometheus, Grafana, systems programming

Level: Intermediate, Advanced

This GitHub repository offers a guide to building a Content Delivery Network (CDN) from scratch, leveraging technologies such as Nginx, Lua, Docker, Prometheus, and Grafana.

The project begins with creating a single backend service and expands from there to a multi-node, latency-simulated, observable, and testable CDN. Throughout the process, it discusses the challenges and trade-offs involved in building, managing, and operating a CDN, making it a valuable resource for those looking to deepen their knowledge in this area.



Data Engineering


Analyze railway traffic in the Netherlands with DuckDB

Tags: Database, data analytics, SQL, DuckDB

Level: Beginner, Intermediate

DuckDB is an in-memory analytical database designed for fast, efficient querying of structured data. Run analytical SQL queries on a real-world Dutch railway network dataset with the linked tutorial.


Implementing a data lake with DuckDB and AWS Lambdas

Tags: Data analytics, DuckDB, AWS

Level: Advanced

Link to the GitHub repo

The project uses DuckDB as a stateless query engine on a data lake using AWS Lambda. Instead of maintaining a traditional database server, queries are executed on-demand in a serverless environment, making it highly cost-effective and scalable.

It's a good project for learning data processing, query engines, and serverless.


Exploring StarCraft 2 data with Airflow, DuckDB, and Streamlit

Tags: Data analytics, DuckDB, Airflow

Level: Intermediate, Advanced

Link to the GitHub repo

A project that fetches data from the StarCraft II API, stores the results in DuckDB orchestrated via Airflow, and creates a Streamlit app to visualize the data.


Extract analytics from Bluesky

Tags: Database, data analytics, DuckDB, Python

Level: Intermediate

Extract analytics from Bluesky querying its open APIs and streams with DuckDB to build your own dashboards, tools and visualizations.


Build a data pipeline with DuckDB

Tags: Database, data analytics, DuckDB, SQL

Level: Intermediate

The project demonstrates how to build a real-time data pipeline using DuckDB to process environmental data from the UK's Environment Agency. The data is available on a public REST API, providing information about measures such as rainfall and river levels reported from various stations around the UK.

The project reads data from REST APIs and processes and stores it to be queried with various visualization tools.


More projects are on the way—stay tuned! Meanwhile, check out these learning resources.