A commonly used, agreed on structure is:
src/
├── app/
│ ├── core/
│ │ ├── config/
│ │ │ └── menu.ts
│ │ ├── services/
│ │ │ ├── api.service.ts
│ │ │ ├── core.service.ts # Auth & user management
│ │ │ └── menu.service.ts
│ │ ├── guards/
│ │ │ ├── auth.guard.ts # Protects authenticated routes
│ │ │ └── guest.guard.ts # Protects public routes
│ │ └── interceptors/
│ │ └── http.interceptor.ts # e. g. JWT injection
│ ├── shared/
│ │ ├── components/
│ │ │ └── app-nav-menu/
│ │ ├── directives/
│ │ └── pipes/
│ ├── layout/
│ │ └── main-layout/ # Sidebar + router-outlet
│ ├── features/
│ │ ├── auth/ # Default auth module (GuestGuard)
│ │ └── dashboard/ # Default dashboard module (AuthGuard)
│ ├── app.ts
│ ├── app.config.ts # HttpClient + interceptor configured
│ └── app.routes.ts # Lazy-loaded routes
└── environments/
├── environment.ts # Development config
└── environment.prod.ts # Production config