Architecture

From SocialStack
Revision as of 14:00, 11 December 2024 by 2a02:c7c:c40c:2600:8c18:ea9f:289c:239d (talk) (→‎Consistency)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

SocialStack is primarily a fully open source dotnet core 6 API. By default it comes with a React frontend installed which can also be simply ignored or removed if you wish to use it headless instead.

Founding Pillars[edit | edit source]

SocialStack, like really any designed system, has foundational design pillars that it and all projects on it are built to follow.

Simplicity[edit | edit source]

First and foremost, keep it simple. SocialStack is frequently used in fast iterating projects which often also have high performance requirements too. Dozens of layers of boilerplate are precisely what we want to eliminate at all times.

Consistency[edit | edit source]

A handful of universally followed patterns help a team naturally produce compatible code, even if it is in different projects. There is nothing stating that you have to use SocialStack's automated database entities in your new code, but doing so means you get a significant amount of features for free just simply because your code is fitting in with the norm. Better yet, the SocialStack generate command will spawn a new module which is perfectly consistent with every other module in a single line:

socialstack generate Api/VehicleBrands
socialstack generate UI/Vehicle/Brand/View

Modularity[edit | edit source]

Grouping things by feature rather than some abstract functional type makes following and testing the code substantially easier. Working with something to do with Users? It's probably in a folder called Users.

Generic and reusable[edit | edit source]

Configuration such as feature flags, event based design, partial classes and avoiding project specific namespacing are all essential to how code can be easily reused between projects and within a project. Public MIT licensed reusable components are installable using the SocialStack command line tools and ultimately originate from this GitHub repository.