@@ -44,4 +44,95 @@ Shared utilities and logging are abstracted into `libs/` for reusability across
4444
4545## Project Structure
4646
47- notifylog/ ├── apps/ │ ├── notifylog-api/ # NestJS microservice (GraphQL + Notification logic) │ │ ├── src/ │ │ │ ├── application/ │ │ │ │ ├── factories/ │ │ │ │ │ ├── notification.factory.ts │ │ │ │ ├── strategies/ │ │ │ │ │ ├── email-notification.strategy.ts │ │ │ │ │ ├── sms-notification.strategy.ts │ │ │ ├── domain/ │ │ │ │ ├── interfaces/ │ │ │ │ │ ├── notification-repository.interface.ts │ │ │ │ │ ├── webhook-repository.interface.ts │ │ │ ├── infrastructure/ │ │ │ │ ├── repositories/ │ │ │ │ │ ├── notification.repository.ts │ │ │ │ │ ├── webhook.repository.ts │ │ │ ├── presentation/ │ │ │ │ ├── resolvers/ │ │ │ │ │ ├── notification.resolver.ts │ │ │ │ │ ├── webhook.resolver.ts │ │ │ │ │ ├── log.resolver.ts │ │ │ ├── dto/ │ │ │ │ ├── notification.dto.ts │ │ │ ├── services/ │ │ │ │ ├── log.service.ts │ │ │ ├── app.module.ts │ │ │ ├── main.ts │ │ ├── package.json │ │ ├── tsconfig.json │ │ ├── .env.example │ └── notifylog-ui/ # Next.js frontend dashboard │ ├── src/ │ │ ├── app/ │ │ │ ├── page.tsx │ │ │ ├── notifications/ │ │ │ │ ├── page.tsx │ │ │ ├── errors/ │ │ │ │ ├── page.tsx │ │ │ ├── layout.tsx │ │ │ ├── globals.css │ │ ├── components/ │ │ │ ├── Header.tsx │ │ │ ├── NotificationTable.tsx │ │ │ ├── ErrorTable.tsx │ │ ├── lib/ │ │ │ ├── api.ts │ │ │ ├── types.ts │ ├── public/ │ ├── package.json │ ├── tsconfig.json │ ├── next.config.js ├── libs/ │ ├── logger/ # Winston logger (MongoDB transport) │ │ ├── src/ │ │ │ ├── interfaces/ │ │ │ │ ├── log-repository.interface.ts │ │ │ ├── persistence/ │ │ │ │ ├── logger.schema.ts │ │ │ ├── repositories/ │ │ │ │ ├── log.repository.ts │ │ │ ├── services/ │ │ │ │ ├── logger.service.file.ts │ │ │ │ ├── logger.service.db.ts │ │ ├── package.json │ │ ├── tsconfig.json │ └── utils/ # Shared helpers, interceptors, constants │ ├── src/ │ │ ├── helpers/ │ │ │ ├── string.utils.ts │ │ │ ├── validation.utils.ts │ │ ├── interceptors/ │ │ │ ├── logging.interceptor.ts │ │ ├── constants/ │ │ │ ├── app.constants.ts │ ├── package.json │ ├── tsconfig.json ├── prisma/ # Prisma ORM config & schema │ ├── schema.prisma │ ├── migrations/ ├── docker/ # Docker & Docker Compose files │ ├── Dockerfile.api │ ├── Dockerfile.ui │ ├── docker-compose.yml ├── .github/ # Issue templates & GitHub Actions │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.md │ │ ├── feature_request.md │ ├── workflows/ │ │ ├── ci.yml ├── README.md ├── CONTRIBUTING.md ├── CODE_OF_CONDUCT.md ├── LICENSE
47+ notifylog/
48+ ├── apps/ # Monorepo applications
49+ │ ├── notifylog-api/ # NestJS microservice (GraphQL + Notification logic)
50+ │ │ ├── src/
51+ │ │ │ ├── application/ # Business logic
52+ │ │ │ │ ├── factories/
53+ │ │ │ │ │ └── notification.factory.ts
54+ │ │ │ │ └── strategies/
55+ │ │ │ │ ├── email-notification.strategy.ts
56+ │ │ │ │ └── sms-notification.strategy.ts
57+ │ │ │ ├── domain/ # Core entities/interfaces
58+ │ │ │ │ └── interfaces/
59+ │ │ │ │ ├── notification-repository.interface.ts
60+ │ │ │ │ └── webhook-repository.interface.ts
61+ │ │ │ ├── infrastructure/ # DB adapters
62+ │ │ │ │ └── repositories/
63+ │ │ │ │ ├── notification.repository.ts
64+ │ │ │ │ └── webhook.repository.ts
65+ │ │ │ ├── presentation/ # GraphQL resolvers
66+ │ │ │ │ └── resolvers/
67+ │ │ │ │ ├── notification.resolver.ts
68+ │ │ │ │ ├── webhook.resolver.ts
69+ │ │ │ │ └── log.resolver.ts
70+ │ │ │ ├── dto/ # Data transfer objects
71+ │ │ │ │ └── notification.dto.ts
72+ │ │ │ ├── services/ # Core services
73+ │ │ │ │ └── log.service.ts
74+ │ │ │ ├── app.module.ts
75+ │ │ │ └── main.ts
76+ │ │ ├── package.json
77+ │ │ ├── tsconfig.json
78+ │ │ └── .env.example
79+ │ └── notifylog-ui/ # Next.js frontend dashboard
80+ │ ├── src/
81+ │ │ ├── app/
82+ │ │ │ ├── page.tsx
83+ │ │ │ ├── notifications/
84+ │ │ │ │ └── page.tsx
85+ │ │ │ ├── errors/
86+ │ │ │ │ └── page.tsx
87+ │ │ │ ├── layout.tsx
88+ │ │ │ └── globals.css
89+ │ │ ├── components/ # UI components
90+ │ │ │ ├── Header.tsx
91+ │ │ │ ├── NotificationTable.tsx
92+ │ │ │ └── ErrorTable.tsx
93+ │ │ └── lib/
94+ │ │ ├── api.ts # API integration layer
95+ │ │ └── types.ts # Shared types
96+ │ ├── public/ # Static assets
97+ │ ├── package.json
98+ │ └── next.config.js
99+ ├── libs/ # Shared libraries
100+ │ ├── logger/ # Winston logger (MongoDB transport)
101+ │ │ ├── src/
102+ │ │ │ ├── interfaces/
103+ │ │ │ │ └── log-repository.interface.ts
104+ │ │ │ ├── persistence/
105+ │ │ │ │ └── logger.schema.ts
106+ │ │ │ ├── repositories/
107+ │ │ │ │ └── log.repository.ts
108+ │ │ │ └── services/
109+ │ │ │ ├── logger.service.file.ts
110+ │ │ │ └── logger.service.db.ts
111+ │ │ ├── package.json
112+ │ │ └── tsconfig.json
113+ │ └── utils/ # Shared utilities
114+ │ ├── src/
115+ │ │ ├── helpers/
116+ │ │ │ ├── string.utils.ts
117+ │ │ │ └── validation.utils.ts
118+ │ │ ├── interceptors/
119+ │ │ │ └── logging.interceptor.ts
120+ │ │ └── constants/
121+ │ │ └── app.constants.ts
122+ │ ├── package.json
123+ │ └── tsconfig.json
124+ ├── prisma/ # Database layer
125+ │ ├── schema.prisma # Prisma schema
126+ │ └── migrations/ # DB migration history
127+ ├── docker/ # Containerization
128+ │ ├── Dockerfile.api
129+ │ ├── Dockerfile.ui
130+ │ └── docker-compose.yml
131+ ├── .github/ # GitHub configurations
132+ │ ├── ISSUE_TEMPLATE/ # Issue templates
133+ │ └── workflows/
134+ │ └── ci.yml # CI pipeline
135+ ├── README.md
136+ ├── CONTRIBUTING.md
137+ ├── CODE_OF_CONDUCT.md
138+ └── LICENSE
0 commit comments