Convert Figma logo to code with AI

codecrafters-io logobuild-your-own-x

Master programming by recreating your favorite technologies from scratch.

304,375
28,529
304,375
335

Top Related Projects

Master programming by recreating your favorite technologies from scratch.

Curated list of project-based tutorials

45,130

:page_with_curl: A list of practical projects that anyone can solve in any programming language.

Learn how to design large-scale systems. Prep for the system design interview. Includes Anki flashcards.

Interactive roadmaps, guides and other educational content to help developers grow in their careers.

Quick Overview

Build Your Own X is a comprehensive collection of tutorials and resources for building various software systems and tools from scratch. It aims to help developers understand complex systems by guiding them through the process of creating simplified versions of popular technologies, such as databases, web servers, and programming languages.

Pros

  • Provides hands-on learning experiences for understanding complex systems
  • Covers a wide range of technologies and concepts
  • Encourages deep understanding of fundamental principles
  • Fosters creativity and problem-solving skills

Cons

  • Some tutorials may be outdated or not maintained regularly
  • The complexity of certain projects might be overwhelming for beginners
  • Not all tutorials are equally detailed or well-structured
  • Some projects may lack practical applications beyond learning purposes

Getting Started

To get started with Build Your Own X:

  1. Visit the GitHub repository: https://github.com/codecrafters-io/build-your-own-x
  2. Browse the list of available projects and choose one that interests you
  3. Click on the project link to access the tutorial or resources
  4. Follow the instructions provided in the tutorial to build your own version of the chosen technology

Note that this is not a code library, but rather a collection of tutorials and resources. Each project will have its own specific instructions and requirements.

Competitor Comparisons

Master programming by recreating your favorite technologies from scratch.

Pros of build-your-own-x

  • Extensive collection of project ideas covering various technologies
  • Well-organized with clear categorization of projects
  • Community-driven with contributions from many developers

Cons of build-your-own-x

  • Lacks structured learning paths or difficulty levels
  • Some project links may be outdated or no longer maintained
  • No built-in testing or validation for completed projects

Code comparison

As both repositories are the same, there is no relevant code comparison to make. The build-your-own-x repository primarily consists of a README.md file with a curated list of project tutorials and resources. Here's a sample of how the content is structured:

## Build your own `3D Renderer`

* [**C++**: _Introduction to Ray Tracing: A Simple Method for Creating 3D Images_](https://www.scratchapixel.com/lessons/3d-basic-rendering/introduction-to-ray-tracing/how-does-it-work)
* [**C++**: _How OpenGL works: software rendering in 500 lines of code_](https://github.com/ssloy/tinyrenderer/wiki)
* [**C++**: _Raycasting engine of Wolfenstein 3D_](http://lodev.org/cgtutor/raycasting.html)
* [**C++**: _Physically Based Rendering:From Theory To Implementation_](http://www.pbr-book.org/)

This format is consistent throughout the repository, providing links to various tutorials and resources for each project category.

Curated list of project-based tutorials

Pros of project-based-learning

  • Broader range of topics, including web development, game development, and data science
  • More structured learning paths with step-by-step tutorials
  • Includes resources for various programming languages and frameworks

Cons of project-based-learning

  • Less focus on building complete, standalone projects
  • May not provide as much depth in system design and low-level implementations
  • Some tutorials might be outdated or link to external resources that are no longer available

Code Comparison

While both repositories primarily contain lists of resources rather than actual code, here's a comparison of how they structure their content:

project-based-learning:

## JavaScript
* [Build 30 things in 30 days with 30 tutorials](https://javascript30.com/)
* [Build a Trello clone](https://www.youtube.com/watch?v=RDQGPs7StNA)

build-your-own-x:

## Build your own `3D Renderer`

* [**C++**: _Introduction to Ray Tracing: a Simple Method for Creating 3D Images_](https://www.scratchapixel.com/lessons/3d-basic-rendering/introduction-to-ray-tracing/how-does-it-work)
* [**C++**: _How OpenGL works: software rendering in 500 lines of code_](https://github.com/ssloy/tinyrenderer/wiki)

Both repositories use markdown to organize their content, but build-your-own-x focuses more on specific implementations of various technologies, while project-based-learning provides a wider range of tutorials and resources for different programming concepts and languages.

45,130

:page_with_curl: A list of practical projects that anyone can solve in any programming language.

Pros of Projects

  • Offers a wider variety of project ideas across different domains
  • Provides a simpler, more straightforward list format
  • Easier for beginners to get started with smaller, self-contained projects

Cons of Projects

  • Lacks detailed explanations or tutorials for each project
  • Doesn't provide as much depth or complexity in project suggestions
  • Less focus on building real-world, production-like applications

Code Comparison

Projects typically suggests simpler implementations:

def fibonacci(n):
    if n <= 1:
        return n
    return fibonacci(n-1) + fibonacci(n-2)

Build Your Own X often involves more complex, real-world scenarios:

class BitTorrent:
    def __init__(self, torrent_file):
        self.torrent = parse_torrent_file(torrent_file)
        self.peers = []
        self.pieces = []

    def download(self):
        self.connect_to_tracker()
        self.request_pieces()
        self.assemble_file()

Build Your Own X focuses on creating fully-functional, complex systems from scratch, providing in-depth tutorials and explanations. It's better suited for intermediate to advanced developers looking to deepen their understanding of how various technologies work under the hood.

Projects, on the other hand, offers a broader range of simpler project ideas, making it more accessible for beginners and those looking for quick coding exercises across different programming domains.

Learn how to design large-scale systems. Prep for the system design interview. Includes Anki flashcards.

Pros of system-design-primer

  • Comprehensive coverage of system design concepts and principles
  • Includes visual aids, diagrams, and real-world examples
  • Provides a structured learning path for system design interviews

Cons of system-design-primer

  • Focuses primarily on theoretical knowledge rather than hands-on implementation
  • May not provide as much practical coding experience
  • Limited to system design topics, not covering a wide range of programming projects

Code comparison

While both repositories are primarily educational resources, system-design-primer does include some code snippets for illustration purposes. Here's a brief comparison:

system-design-primer:

def get_user(user_id):
    user = memcache.get("user.{0}", user_id)
    if user is None:
        user = db.query("SELECT * FROM users WHERE user_id = {0}", user_id)
        memcache.set("user.{0}", user, 30)
    return user

build-your-own-x:

class HTTPServer:
    def __init__(self, port):
        self.port = port

    def start(self):
        s = socket.socket()
        s.bind(('', self.port))
        s.listen(1)
        print(f"Listening on port {self.port}")

The system-design-primer example focuses on caching and database queries, while build-your-own-x provides more practical implementation details for building various systems.

Interactive roadmaps, guides and other educational content to help developers grow in their careers.

Pros of developer-roadmap

  • Provides comprehensive learning paths for various tech roles
  • Regularly updated with new technologies and industry trends
  • Offers interactive roadmaps with clickable resources

Cons of developer-roadmap

  • Focuses on breadth rather than depth of knowledge
  • May overwhelm beginners with too many options
  • Lacks hands-on project-based learning

Code comparison

While both repositories don't primarily focus on code, developer-roadmap includes some code snippets in its explanations. For example:

developer-roadmap:

// Example of a closure in JavaScript
function outerFunction(x) {
  return function(y) {
    return x + y;
  };
}

build-your-own-x doesn't typically include code snippets directly but links to projects that contain full implementations.

Both repositories serve different purposes: developer-roadmap provides a structured learning path for various tech roles, while build-your-own-x offers a collection of tutorials for building specific technologies from scratch. The choice between them depends on whether you're looking for a broad overview of skills to learn or hands-on experience with specific technologies.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

Banner

Build your own <insert-technology-here>

This repository is a compilation of well-written, step-by-step guides for re-creating our favorite technologies from scratch.

What I cannot create, I do not understand — Richard Feynman.

It's a great way to learn.

Tutorials

Build your own 3D Renderer

Build your own Augmented Reality

Build your own BitTorrent Client

Build your own Blockchain / Cryptocurrency

Build your own Bot

Build your own Command-Line Tool

Build your own Database

Build your own Docker

Build your own Emulator / Virtual Machine

Build your own Front-end Framework / Library

Build your own Game

Build your own Git

Build your own Network Stack

Build your own Neural Network

Build your own Operating System

Build your own Physics Engine

Build your own Programming Language

Build your own Regex Engine

Build your own Search Engine

Build your own Shell

Build your own Template Engine

Build your own Text Editor

Build your own Visual Recognition System

Build your own Voxel Engine

Build your own Web Browser

Build your own Web Server

Uncategorized

Contribute

Origins & License

CC0

This repository is the work of many contributors. It was started by Daniel Stefanovic, and is now maintained by CodeCrafters, Inc. To the extent possible under law, CodeCrafters, Inc. has waived all copyright and related or neighboring rights to this work.