home / skills / athola / claude-night-market / architecture-paradigm-client-server

This skill helps design client-server architectures by clarifying responsibilities, documenting contracts, and planning versioning and security for centralized

npx playbooks add skill athola/claude-night-market --skill architecture-paradigm-client-server

Review the files below or copy the command above to add this skill to your agents.

Files (1)
SKILL.md
3.6 KB
---
name: architecture-paradigm-client-server
description: 'Consult this skill when designing client-server systems or API architectures.
  Use when traditional web/mobile applications with centralized services, clear separation
  between client and server responsibilities needed. Do not use when selecting from
  multiple paradigms - use architecture-paradigms first. DO NOT use when: peer-to-peer
  dominates - consider dedicated P2P patterns.'
category: architectural-pattern
tags:
- architecture
- client-server
- peer-to-peer
- distributed-systems
dependencies: []
tools:
- api-contract-generator
- networking-debugger
usage_patterns:
- paradigm-implementation
- distributed-system-design
- offline-first
complexity: low
estimated_tokens: 600
---

# The Client-Server and Peer-to-Peer Paradigms

## When to Employ This Paradigm
- For traditional applications that have centralized services, such as web or mobile clients communicating with backend APIs.
- For systems exploring decentralized or "offline-first" capabilities that rely on peer-to-peer synchronization.
- To formally document trust boundaries, client-server version negotiation, and API evolution strategies.

## Adoption Steps
1. **Define Responsibilities**: Clearly delineate which logic and data reside on the client versus the server, with the goal of minimizing duplication.
2. **Document the Contracts**: Formally document all APIs, data schemas, authentication flows, and any capability negotiation required for handling different client versions.
3. **Plan for Version Skew**: Implement a strategy to manage different client and server versions, such as using feature flags, `Accept` headers for content negotiation, or semantic versioning for APIs.
4. **Address Connectivity Issues**: If the application is not purely client-server, design for intermittent connectivity. This may involve implementing offline caching, data synchronization protocols, or peer discovery and membership services.
5. **Secure All Communications**: Enforce the use of TLS for all data in transit. Implement authorization policies, rate limiting, and detailed telemetry for every endpoint.

## Key Deliverables
- An Architecture Decision Record (ADR) that covers the roles of clients, servers, and peers, defines the trust boundaries, and outlines deployment assumptions.
- Formal API or protocol specifications, along with a suite of compatibility tests.
- Runbooks detailing the coordination required for rollouts, such as client release waves, backward-compatibility support, or operational procedures for a peer-to-peer network.

## Risks & Mitigations
- **"Chatty" Clients**:
  - **Mitigation**: A client making too many small requests can lead to poor performance. Consolidate API calls using patterns like the Façade or Gateway, and implement caching strategies on the client or at the network edge.
- **"Thick" Clients with Duplicated Logic**:
  - **Mitigation**: When clients contain too much business logic, it often becomes duplicated and out-of-sync with the server. Share validation logic by packaging it in a common library or move the rules definitively to the server.
- **Peer-to-Peer Data Conflicts**:
  - **Mitigation**: In a peer-to-peer model, data conflicts are inevitable. Design formal conflict resolution strategies (e.g., CRDTs, last-write-wins) and consensus mechanisms from the beginning.
## Troubleshooting

### Common Issues

**Command not found**
Ensure all dependencies are installed and in PATH

**Permission errors**
Check file permissions and run with appropriate privileges

**Unexpected behavior**
Enable verbose logging with `--verbose` flag

Overview

This skill helps you design and document client-server systems and API architectures for traditional web and mobile applications. It focuses on clear separation of responsibilities, API contracts, version management, connectivity handling, and security. Use it to produce ADRs, formal API specs, and rollout runbooks for centralized services.

How this skill works

The skill guides you through defining client vs server responsibilities, creating formal API and protocol specifications, and planning for version skew and rollout coordination. It recommends patterns for reducing chatty calls, avoiding duplicated business logic in thick clients, and handling intermittent connectivity or optional peer-to-peer features. It also enforces security best practices such as TLS, authorization policies, rate limiting, and telemetry.

When to use it

  • Designing a web or mobile app where a central backend provides business logic and data.
  • Documenting API contracts, authentication flows, and compatibility tests before implementation.
  • Planning rollouts that require backward compatibility and client version management.
  • Adding offline-capable features that may require synchronization or occasional peer interactions.
  • Formalizing trust boundaries and deployment assumptions for security reviews.

Best practices

  • Write an ADR that states roles for clients, servers, and any peers up front.
  • Document APIs and data schemas with compatibility tests and semantic versioning policies.
  • Minimize duplicated logic: centralize validations or publish a shared client library.
  • Design for connectivity: include offline caching, sync protocols, and conflict resolution strategies if needed.
  • Reduce chatty clients by consolidating calls behind a gateway or façade and use edge caching.
  • Secure every endpoint with TLS, authZ policies, rate limits, and comprehensive telemetry.

Example use cases

  • A mobile app with an API backend needing offline sync and staged client rollouts.
  • A single-page web app that must support multiple client versions while evolving APIs.
  • An IoT fleet where devices act as thin clients and the cloud enforces business rules.
  • A hybrid app that primarily uses client-server architecture but integrates limited peer sync for local collaboration.
  • Preparing runbooks and compatibility test suites for a major API migration.

FAQ

When should I consider peer-to-peer instead?

If the system requires decentralized control, heavy local discovery, or no central authority, use a dedicated P2P paradigm instead of this client-server focus.

How do I handle many client versions in production?

Use feature flags, semantic API versioning or content negotiation (e.g., Accept headers), compatibility tests, and staged release waves to limit disruption.