-
Notifications
You must be signed in to change notification settings - Fork 0
Folder structure
Raphaël Balet edited this page Dec 6, 2023
·
26 revisions
- should become increasingly more specific as you read from left to right
- no underscores
- All lowercase
- No special characters
- Example:
home-header
Project structure
src
├── app
│ ├── pages
│ │ ├── auth
│ │ │ ├── auth-login
│ │ │ ├── auth-signup
│ │ │ ├── auth-password-request
│ │ │ └── auth-password-reset
│ │ └── [page]
│ │ ├── [page].page.html
│ │ ├── [page].page.scss
│ │ ├── [page].page.ts
│ │ ├── [page].module.ts
│ │ └── [page].[name]
│ │ ├── [page]-[name].component.html
│ │ ├── [page]-[name].component.scss
│ │ ├── [page]-[name].component.ts
│ │ ├── [page]-[name].module.ts
│ │ └── state
│ │ ├── [name].query.ts
│ │ ├── [name].service.ts
│ │ └── [name].store.ts
│ ├── configs
│ │ ├── [name].config.ts
│ │ └── global.config.ts
│ ├── core
│ │ ├── animations
│ │ │ └── global.ts
│ │ ├── interceptors
│ │ │ ├── version.interceptor.ts
│ │ │ └── auth.interceptor.ts
│ │ ├── guards
│ │ │ ├── auth.guard.ts
│ │ │ └── admin.guard.ts
│ │ ├── directives
│ │ │ └── validation.directive.ts
│ │ ├── services
│ │ │ ├── dal.service.ts
│ │ │ ├── session.service.ts
│ │ │ └── [another-api].service.ts
│ │ └── bases
│ │ │ └── base-[type].[service, query, component].ts
│ │ └── models
│ │ ├── core.enums.ts
│ │ ├── core.d.ts // interfaces
│ │ └── core.models.ts
│ │ └── core.types.ts
│ └── shared
│ ├── components
│ │ └── [name]
│ │ └── [name].component.ts
│ ├── fragments
│ │ └── [name]
│ │ └── [name].fragment.ts
│ ├── layouts
│ │ └── [name]
│ │ └── [name].layout.ts
│ ├── pipes
│ │ └── [name]
│ │ └── [name].pipe.ts
│ └── vendors
│ ├── components
│ │ └── [name].component.ts
│ ├── fragments
│ │ └── [name].fragment.ts
│ └── layouts
│ └── [name].layout.ts
├── assets
│ ├── fonts
│ ├── i18n
│ ├── icons
│ │ └── [name]-[direction]-[color].svg
│ ├── img
│ │ └── components
│ │ └── [page, fragment, component]-[name]
│ │ └── bg-desktop.jpg
│ │ └── bg-mobile.jpg
│ ├── js
│ ├── json
│ ├── pdf
│ └── video
├── environments
│ ├── environment.hmr.ts
│ ├── environment.prod.ts
│ └── environment.ts
└── styles
├── base
│ ├── _colors.scss
│ ├── _img.scss
│ ├── _reset.scss
│ └── _typography.scss
├── components
│ ├── _buttons.scss
│ └── _gallery.scss
├── themes
│ ├── _admin.scss
│ └── _theme.scss
├── utils
│ ├── _functions.scss
│ ├── _mixins.scss
│ └── _variables.scss
├── _shared.scss
└── main.scss
| folder | description |
|---|---|
| pages | Contains different pages |
- @pages | Contains components
- [page] | Page name (ex: home, about)
- [page]-[name] | Contains the component
-
- state | Contains query, service and store (from Akita) configs | Contains global logic, normally constant variables core | App core logic
- guards | For restricted routes
- store | Storing values coming from the services
- services | Getting values from an API or a Database
- bases | Intended to be extended
- models |
-
- enums | Enumeration of constant variable
-
- interfaces | Contain globally used types
-
- models | Type that has function let var = new MyModel({}) shared | Used many times by different elements
- layouts | Positioning of many components
- components | Imported directly by the pages (ex: footer)
- fragments | Smallest piece of code, shall import something else than themself
- pipes | Converting data inside fragments / components
- vendors | Third-party code assets | Contains static assets
- fonts |
- i18n | International language files how to
- icons | Contains only .svg files
Contains the code that is specific to the application and implements the Cross-Cutting Concerns of the applications.
- Should be imported only once, usually into the
app.module.ts - Services are usually provideIn: root
Contains the code that could potentially be reused across the app
Remove the one you aren't using
"baseUrl": "./src",
"paths": {
"@auth/*": ["app/pages/auth/*"],
"@pages/*": ["app/pages/*"],
"@configs/*": ["app/configs/*"],
"@bases/*": ["app/core/bases/*"],
"@guards/*": ["app/core/guards/*"],
"@store/*": ["app/core/store/*"],
"@models/*": ["app/core/models/*"],
"@services/*": ["app/core/services/*"],
"@fragments/*": ["app/shared/fragments/*"],
"@layouts/*": ["app/shared/layouts/*"],
"@modals/*": ["app/shared/components/modals/*"],
"@components/*": ["app/shared/components/*"],
"@pipes/*": ["app/shared/pipes/*"],
"@vendors/*": ["app/shared/vendors/*"],
"@shared/*": ["app/shared/*"],
"@app/*": ["app/*"],
}