Difference between revisions of "Architecture"

From SocialStack
Line 1: Line 1:
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.
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.


The structure of all parts of a SocialStack project is designed to be highly modular - all of the core features and functionality are in small, replaceable modules which originate from [https://github.com/socialstack-core/modules this GitHub repository].
= Founding Pillars =


Creating projects, which primarily just installs a default package of modules, as well as installing or uninstalling modules, is handled by [https://www.npmjs.com/package/socialstack SocialStack tools] - an open source command line toolset written in javascript which is typically the best place to start when working with SocialStack.
SocialStack, like really any designed system, has foundational design pillars that it and all projects on it are built to follow.
 
== Simplicity ==
 
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 ==
 
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.
 
== Modularity ==
 
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 ==
 
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 [https://www.npmjs.com/package/socialstack SocialStack command line tools] and ultimately originate from [https://github.com/socialstack-core/modules this GitHub repository].

Revision as of 13:57, 11 December 2024

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

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

Simplicity

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

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.

Modularity

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

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.