Skip to content

This repository is dedicated to practical programming challenges that encourage you to build real systems from scratch.

License

Notifications You must be signed in to change notification settings

wesleybertipaglia/software-craftsmanship

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 

🛠️ Software Craftsmanship

License: MIT

Welcome to Software Craftsmanship!

This repository is dedicated to practical programming challenges that encourage you to build real systems from scratch. The focus is on understanding how things are constructed, exploring architecture, algorithms, and data structures, and improving your skills as a software artisan.

Every challenge is an opportunity to craft software thoughtfully, from utilities to complex applications, without being restricted by programming language or abstraction level.

📚 Table of Contents

🤖 Getting Started

To start crafting your own software:

  1. Browse the challenges and pick one that excites you.
  2. Read the challenge instructions in the linked markdown file.
  3. Implement the solution in any programming language or framework.
  4. Focus on understanding how things work, not just making it function.
  5. Test thoroughly and iterate on your design.
  6. Optionally, share your solution via GitHub issues using the solution template.

🏆 Challenges

🧩 Low-Level / Core Systems

These challenges focus on fundamentals, algorithms, systems, and utilities. The goal is to understand how systems work under the hood.

Title Description Link
Grep Build a command-line tool to search text using patterns Link
Tar Implement a simplified tar archiver Link
Top Read process information and display a live system snapshot Link
Shell Build a shell with pipelines, redirection, and job control Link
Git Create a lightweight Git-like object store and commit system Link
Curl Implement a simple HTTP client using raw TCP requests Link
Redis Build an in-memory database server with TCP protocol Link
HTTP Server Build a web server with HTTP parsing, headers, and routing Link
DNS Server Implement a DNS server with query parsing and caching Link
BitTorrent Implement a peer-to-peer file sharing client Link
SQLite Create a small relational database engine with B-trees Link

🚗 Applications / Simulations

These challenges focus on real-world applications or domain simulations. The goal is to understand how components interact in complete systems.

Title Description Link
Uber Design a small ride-hailing simulation system Link
Airbnb Build a simplified property rental system Link
PayPal Create a simplified payment processing system Link
Amazon Build a simplified e-commerce platform Link
Twitter Create a microblogging platform Link
Discord Build a team messaging application Link
Dropbox Create a file storage and sharing system Link
Spotify Build a music streaming service Link
Tinder Create a dating and social discovery platform Link
Github Build a collaborative development platform Link
Google Create a search and information platform Link
Youtube Build a video sharing platform Link

Note: Challenges are intentionally broad — you can go deep or wide depending on your interests. The goal is learning by building, not finishing a task.

🏆 Solutions

Community-submitted solutions can be found in solutions.md. Feel free to contribute your own implementations or improvements.

💬 Community

💻 Contributing

See CONTRIBUTING.md for contribution guidelines.

We welcome:

  • New challenge proposals
  • Improved instructions or references
  • Community solutions and examples
  • Testing and documentation improvements

📜 License

This project is licensed under the MIT License. See the LICENSE file for details.

🎉 Happy building!

About

This repository is dedicated to practical programming challenges that encourage you to build real systems from scratch.

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Sponsor this project

  •  

Packages

No packages published