21 repos
Development Methodologies & Practices — Software Engineering & Architecture
We curate 21 GitHub repositories matching software engineering & architecture · Development Methodologies & Practices. Refine with filters or upvote what's useful.
Development Methodologies & Practices — Software Engineering & Architecture
- codecrafters-io/build-your-own-x
codecrafters-io/build-your-own-x
467,272This project provides a comprehensive framework for creating, managing, and executing educational programming challenges. It includes standardized systems for authoring instructional content, defining test cases, and structuring documentation to ensure consistent learning outcomes. The platform supports a wide range of programming languages through dedicated execution environments that handle compilation, dependency management, and automated testing. The infrastructure facilitates both local and remote development workflows, offering command-line utilities for testing code without requiring version-control commits. It features an automated orchestration lifecycle for containerized test execution, complemented by diagnostic tools for debugging network protocols and monitoring program output. Additionally, the project includes maintenance workflows for repository history management and integration tools for synchronizing data with external version-control hosts.
Markdownawesome-listfreeprogramming - freeCodeCamp/freeCodeCamp
freeCodeCamp/freeCodeCamp
437,296freeCodeCamp is an open-source, web-based educational platform designed to facilitate software engineering skill acquisition through a structured, project-driven curriculum. It combines theoretical instruction with hands-on coding exercises, requiring users to build functional applications to demonstrate mastery of programming concepts. The platform provides a browser-integrated workspace that evaluates learner proficiency through automated testing of code submissions against predefined functional requirements. The platform distinguishes itself by integrating technical training with professional development resources. Beyond core programming and full-stack development modules, it offers specialized training in relational database management and professional communication. These language proficiency modules are designed to improve technical documentation skills, collaborative interaction, and workplace communication for software developers. The infrastructure supports this learning model through secure, isolated sandboxes for code execution and an automated verification engine that validates user-submitted SQL queries and code logic. The curriculum is structured using modular markdown files, and the entire experience is managed by an event-driven system that tracks progress across diverse learning paths.
TypeScriptcareerscertificationcommunity - kamranahmedse/developer-roadmap
kamranahmedse/developer-roadmap
349,419This project is a comprehensive repository of structured learning paths and professional development curricula designed to guide individuals through various technical domains and career roles. It provides a hierarchical knowledge base that organizes complex software engineering concepts into progressive, actionable modules, helping learners navigate the specific skills and milestones required for advancement in fields ranging from web and mobile development to infrastructure and system architecture. What distinguishes this resource is its graph-based approach to knowledge mapping, which connects disparate technical concepts and professional roles into a navigable network of dependencies. By utilizing a declarative specification for its curricula, the project ensures that learning objectives remain consistent and maintainable. It further supports professional growth through interactive assessment logic and diagnostic tools, which provide personalized recommendations to reinforce knowledge and improve technical recall. Beyond core skill acquisition, the project covers a broad surface of engineering best practices, including system design, API security, cloud infrastructure, and collaborative code review processes. It also integrates modern development paradigms by offering guidance on AI-assisted coding workflows and tool selection. The repository includes extensive resources for career readiness, such as technical interview strategies, concept summaries, and categorized practice questions. The educational content is delivered as pre-rendered static assets, ensuring high availability and rapid access for a global audience.
TypeScriptangular-roadmapbackend-roadmapblockchain-roadmap - jwasham/coding-interview-university
jwasham/coding-interview-university
337,188This project is a comprehensive educational roadmap designed to guide software engineers through the mastery of computer science fundamentals and technical interview preparation. It provides a structured, dependency-aware learning path that organizes complex computing concepts into a hierarchical curriculum, enabling users to build a professional engineering foundation through iterative study and practical implementation. The curriculum distinguishes itself by integrating theoretical knowledge with professional development, offering a unified index of cross-referenced resources including books, academic papers, and video tutorials. It emphasizes the standardization of algorithmic efficiency through asymptotic complexity analysis and provides granular, modular topic decomposition to facilitate focused, incremental learning across vast technical domains. Beyond core algorithms and data structures, the repository covers a broad capability surface including system architecture design, distributed systems, computer security, and advanced mathematical modeling. It also provides strategic guidance for the entire hiring lifecycle, from resume optimization and behavioral interview preparation to long-term career growth. The entire knowledge base is maintained as a version-controlled, markdown-driven repository, allowing for a platform-agnostic and collaborative approach to technical education.
algorithmalgorithmscoding-interview - donnemartin/system-design-primer
donnemartin/system-design-primer
335,906This repository is a comprehensive educational resource designed to help software engineers master large-scale system design and prepare for technical interviews. It provides a structured curriculum that covers the fundamental principles of distributed systems, backend engineering, and object-oriented design through a combination of study guides, architectural patterns, and practical problem-solving methodologies. The project distinguishes itself by applying theoretical concepts to real-world scenarios through case-study-based modeling and a constraint-driven analysis framework. It emphasizes trade-off-centric documentation, which highlights the inherent conflicts between architectural patterns to guide informed decision-making. To reinforce learning, the repository includes an active-recall study mechanism featuring curated flashcards and a hierarchical taxonomy that organizes complex concepts into manageable modules. The resource covers a broad capability surface, including strategies for scaling cloud infrastructure, managing data consistency, and optimizing system performance through caching, load balancing, and asynchronous communication. It also provides extensive object-oriented design exercises and structured interview preparation materials, such as back-of-the-envelope calculations and step-by-step design frameworks for common high-throughput services. The documentation is organized as a modular reference guide, allowing users to navigate through foundational topics and advanced architectural discussions at their own pace.
Pythondesigndesign-patternsdesign-system - golang/go
golang/go
132,649Go is a statically typed, compiled programming language designed for building scalable, concurrent software. It provides a memory-safe execution environment that combines a high-performance runtime with a self-hosting compiler toolchain, enabling the creation of statically linked machine code binaries without external dependencies. The language is built around a structural type system that uses interfaces for polymorphism and a concurrency model based on lightweight, stack-based coroutines that communicate through channels. The language distinguishes itself through a runtime that features a concurrent, low-latency garbage collector and a compiler that performs escape analysis to optimize memory allocation. It includes a comprehensive, integrated toolchain that supports the entire software lifecycle, from dependency management and versioning to profiling, testing, and diagnostic analysis. These tools are designed to maintain consistent, reproducible builds and high code quality across complex, distributed systems. Beyond its core runtime and language features, Go provides standardized interfaces for database-driven application development, including support for connection pooling and secure query execution. The ecosystem is supported by a unified command-line interface that simplifies project organization, module distribution, and performance tuning. The project maintains extensive documentation, including formal language specifications, memory models, and installation guides for various platforms.
Gogogolanglanguage - Chalarangelo/30-seconds-of-code
Chalarangelo/30-seconds-of-code
126,814This project is a comprehensive educational repository providing a wide range of tutorials, code snippets, and technical guides for software developers. It covers essential areas of web development, including styling techniques, version control workflows, algorithmic problem-solving, and framework-specific programming patterns. The collection includes practical implementations for JavaScript, Node.js, Python, and React, alongside detailed explanations of language mechanics and data structures. Beyond code, the repository offers essays on software engineering philosophy, focusing on code maintainability, the impact of abstractions, and the importance of explicit design patterns to reduce cognitive load.
JavaScriptastroawesome-listcss - rust-lang/rust
rust-lang/rust
110,533Rust is a programming language designed for memory safety and performance. It provides a comprehensive curriculum that covers fundamental syntax, memory management, and advanced programming paradigms, including support for functional and object-oriented styles. The language features a strong type system that enforces memory safety through ownership, borrowing, and lifetime annotations, while also offering mechanisms for handling both recoverable and unrecoverable errors. The language includes extensive support for concurrent programming, providing primitives for thread management, shared-state synchronization, and asynchronous task execution. Developers can organize code using modules and visibility controls, and utilize a macro system for metaprogramming and code generation. The ecosystem also includes a built-in testing framework for unit and integration tests, as well as tools for managing project builds and dependencies. Advanced capabilities allow for low-level control, including foreign function interfaces for interacting with other languages and unsafe code blocks for operations that bypass standard safety guarantees. The project documentation provides a structured learning path, ranging from environment setup and basic language constructs to complex topics like smart pointers, trait-based polymorphism, and practical project implementation.
Rustcompilerlanguagerust - GrowingGit/GitHub-Chinese-Top-Charts
GrowingGit/GitHub-Chinese-Top-Charts
106,216This project functions as a curated software directory and developer resource index, providing a centralized platform for discovering and evaluating high-quality open-source repositories. It serves as an aggregator that monitors trending software and educational resources, organizing them by technical domain and programming language to assist developers in identifying tools for their specific technical challenges. The directory distinguishes itself through a community-driven curation workflow, where repository lists are validated and updated based on collective developer consensus. This information is maintained within structured, human-readable markdown files, ensuring that the evolution of the index remains transparent through version-controlled change tracking. To maintain accuracy, the platform utilizes automated data aggregation to fetch real-time metadata and contributor statistics directly from remote service endpoints. Beyond simple discovery, the platform supports analytical research into open-source ecosystems. Users can evaluate the maintenance status and reliability of projects by researching contributor activity, analyzing technical stacks, and monitoring project lifecycles through versioned releases and changelogs. These capabilities facilitate informed decisions regarding software integration and dependency management.
Java - tauri-apps/tauri
tauri-apps/tauri
102,979Tauri is a cross-platform framework for building desktop applications that combine web-based user interfaces with a memory-safe systems-language backend. It functions as a secure runtime that hosts web content within native windowing containers, allowing developers to leverage existing web technologies while maintaining high-performance native logic. By compiling applications into small-footprint, platform-specific binaries, the framework avoids bundling heavy runtime environments, resulting in lightweight executables. The project distinguishes itself through a capability-based security model that enforces granular access control over system resources and native APIs. Communication between the isolated frontend webview and the privileged backend is managed through a secure, asynchronous message-passing bridge. This architecture ensures that native system capabilities are exposed to the web interface only through strictly defined, configuration-driven permissions. The framework provides a modular plugin system that allows for the extension of core functionality through reusable backend components. Development is supported by a unified workflow that includes project scaffolding, a local development server with hot-reloading for both frontend and backend assets, and automated tools for managing the application lifecycle and binary distribution. The system also includes built-in support for orchestrating remote application updates and verifying package integrity.
Rustdesktop-apphigh-performancemobile-app - mtdvio/every-programmer-should-know
mtdvio/every-programmer-should-know
97,839This project is a comprehensive, community-curated knowledge base designed to support software engineers in mastering both fundamental computer science principles and practical industry methodologies. It serves as a centralized reference library that aggregates technical resources, academic literature, and professional guidance to facilitate systematic skill acquisition across the entire software development lifecycle. What distinguishes this repository is its holistic approach to the engineering profession, which bridges the gap between theoretical knowledge and career-oriented development. Beyond core technical topics like system architecture, distributed systems, and algorithmic design, the project provides extensive guidance on professional growth, including resume optimization, soft skills, and strategies for maintaining mental health and productivity in demanding technical environments. The repository covers a broad capability surface, ranging from low-level system concerns such as memory management and data structures to high-level practices in platform engineering and software craftsmanship. It also incorporates resources for collaborative development, security protocols, and interactive learning, ensuring that developers have access to authoritative information for both daily problem-solving and long-term career advancement. The content is structured as a hierarchical collection of markdown files, maintained through a version-controlled, community-driven workflow that ensures the information remains accurate and relevant as industry standards evolve.
cc-bycollectioncomputer-science - pytorch/pytorch
pytorch/pytorch
97,601PyTorch is a machine learning framework centered on a GPU-ready tensor library that supports multi-dimensional array operations across both CPU and accelerator hardware. It provides a foundational infrastructure for mathematical computation and dynamic neural network construction, utilizing a tape-based automatic differentiation system that allows for flexible, non-static graph execution. The framework is designed for deep integration with Python, enabling natural usage alongside standard scientific computing ecosystems. It distinguishes itself through a comprehensive distributed training suite that includes data-parallel, model-parallel, and sharding primitives, alongside a just-in-time compilation infrastructure. Developers can extend the library by registering custom operators written in Python, C++, or CUDA, ensuring these components compose directly with the core automatic differentiation and execution pipelines. Beyond its core tensor and neural network modules, the project includes extensive tooling for data ingestion, performance profiling, and memory analysis. It provides specialized utilities for audio processing, including feature extraction and speech recognition, as well as a distributed remote procedure call framework for managing complex, multi-node computational workloads. Installation instructions are available for various hardware backends and build-time configurations to support specific environment requirements.
Pythonautograddeep-learninggpu - iluwatar/java-design-patterns
iluwatar/java-design-patterns
93,757This project is a comprehensive educational knowledge base designed to help developers master software engineering excellence through a structured catalog of design patterns and architectural principles. It provides a curated repository of best practices, programming heuristics, and implementation examples, all organized to facilitate skill acquisition and improve code quality in Java. The repository distinguishes itself by offering a navigable hierarchy of reusable design patterns and architectural strategies that promote interface-centric design and decoupled implementation. By emphasizing clean code standards and established design heuristics, it serves as a reference-based resource for understanding how to build maintainable, modular, and robust object-oriented systems. Beyond its core architectural focus, the project includes a broad library of functional code snippets and algorithmic implementations. These resources cover a wide range of common programming challenges, including data structures, mathematical computations, file operations, and utility tasks, providing practical, stateless examples that demonstrate idiomatic coding standards.
Javaawesome-listdesign-patternshacktoberfest - nvm-sh/nvm
nvm-sh/nvm
91,751This project is a command-line tool designed for managing multiple runtime versions on a local machine. It functions as a shell-based environment manager that enables users to install, switch between, and maintain different versions of a runtime to support project-specific requirements or diverse shell sessions. By dynamically updating system paths and environment variables, it provides a consistent interface for runtime version control across various Unix-like operating systems. The tool distinguishes itself through its portable, POSIX-compliant shell implementation, which ensures reliable execution across a wide range of shell environments. It utilizes lazy-loading function aliasing to defer the execution of management logic until a command is actually invoked, minimizing overhead during shell startup. Furthermore, it employs directory-symlink-based switching and persistent environment variable configuration to maintain a stable and predictable execution context for developers. Beyond core version switching, the project supports a broad range of environment configuration capabilities. It facilitates the installation of pre-release and nightly builds, provides command-line tab completion for improved usability, and includes automated mechanisms for updating the manager itself. The system is designed to enforce environment consistency across development teams, allowing for standardized runtime configurations and simplified cross-version development workflows. Installation is performed via shell scripts, which integrate the manager into the user's shell profile to ensure persistent access to versioning commands across terminal sessions.
Shellbashinstalllts - florinpop17/app-ideas
florinpop17/app-ideas
90,567App-ideas is a development platform that integrates autonomous AI agents into local environments to orchestrate code review, automated fix application, and workflow management. It functions as a command-line interface that connects external AI assistants to your codebase, enabling iterative development cycles through plugin-based integration and natural language triggers. The platform distinguishes itself through a robust static analysis engine that traverses syntax trees to enforce structural coding standards and identify violations. Users can define custom review rules, architectural preferences, and reusable recipes in configuration files, which the system resolves hierarchically across global and project scopes. This allows for consistent policy enforcement and automated maintenance tasks, such as generating docstrings, creating unit tests, and resolving merge conflicts. Beyond its core automation capabilities, the project provides administrative tools for managing organization-level tasks, including audit log retrieval, user seat assignments, and role modifications. It also includes a curated repository of programming challenges designed to help developers practice technical skills and prepare for engineering interviews. The tool is installed via shell-based scripts that configure system paths for global access and include diagnostic utilities to verify environment connectivity and authentication status.
applicationscodingcodingchallenges - storybookjs/storybook
storybookjs/storybook
89,274Storybook is a development environment for building, testing, and documenting user interface components in isolation. By rendering components within a sandboxed environment, it decouples them from the host application's global state and dependencies, allowing developers to verify complex states and edge cases without running the full application. The platform utilizes a framework-agnostic bridge layer to support various frontend technologies and features a modular, addon-based architecture that allows for custom UI panels and toolbar controls. It captures component states as declarative metadata, which serves as a foundation for automated visual regression testing, accessibility auditing, and interaction validation. These capabilities enable teams to maintain a centralized library of design patterns and usage examples that can be compiled into portable, static web applications. Beyond core development, the toolchain integrates into continuous integration pipelines to automate interface verification and deployment workflows. Users can initialize the environment through a command-line interface, which bootstraps the necessary configuration to support project-specific requirements and streamline the component building process.
TypeScriptangularcomponentsdesign-systems - vitejs/vite
vitejs/vite
78,295Vite is a frontend build toolchain that provides a unified development and production pipeline for modern web applications. It functions as a modular, environment-agnostic build engine that leverages native ES modules to serve source code directly to the browser, eliminating the need for expensive bundling during the development phase. By maintaining an environment-aware module graph, it supports concurrent development across client, server, and custom runtime environments. The project distinguishes itself through a high-performance development server that utilizes a hot module replacement protocol to propagate granular code updates via WebSockets, allowing for stateful application patches without full page reloads. Its architecture is built on a plugin-based transformation pipeline that ensures consistent code processing across both development and production builds. Additionally, it features advanced dependency pre-bundling, which converts CommonJS and UMD dependencies into optimized ESM chunks to improve loading efficiency and startup performance. Vite covers a broad capability surface, including comprehensive support for server-side rendering, multi-page application architectures, and static asset management. It provides extensive programmatic APIs for controlling code transformation, server lifecycles, and environment variable management. The toolchain also includes built-in optimizations for production, such as automatic code splitting, preload directive generation, and high-speed TypeScript transpilation. The project is configured through a standard file-based system, allowing developers to extend functionality via custom plugins and hooks that integrate directly into the build and runtime logic.
TypeScriptbuild-tooldev-serverfrontend - coder/code-server
coder/code-server
76,310This project provides a remote development platform that enables users to access a full-featured integrated development environment through a standard web browser. By decoupling the user interface from the server-side filesystem, it allows for persistent coding workspaces to be hosted on remote servers, virtual machines, or cloud-native infrastructure, ensuring a consistent development experience from any device. The platform distinguishes itself through a secure gateway architecture that manages traffic, authentication, and encryption at the edge. It utilizes persistent WebSocket connections to synchronize editor state and terminal input-output between the remote server and the browser. Furthermore, it includes built-in service proxying capabilities that allow developers to expose locally running web applications via secure subdomains or subpaths, complete with integrated identity verification and traffic management. To support diverse infrastructure requirements, the system offers flexible deployment options including containerized environments and automated provisioning workflows. It maintains state continuity through filesystem-mounted persistence, ensuring that configurations and project data remain intact across restarts. The platform also enforces network security by managing TLS certificates for HTTPS traffic and providing integration layers for external authentication providers. Installation is supported across various host architectures through shell scripts, package managers, or standalone archives, with built-in utilities for managing the application lifecycle.
TypeScriptbrowser-idedev-toolsdevelopment-environment - nestjs/nest
nestjs/nest
74,685Nest is a server-side framework for building scalable and maintainable enterprise-grade applications using TypeScript. It provides a modular architecture that organizes code into encapsulated, reusable modules, utilizing a dependency injection container to manage object lifecycles and resolve component dependencies through declarative metadata. The framework distinguishes itself through a platform-agnostic abstraction layer that decouples core logic from underlying HTTP servers, allowing for flexible implementation choices. It employs a middleware-based request pipeline that processes traffic through interceptors, guards, and pipes, and uses reflective metadata programming to automate routing and dependency resolution. Developers can manage complex application lifecycles and project scaffolding through an integrated command-line interface. Beyond core request handling, the framework supports the development of RESTful and GraphQL services, as well as distributed systems through microservices communication patterns. It facilitates modular scaling by allowing for the programmatic generation of module configurations at runtime, enabling the integration of third-party libraries and services within a unified TypeScript environment.
TypeScriptframeworkhacktoberfestjavascript - jesseduffield/lazygit
jesseduffield/lazygit
72,698Lazygit is a terminal-based user interface designed to simplify version control operations through a keyboard-driven workflow. It functions as a visual abstraction layer that bridges native commands with an interactive environment, allowing users to manage repository history, branches, and commit workflows without relying solely on manual command-line input. The tool distinguishes itself by automating complex version control tasks that typically require multiple manual steps. It provides specialized interfaces for interactive rebasing, commit history amendment, and binary search-based regression analysis. By leveraging the internal reflog, it also enables users to undo or redo recent actions, providing a safety net for repository state changes. Beyond core version control, the application offers extensive support for managing branching models, worktrees, and custom shell integrations. Users can stage individual lines of code, visualize commit graphs, and define custom commands to automate repetitive tasks. The interface is built to be highly navigable, featuring text-based filtering, customizable keybindings, and persistent directory management to streamline daily development cycles.
Gocligitterminal