project directory structure
- Dominant language
- TypeScript
- Stars
- 2k
- Forks
- 807
- Avg merge
- 10h 12m
- Merged PRs (30d)
- 7
Description
We are not consistent about how we organize our files.
* Why are some utilities in `foo/utilities/`, but others in `foo/`?
* What's the difference between `src/lambda` and `src/shared`? Why is there so much lambda-specific code in `src/shared`?
* Why is `cloudformation.ts` in a separate directory?
* ✅ Why does it export a namespace, when we don't use namespaces anywhere else?
* What really belongs in `sam/cli`? Does anything belong in `sam/`?
* Where should test utilities live? i.e. should we separate `test/shared/fooUtils.test.ts` from `test/shared/fooTestUtils.ts`?
* Why is `test/` a child of `src/` instead of a sibling?
* etc.
We should design a consistent directory structure, document it in-repo, and apply it.
Contributor guide
Research direction
Start by inventorying the layouts and responsibilities of foo/utilities/, foo/, src/lambda, src/shared, cloudformation.ts, sam/cli, sam/, and the test utilities under test/shared/. Review why test/ is under src/ and compare the current arrangements before proposing a consistent structure. Done means the directory structure is applied across the repository and the conventions are documented in-repo.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- developer-experience, tooling
- Issue type
- Refactor
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 25/100