From 16e750e5dc42908566de01e8c3c23ea7863ebff5 Mon Sep 17 00:00:00 2001 From: Wes Risenmay Date: Thu, 14 May 2026 11:32:52 -0600 Subject: [PATCH 1/3] docs: added an ADR for folder structure --- .../0004FolderStructure.md | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 architectureDecisionRecords/0004FolderStructure.md diff --git a/architectureDecisionRecords/0004FolderStructure.md b/architectureDecisionRecords/0004FolderStructure.md new file mode 100644 index 0000000000..0eca42593a --- /dev/null +++ b/architectureDecisionRecords/0004FolderStructure.md @@ -0,0 +1,48 @@ +# Title + +Folder structure + +## Date proposed + +05-14-2026 + +## Context + +With our current repository structure we have the following cons: + +1. You must understand the language and framework to be able to find things +1. You must dig through multiple folders to be able to get a grasp of what a single domain does +1. It isn't obvious what works together without looking through code + +## Decision + +We will follow screaming architecture. Our folder structure will look something like the following: + +``` +src/ +├── Institutions/ +│ ├── Institution/ +│ │ ├── api.ts +│ │ └── Institution.tsx +│ ├── api.ts +│ └── Institutions.tsx +├── Member/ +│ ├── api.ts +│ └── Member.tsx +└── shared/ + ├── Member/ + │ ├── api.ts + │ ├── consts.ts + │ └── utils.ts + └── Validation/ + ├── date.ts + └── required.ts +``` + +All folders underneath src and shared are domains. Things don't go into the shared folder until they are actually shared. They stay in their domain underneath src until then. + +## Consequences + +1. It will be easier to find things +1. It will be easier to understand how related things work together +1. Our folders will have a clear structure to be followed From 44927e5dd297e2d051d866361795d7d43926a44a Mon Sep 17 00:00:00 2001 From: Wes Risenmay Date: Thu, 14 May 2026 11:39:38 -0600 Subject: [PATCH 2/3] flesh out more folder details --- .../0004FolderStructure.md | 26 ++++++++++++++----- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/architectureDecisionRecords/0004FolderStructure.md b/architectureDecisionRecords/0004FolderStructure.md index 0eca42593a..da75306a4d 100644 --- a/architectureDecisionRecords/0004FolderStructure.md +++ b/architectureDecisionRecords/0004FolderStructure.md @@ -22,21 +22,33 @@ We will follow screaming architecture. Our folder structure will look something src/ ├── Institutions/ │ ├── Institution/ +│ │ ├── api.test.ts │ │ ├── api.ts +│ │ ├── api.test.ts │ │ └── Institution.tsx +│ ├── api.test.ts │ ├── api.ts +│ ├── Institutions.test.ts │ └── Institutions.tsx ├── Member/ +│ ├── api.test.ts │ ├── api.ts +│ ├── Member.test.ts │ └── Member.tsx └── shared/ - ├── Member/ - │ ├── api.ts - │ ├── consts.ts - │ └── utils.ts - └── Validation/ - ├── date.ts - └── required.ts +│ ├── Member/ +│ │ ├── api.test.ts +│ │ ├── api.ts +│ │ ├── consts.ts +│ │ ├── utils.test.ts +│ │ └── utils.ts +│ └── Validation/ +│ ├── date.test.ts +│ ├── date.ts +│ ├── required.ts +│ └── required.ts +├── vite.config.ts +└── App.tsx ``` All folders underneath src and shared are domains. Things don't go into the shared folder until they are actually shared. They stay in their domain underneath src until then. From 8197ca6622bb1c355a217ba5182852c0577fbe6a Mon Sep 17 00:00:00 2001 From: Wes Risenmay Date: Thu, 14 May 2026 11:41:09 -0600 Subject: [PATCH 3/3] improve the language --- architectureDecisionRecords/0004FolderStructure.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/architectureDecisionRecords/0004FolderStructure.md b/architectureDecisionRecords/0004FolderStructure.md index da75306a4d..2ea57b1f7e 100644 --- a/architectureDecisionRecords/0004FolderStructure.md +++ b/architectureDecisionRecords/0004FolderStructure.md @@ -51,7 +51,7 @@ src/ └── App.tsx ``` -All folders underneath src and shared are domains. Things don't go into the shared folder until they are actually shared. They stay in their domain underneath src until then. +All folders underneath src and shared are domains. Things stay in their domain underneath src until they are actually shared, then they can move to the shared folder. Files that are used together stay in close proximity. ## Consequences