The Vault LogoThe Vault

Where software engineers grow their knowledge.

Sign in

Frameworks 🧰

Essential concepts of frameworks and libraries to speed up development, and when to use them.

Fundamentals
Architecture
Productivity
Client-Server Architecture 🌐

Client-server architecture separates user-facing clients from backend servers, allowing them to communicate through APIs using standard protocols. This model supports scalability, modularity, and clean separation of responsibilities in modern applications.

Architecture
Fundamentals
Servers
API
Protocols
+3
🧪 Introduction to Software Testing

This note provides a foundational overview of software testing, explaining its purpose, importance, and key types. It highlights the differences between manual and automated testing, including their strengths and limitations, and emphasizes the value of using both in a balanced strategy. The note also outlines what makes a good test and when to write them, making it a practical introduction for anyone looking to understand the basics of testing in software engineering.

Testing
Quality
Fundamentals
🧨 Testing Pitfalls and Anti-Patterns

A quick guide to common testing mistakes—why they happen, how to avoid them, and how to write tests that actually help your software grow safely.

Testing
Fundamentals
Automated Testing
Quality
🧠 Domain-Driven Design (DDD)

Domain-Driven Design (DDD) is a way to build software that closely reflects the business it serves. It focuses on modeling the domain with concepts like entities, value objects, and bounded contexts, encouraging clear structure and strong collaboration between developers and domain experts.

Architecture
DDD
Business Logic
Hexagonal Architecture (Ports & Adapters) 🛠️

Design pattern that separates business logic from external systems through well-defined interfaces. This approach improves maintainability, testability, and adaptability by isolating the core of an application from technologies like databases, APIs, and UIs. It promotes clean code practices, allowing developers to evolve systems without tightly coupling them to implementation details.

Architecture
Business Logic
Agile Methodologies 🚀

Agile methodologies are flexible, iterative approaches to software development that focus on collaboration, quick delivery, and continuous improvement. They help teams adapt to change, deliver value frequently, and build better software through feedback and teamwork.

Project Management