Repository vs Client-Server Architecture – Key Differences

Architecturedesign-patterns

I'm currently in a university course that requires students to work in groups on a semester-long project. In my group's case, we've been tasked with making a location-tracking system. There are two primary components to the system: the backend (which houses the datastore, exposes endpoints, et cetera), and the mobile app our users interact with. Users who've enabled tracking via the client app will have their location pinged to the server at a regular interval. Each user is also able to view the position of tracked users near their current location.

To me, this scenario seems to lend itself to the client-server architecture. One of my groupmates, however, felt that it "is most similar to the repository style architecture." Am I missing something? On a somewhat related note, does the repository architecture differ from what's discussed in this video: https://www.youtube.com/watch?v=rtXpYpZdOzM? If not, can't the repository pattern and client-server architecture exist in tandem?

Here are a couple of slides from the course, for reference:

repositories

client-server

Best Answer

Indeed your instinct is correct. These two concepts, Repositories and Client-Server, are two wildly different concepts and abstractions. They are completely orthogonal to each other. They can both exist within the same application. Indeed a client-server system might even have two Repositories, one in the client and one in the server.

Repository feels more like an OOP design pattern to me now, and not a system architecture like client-server.

Related Topic