@eventcatalog/create-eventcatalog 3.0.11 → 3.0.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -22466,7 +22466,7 @@ var import_os2 = __toESM(require("os"));
22466
22466
  var package_default = {
22467
22467
  name: "@eventcatalog/create-eventcatalog",
22468
22468
  description: "Create EventCatalog with one command",
22469
- version: "3.0.11",
22469
+ version: "3.0.12",
22470
22470
  bin: {
22471
22471
  "create-catalog": "./dist/index.js"
22472
22472
  },
@@ -22582,6 +22582,9 @@ var installTemplate = async ({
22582
22582
  if (template === "openapi") {
22583
22583
  dependencies.push("@eventcatalog/generator-openapi");
22584
22584
  }
22585
+ if (template === "graphql") {
22586
+ dependencies.push("@eventcatalog/generator-graphql");
22587
+ }
22585
22588
  if (template === "confluent") {
22586
22589
  dependencies.push("@eventcatalog/generator-confluent-schema-registry");
22587
22590
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@eventcatalog/create-eventcatalog",
3
3
  "description": "Create EventCatalog with one command",
4
- "version": "3.0.11",
4
+ "version": "3.0.12",
5
5
  "bin": {
6
6
  "create-catalog": "./dist/index.js"
7
7
  },
@@ -0,0 +1,23 @@
1
+ ## Stage 1: Build the app
2
+ FROM node:lts AS build
3
+
4
+ WORKDIR /app
5
+
6
+ # Install dependencies
7
+ COPY package.json package-lock.json ./
8
+ RUN npm install
9
+
10
+ # Copy source code
11
+ COPY . .
12
+
13
+ # Fix for Astro in Docker: https://github.com/withastro/astro/issues/2596
14
+ ENV NODE_OPTIONS=--max_old_space_size=2048
15
+ # Build the app
16
+ RUN npm run build
17
+
18
+
19
+ ## Stage 2: Serve app with httpd server
20
+ FROM httpd:2.4
21
+
22
+ # Copy built app to serve
23
+ COPY --from=build /app/dist /usr/local/apache2/htdocs
@@ -0,0 +1,23 @@
1
+ # Use this Docker file if your EventCatalog output is set to `server`.
2
+ # When EventCatalog output is set to `server`, the output will be a node server.
3
+ # This server is required for certain features like the EventCatalog Chat (with your own keys).
4
+
5
+ FROM node:lts AS runtime
6
+ WORKDIR /app
7
+
8
+ # Install dependencies
9
+ COPY package.json package-lock.json ./
10
+ RUN npm install
11
+
12
+ COPY . .
13
+
14
+ # Fix for Astro in Docker: https://github.com/withastro/astro/issues/2596
15
+ ENV NODE_OPTIONS=--max_old_space_size=2048
16
+ RUN npm run build
17
+
18
+ ENV HOST=0.0.0.0
19
+ ENV PORT=3000
20
+ EXPOSE 3000
21
+
22
+ # Start the server
23
+ CMD npm run start
@@ -0,0 +1 @@
1
+ # My Event Catalog
@@ -0,0 +1,8 @@
1
+ .eventcatalog-core/
2
+ .git/
3
+ dist/
4
+ node_modules/
5
+ .gitignore
6
+ .dockerignore
7
+ Dockerfile
8
+ README.md
@@ -0,0 +1,9 @@
1
+ # EventCatalog Scale License Key, if you want to unlock the scale features
2
+ # You can get a 14 day trial license key from https://eventcatalog.cloud
3
+
4
+ EVENTCATALOG_SCALE_LICENSE_KEY=
5
+
6
+ # Optional key if you are using EventCatalog Chat with OpenAI Models.
7
+ # You need to set `output` to `server` in your eventcatalog.config.js file.
8
+ # See documentation for more details: https://www.eventcatalog.dev/features/ai-assistant
9
+ OPENAI_API_KEY=
@@ -0,0 +1,45 @@
1
+
2
+ /**
3
+ * This is an optional file that can add authentication to your EventCatalog.
4
+ *
5
+ * To enable authentication you need to set `server:output` in your `eventcatalog.config.js` file.
6
+ * And then pick which provider you want to use.
7
+ *
8
+ * You can read more in the documentation:
9
+ * https://www.eventcatalog.dev/docs/development/guides/authentication/introduction
10
+ *
11
+ */
12
+
13
+ // export default {
14
+ // debug: false,
15
+ // providers: {
16
+ // // GitHub Authentication
17
+ // github: {
18
+ // clientId: process.env.AUTH_GITHUB_CLIENT_ID,
19
+ // clientSecret: process.env.AUTH_GITHUB_CLIENT_SECRET,
20
+ // },
21
+ // // Azure AD Entra ID
22
+ // entra: {
23
+ // clientId: process.env.AUTH_MICROSOFT_ENTRA_ID_ID,
24
+ // clientSecret: process.env.AUTH_MICROSOFT_ENTRA_ID_SECRET,
25
+ // issuer: process.env.AUTH_MICROSOFT_ENTRA_ID_ISSUER,
26
+ // },
27
+ // // Google Authentication
28
+ // google: {
29
+ // clientId: process.env.AUTH_GOOGLE_ID,
30
+ // clientSecret: process.env.AUTH_GOOGLE_SECRET,
31
+ // },
32
+ // // Auth0 Authentication
33
+ // auth0: {
34
+ // clientId: process.env.AUTH_AUTH0_ID,
35
+ // clientSecret: process.env.AUTH_AUTH0_SECRET,
36
+ // issuer: process.env.AUTH_AUTH0_ISSUER,
37
+ // },
38
+ // // Okta Authentication
39
+ // okta: {
40
+ // clientId: process.env.AUTH_OKTA_CLIENT_ID,
41
+ // clientSecret: process.env.AUTH_OKTA_CLIENT_SECRET,
42
+ // issuer: process.env.AUTH_OKTA_ISSUER,
43
+ // },
44
+ // },
45
+ // }
@@ -0,0 +1,60 @@
1
+ import path from "path";
2
+ import url from "url";
3
+
4
+ const __dirname = path.dirname(url.fileURLToPath(import.meta.url));
5
+
6
+ /** @type {import('@eventcatalog/core/bin/eventcatalog.config').Config} */
7
+ export default {
8
+ title: "EventCatalog",
9
+ tagline: 'This internal platform provides a comprehensive view of our event-driven architecture across all systems. Use this portal to discover existing domains, explore services and their dependencies, and understand the message contracts that connect our infrastructure',
10
+ organizationName: '<organizationName>',
11
+ homepageLink: "https://eventcatalog.dev/",
12
+ editUrl: "https://github.com/boyney123/eventcatalog-demo/edit/master",
13
+ // Supports static or server. Static renders a static site, server renders a server side rendered site
14
+ // large catalogs may benefit from server side rendering
15
+ output: 'static',
16
+ // By default set to false, add true to get urls ending in /
17
+ trailingSlash: false,
18
+ // Change to make the base url of the site different, by default https://{website}.com/docs,
19
+ // changing to /company would be https://{website}.com/company/docs,
20
+ base: "/",
21
+ // Customize the logo, add your logo to public/ folder
22
+ logo: {
23
+ alt: "EventCatalog Logo",
24
+ src: "/logo.png",
25
+ text: "EventCatalog",
26
+ },
27
+ // This lets you copy markdown contents from EventCatalog to your clipboard
28
+ // Including schemas for your events and services
29
+ llmsTxt: {
30
+ enabled: true,
31
+ },
32
+ generators: [
33
+ [
34
+ "@eventcatalog/generator-graphql",
35
+ {
36
+ services: [
37
+ { path: path.join(__dirname, "graphql-files", "orders-service.graphql"), id: 'orders-service', owners: ['order-management'] },
38
+ ],
39
+ domain: { id: "orders", name: "Orders", version: "0.0.1" },
40
+ },
41
+ ],
42
+ [
43
+ "@eventcatalog/generator-graphql",
44
+ {
45
+ services: [
46
+ { path: path.join(__dirname, "graphql-files", "payment-service.graphql"), id: 'payment-service', owners: ['payment-management'] },
47
+ ],
48
+ domain: { id: "payment", name: "Payment", version: "0.0.1" },
49
+ },
50
+ ],
51
+ ],
52
+ // Enable RSS feed for your eventcatalog
53
+ rss: {
54
+ enabled: true,
55
+ // number of items to include in the feed per resource (event, service, etc)
56
+ limit: 20
57
+ },
58
+ // required random generated id used by eventcatalog
59
+ cId: '<cId>'
60
+ };
@@ -0,0 +1 @@
1
+ /* Custom styling support coming soon. */
@@ -0,0 +1,27 @@
1
+ # Dependencies
2
+ /node_modules
3
+
4
+ # Production
5
+ /build
6
+
7
+ # Generated files
8
+ .astro
9
+ out
10
+ dist
11
+
12
+
13
+ # Misc
14
+ .DS_Store
15
+ .env.local
16
+ .env.development.local
17
+ .env.test.local
18
+ .env.production.local
19
+
20
+ npm-debug.log*
21
+ yarn-debug.log*
22
+ yarn-error.log*
23
+
24
+ .eventcatalog-core
25
+
26
+ .env
27
+ .env-*
@@ -0,0 +1,76 @@
1
+ type Query {
2
+ """
3
+ Fetch a user by their unique ID
4
+ """
5
+ getUser(id: ID!): User
6
+ """
7
+ Retrieve all users from the system
8
+ """
9
+ getUsers: [User!]!
10
+ """
11
+ Get user profile information by user ID
12
+ """
13
+ getProfile(userId: ID!): Profile
14
+ }
15
+
16
+ type Mutation {
17
+ """
18
+ Create a new user account
19
+ """
20
+ createUser(input: CreateUserInput!): User
21
+ """
22
+ Update an existing user's information
23
+ """
24
+ updateUser(id: ID!, input: UpdateUserInput!): User
25
+ """
26
+ Delete a user from the system
27
+ """
28
+ deleteUser(id: ID!): Boolean
29
+ """
30
+ Update user profile details
31
+ """
32
+ updateProfile(userId: ID!, input: UpdateProfileInput!): Profile
33
+ }
34
+
35
+ type Subscription {
36
+ """
37
+ Subscribe to user creation events
38
+ """
39
+ userCreated: User
40
+ """
41
+ Subscribe to user update events
42
+ """
43
+ userUpdated: User
44
+ """
45
+ Triggered when a user is deleted
46
+ """
47
+ userDeleted: ID
48
+ }
49
+
50
+ type User {
51
+ id: ID!
52
+ name: String!
53
+ email: String!
54
+ profile: Profile
55
+ }
56
+
57
+ type Profile {
58
+ id: ID!
59
+ bio: String
60
+ avatar: String
61
+ }
62
+
63
+ input CreateUserInput {
64
+ name: String!
65
+ email: String!
66
+ }
67
+
68
+ input UpdateUserInput {
69
+ name: String
70
+ email: String
71
+ }
72
+
73
+ input UpdateProfileInput {
74
+ bio: String
75
+ avatar: String
76
+ }
@@ -0,0 +1,327 @@
1
+ type Query {
2
+ """
3
+ Fetch a payment by its unique ID
4
+ """
5
+ getPayment(id: ID!): Payment
6
+ """
7
+ Retrieve all payments for a specific user
8
+ """
9
+ getPaymentsByUser(userId: ID!): [Payment!]!
10
+ """
11
+ Get payment history with optional filtering
12
+ """
13
+ getPaymentHistory(
14
+ userId: ID
15
+ status: PaymentStatus
16
+ dateFrom: String
17
+ dateTo: String
18
+ limit: Int = 10
19
+ offset: Int = 0
20
+ ): PaymentConnection!
21
+ """
22
+ Fetch payment methods for a user
23
+ """
24
+ getPaymentMethods(userId: ID!): [PaymentMethod!]!
25
+ """
26
+ Get a specific payment method by ID
27
+ """
28
+ getPaymentMethod(id: ID!): PaymentMethod
29
+ """
30
+ Retrieve transaction details by ID
31
+ """
32
+ getTransaction(id: ID!): Transaction
33
+ """
34
+ Get all transactions for a payment
35
+ """
36
+ getTransactionsByPayment(paymentId: ID!): [Transaction!]!
37
+ """
38
+ Check payment status and details
39
+ """
40
+ getPaymentStatus(paymentId: ID!): PaymentStatusResponse!
41
+ }
42
+
43
+ type Mutation {
44
+ """
45
+ Process a new payment
46
+ """
47
+ processPayment(input: ProcessPaymentInput!): PaymentResult!
48
+ """
49
+ Refund a payment (full or partial)
50
+ """
51
+ refundPayment(input: RefundPaymentInput!): RefundResult!
52
+ """
53
+ Add a new payment method for a user
54
+ """
55
+ addPaymentMethod(input: AddPaymentMethodInput!): PaymentMethod!
56
+ """
57
+ Update an existing payment method
58
+ """
59
+ updatePaymentMethod(id: ID!, input: UpdatePaymentMethodInput!): PaymentMethod!
60
+ """
61
+ Remove a payment method
62
+ """
63
+ removePaymentMethod(id: ID!): Boolean!
64
+ """
65
+ Set a payment method as default
66
+ """
67
+ setDefaultPaymentMethod(userId: ID!, paymentMethodId: ID!): PaymentMethod!
68
+ """
69
+ Cancel a pending payment
70
+ """
71
+ cancelPayment(paymentId: ID!): Payment!
72
+ """
73
+ Retry a failed payment
74
+ """
75
+ retryPayment(paymentId: ID!): PaymentResult!
76
+ """
77
+ Capture an authorized payment
78
+ """
79
+ capturePayment(paymentId: ID!, amount: Float): Payment!
80
+ }
81
+
82
+ type Subscription {
83
+ """
84
+ Subscribe to payment status updates
85
+ """
86
+ paymentStatusUpdated(paymentId: ID!): Payment!
87
+ """
88
+ Subscribe to all payment events for a user
89
+ """
90
+ userPaymentEvents(userId: ID!): PaymentEvent!
91
+ """
92
+ Subscribe to transaction updates
93
+ """
94
+ transactionUpdated(transactionId: ID!): Transaction!
95
+ """
96
+ Subscribe to refund status changes
97
+ """
98
+ refundStatusUpdated(refundId: ID!): Refund!
99
+ }
100
+
101
+ type Payment {
102
+ id: ID!
103
+ userId: ID!
104
+ amount: Float!
105
+ currency: String!
106
+ status: PaymentStatus!
107
+ description: String
108
+ paymentMethod: PaymentMethod!
109
+ transactions: [Transaction!]!
110
+ refunds: [Refund!]!
111
+ metadata: PaymentMetadata
112
+ createdAt: String!
113
+ updatedAt: String!
114
+ expiresAt: String
115
+ }
116
+
117
+ type PaymentMethod {
118
+ id: ID!
119
+ userId: ID!
120
+ type: PaymentMethodType!
121
+ isDefault: Boolean!
122
+ card: CardDetails
123
+ bankAccount: BankAccountDetails
124
+ digitalWallet: DigitalWalletDetails
125
+ isActive: Boolean!
126
+ createdAt: String!
127
+ updatedAt: String!
128
+ }
129
+
130
+ type CardDetails {
131
+ last4: String!
132
+ brand: String!
133
+ expiryMonth: Int!
134
+ expiryYear: Int!
135
+ fingerprint: String!
136
+ country: String
137
+ }
138
+
139
+ type BankAccountDetails {
140
+ last4: String!
141
+ bankName: String!
142
+ accountType: String!
143
+ country: String!
144
+ }
145
+
146
+ type DigitalWalletDetails {
147
+ provider: String!
148
+ email: String
149
+ }
150
+
151
+ type Transaction {
152
+ id: ID!
153
+ paymentId: ID!
154
+ type: TransactionType!
155
+ amount: Float!
156
+ currency: String!
157
+ status: TransactionStatus!
158
+ gateway: String!
159
+ gatewayTransactionId: String
160
+ failureReason: String
161
+ createdAt: String!
162
+ updatedAt: String!
163
+ }
164
+
165
+ type Refund {
166
+ id: ID!
167
+ paymentId: ID!
168
+ amount: Float!
169
+ currency: String!
170
+ status: RefundStatus!
171
+ reason: String
172
+ createdAt: String!
173
+ updatedAt: String!
174
+ }
175
+
176
+ type PaymentConnection {
177
+ edges: [PaymentEdge!]!
178
+ pageInfo: PageInfo!
179
+ totalCount: Int!
180
+ }
181
+
182
+ type PaymentEdge {
183
+ node: Payment!
184
+ cursor: String!
185
+ }
186
+
187
+ type PageInfo {
188
+ hasNextPage: Boolean!
189
+ hasPreviousPage: Boolean!
190
+ startCursor: String
191
+ endCursor: String
192
+ }
193
+
194
+ type PaymentMetadata {
195
+ orderId: String
196
+ customerId: String
197
+ invoiceId: String
198
+ tags: [String!]
199
+ notes: String
200
+ }
201
+
202
+ type PaymentResult {
203
+ payment: Payment
204
+ success: Boolean!
205
+ error: PaymentError
206
+ requiresAction: Boolean!
207
+ actionUrl: String
208
+ }
209
+
210
+ type RefundResult {
211
+ refund: Refund
212
+ success: Boolean!
213
+ error: PaymentError
214
+ }
215
+
216
+ type PaymentStatusResponse {
217
+ payment: Payment!
218
+ canRefund: Boolean!
219
+ canCapture: Boolean!
220
+ canCancel: Boolean!
221
+ }
222
+
223
+ type PaymentEvent {
224
+ id: ID!
225
+ type: PaymentEventType!
226
+ paymentId: ID!
227
+ data: String!
228
+ createdAt: String!
229
+ }
230
+
231
+ type PaymentError {
232
+ code: String!
233
+ message: String!
234
+ details: String
235
+ }
236
+
237
+ enum PaymentStatus {
238
+ PENDING
239
+ PROCESSING
240
+ AUTHORIZED
241
+ CAPTURED
242
+ SUCCEEDED
243
+ FAILED
244
+ CANCELLED
245
+ EXPIRED
246
+ REFUNDED
247
+ PARTIALLY_REFUNDED
248
+ }
249
+
250
+ enum PaymentMethodType {
251
+ CREDIT_CARD
252
+ DEBIT_CARD
253
+ BANK_ACCOUNT
254
+ DIGITAL_WALLET
255
+ CRYPTOCURRENCY
256
+ }
257
+
258
+ enum TransactionType {
259
+ AUTHORIZATION
260
+ CAPTURE
261
+ SALE
262
+ REFUND
263
+ VOID
264
+ }
265
+
266
+ enum TransactionStatus {
267
+ PENDING
268
+ SUCCEEDED
269
+ FAILED
270
+ CANCELLED
271
+ }
272
+
273
+ enum RefundStatus {
274
+ PENDING
275
+ PROCESSING
276
+ SUCCEEDED
277
+ FAILED
278
+ CANCELLED
279
+ }
280
+
281
+ enum PaymentEventType {
282
+ PAYMENT_CREATED
283
+ PAYMENT_AUTHORIZED
284
+ PAYMENT_CAPTURED
285
+ PAYMENT_SUCCEEDED
286
+ PAYMENT_FAILED
287
+ PAYMENT_CANCELLED
288
+ REFUND_CREATED
289
+ REFUND_SUCCEEDED
290
+ REFUND_FAILED
291
+ }
292
+
293
+ input ProcessPaymentInput {
294
+ userId: ID!
295
+ amount: Float!
296
+ currency: String!
297
+ paymentMethodId: ID!
298
+ description: String
299
+ captureImmediately: Boolean = true
300
+ metadata: PaymentMetadataInput
301
+ }
302
+
303
+ input RefundPaymentInput {
304
+ paymentId: ID!
305
+ amount: Float
306
+ reason: String
307
+ }
308
+
309
+ input AddPaymentMethodInput {
310
+ userId: ID!
311
+ type: PaymentMethodType!
312
+ token: String!
313
+ setAsDefault: Boolean = false
314
+ }
315
+
316
+ input UpdatePaymentMethodInput {
317
+ isActive: Boolean
318
+ setAsDefault: Boolean
319
+ }
320
+
321
+ input PaymentMetadataInput {
322
+ orderId: String
323
+ customerId: String
324
+ invoiceId: String
325
+ tags: [String!]
326
+ notes: String
327
+ }
@@ -0,0 +1 @@
1
+ strict-peer-dependencies=false
@@ -0,0 +1,31 @@
1
+ ---
2
+ id: order-management
3
+ name: Order Management
4
+ summmary: Order Management team based in London, UK
5
+ members:
6
+ - dboyne
7
+ - asmith
8
+ - msmith
9
+ - alee
10
+ - azhang
11
+ email: test@test.com
12
+ slackDirectMessageUrl: https://yourteam.slack.com/channels/boyney123
13
+ ---
14
+
15
+ ## Overview
16
+
17
+ The Order Management team is responsible for managing orders, inventory, shipment and payment.
18
+
19
+ ## Responsibilities
20
+
21
+ - Manage orders and order processing
22
+ - Manage inventory and inventory processing
23
+ - Manage shipment and shipment processing
24
+ - Manage payment and payment processing
25
+ - Manage user and user processing
26
+
27
+ ## Key Contacts
28
+
29
+ - David Boyne
30
+ - Alice Smith
31
+ - Mike Smith
@@ -0,0 +1,18 @@
1
+ ---
2
+ id: payment-management
3
+ name: Payment Management
4
+ members:
5
+ - dboyne
6
+ - jbrown
7
+ - dkim
8
+ ---
9
+
10
+ The payment management team is responsible for managing payments and payment accounts.
11
+
12
+ ## Responsibilities
13
+
14
+ - Manage payment and payment account management
15
+ - Manage payment and payment account provisioning
16
+ - Manage payment and payment account deprovisioning
17
+ - Manage user and user account password management
18
+ - Manage user and user account role management
@@ -0,0 +1,18 @@
1
+ ---
2
+ id: product-management
3
+ name: Product Management
4
+ members:
5
+ - dboyne
6
+ - jbrown
7
+ - dkim
8
+ ---
9
+
10
+ The product management team is responsible for managing products and product accounts.
11
+
12
+ ## Responsibilities
13
+
14
+ - Manage product and product account management
15
+ - Manage product and product account provisioning
16
+ - Manage product and product account deprovisioning
17
+ - Manage product and product account password management
18
+ - Manage product and product account role management
@@ -0,0 +1,27 @@
1
+ ---
2
+ id: asmith
3
+ name: Amy Smith
4
+ avatarUrl: https://randomuser.me/api/portraits/women/48.jpg
5
+ role: Product owner
6
+ ---
7
+
8
+ Hello! I'm Amy Smith, the Product Owner of the innovative Full Stackers team. With a strong focus on delivering exceptional value, I specialize in connecting business objectives with technical solutions to create products that users love.
9
+
10
+ ### About Me
11
+
12
+ With a comprehensive background in product management and a solid understanding of software development, I bring a unique perspective to the table. My career has been driven by a passion for understanding user needs, defining clear product visions, and leading teams to successful product deliveries.
13
+
14
+ ### What I Do
15
+
16
+ As the Product Owner for Full Stackers, my role involves a wide range of responsibilities aimed at ensuring our products are both high-quality and user-centric. Key aspects of my role include:
17
+
18
+ - **Product Vision & Strategy**: Defining and communicating the long-term vision and strategy for our products, ensuring alignment with the company's objectives and market demands.
19
+ - **Roadmap Planning**: Developing and maintaining a product roadmap that highlights key features and milestones, prioritizing tasks based on their business value and user feedback.
20
+ - **Stakeholder Management**: Engaging with stakeholders across the organization to gather requirements, provide updates, and ensure everyone is aligned on the product's direction.
21
+ - **User-Centric Design**: Championing the end-users by conducting user research, analyzing feedback, and ensuring our products effectively solve their problems.
22
+ - **Agile Leadership**: Leading the development process using Agile methodologies, facilitating sprint planning, and ensuring the team has clear priorities and objectives.
23
+
24
+ My mission is to deliver products that not only meet but exceed customer expectations. I thrive on the challenge of translating complex requirements into simple, intuitive solutions.
25
+
26
+ If you’re interested in product management, user experience, or discussing the latest trends in technology, feel free to reach out!
27
+
@@ -0,0 +1,8 @@
1
+ ---
2
+ id: alee
3
+ name: Alice Lee
4
+ avatarUrl: https://randomuser.me/api/portraits/women/91.jpg
5
+ role: Technical Writer
6
+ ---
7
+
8
+ As a Technical Writer on the Documentation team, I create clear, comprehensive documentation for our products and APIs. My focus is on making complex technical concepts accessible to developers and end-users alike. I collaborate with engineering teams to ensure our documentation stays current and accurate.
@@ -0,0 +1,11 @@
1
+ ---
2
+ id: azhang
3
+ name: Alice Zhang
4
+ avatarUrl: https://randomuser.me/api/portraits/women/97.jpg
5
+ role: Data Engineer
6
+ email: azhang@company.com
7
+ slackDirectMessageUrl: https://yourteam.slack.com/channels/azhang
8
+ msTeamsDirectMessageUrl: https://teams.microsoft.com/l/chat/0/0?users=azhang@company.com
9
+ ---
10
+
11
+ Building and maintaining data pipelines and infrastructure...
@@ -0,0 +1,32 @@
1
+ ---
2
+ id: dboyne
3
+ name: David Boyne
4
+ avatarUrl: "https://pbs.twimg.com/profile_images/1262283153563140096/DYRDqKg6_400x400.png"
5
+ role: Lead developer
6
+ email: test@test.com
7
+ slackDirectMessageUrl: https://yourteam.slack.com/channels/boyney123
8
+ ---
9
+
10
+ Hello! I'm David Boyne, the Tech Lead of an amazing team called Full Stackers. With a passion for building robust and scalable systems, I specialize in designing and implementing event-driven architectures that power modern, responsive applications.
11
+
12
+ ### About Me
13
+
14
+ With over a decade of experience in the tech industry, I have honed my skills in full-stack development, cloud computing, and distributed systems. My journey has taken me through various roles, from software engineer to architect, and now as a tech lead, I am committed to driving innovation and excellence within my team.
15
+
16
+ ### What I Do
17
+
18
+ At Full Stackers, we focus on creating seamless and efficient event-driven architectures that enhance the performance and scalability of our applications. My role involves:
19
+
20
+ - **Architecture Design**: Crafting scalable and resilient system architectures using event-driven paradigms.
21
+ - **Team Leadership**: Guiding a talented team of developers, fostering a collaborative and innovative environment.
22
+ - **Code Reviews & Mentorship**: Ensuring code quality and sharing knowledge to help the team grow.
23
+ - **Stakeholder Collaboration**: Working closely with other teams and stakeholders to align our technical solutions with business goals.
24
+ - **Continuous Improvement**: Advocating for best practices in software development, deployment, and monitoring.
25
+
26
+ I am passionate about leveraging the power of events to build systems that are not only highly responsive but also easier to maintain and extend. In an ever-evolving tech landscape, I strive to stay ahead of the curve, continuously learning and adapting to new technologies and methodologies.
27
+
28
+ Feel free to connect with me to discuss all things tech, event-driven architectures, or to exchange ideas on building better software systems!
29
+
30
+ ---
31
+ *David Boyne*
32
+ *Tech Lead, Full Stackers*
@@ -0,0 +1,11 @@
1
+ ---
2
+ id: dkim
3
+ name: David Kim
4
+ avatarUrl: https://randomuser.me/api/portraits/men/96.jpg
5
+ role: Performance Engineer
6
+ email: dkim@company.com
7
+ slackDirectMessageUrl: https://yourteam.slack.com/channels/dkim
8
+ msTeamsDirectMessageUrl: https://teams.microsoft.com/l/chat/0/0?users=dkim@company.com
9
+ ---
10
+
11
+ Optimizing application performance and user experience...
@@ -0,0 +1,11 @@
1
+ ---
2
+ id: jbrown
3
+ name: Jessica Brown
4
+ avatarUrl: https://randomuser.me/api/portraits/women/95.jpg
5
+ role: UI/UX Designer
6
+ email: jbrown@company.com
7
+ slackDirectMessageUrl: https://yourteam.slack.com/channels/jbrown
8
+ msTeamsDirectMessageUrl: https://teams.microsoft.com/l/chat/0/0?users=jbrown@company.com
9
+ ---
10
+
11
+ Creating intuitive and engaging user interfaces...
@@ -0,0 +1,8 @@
1
+ ---
2
+ id: msmith
3
+ name: Martin Smith
4
+ avatarUrl: "https://randomuser.me/api/portraits/men/51.jpg"
5
+ role: Senior software engineer
6
+ ---
7
+
8
+ As a Senior Mobile Developer on The Mobile Devs team, I play a key role in designing, developing, and maintaining our company’s mobile applications. My focus is on creating a seamless and intuitive user experience for our customers on both iOS and Android platforms. I work closely with cross-functional teams, including backend developers, UX/UI designers, and product managers, to deliver high-quality mobile solutions that meet business objectives and exceed user expectations.
@@ -82,6 +82,10 @@ export const installTemplate = async ({
82
82
  dependencies.push("@eventcatalog/generator-openapi");
83
83
  }
84
84
 
85
+ if (template === "graphql") {
86
+ dependencies.push("@eventcatalog/generator-graphql");
87
+ }
88
+
85
89
  if (template === "confluent") {
86
90
  dependencies.push("@eventcatalog/generator-confluent-schema-registry");
87
91
  }
@@ -1,6 +1,6 @@
1
1
  import { PackageManager } from "../helpers/get-pkg-manager";
2
2
 
3
- export type TemplateType = "default" | "app" | "empty" | "asyncapi" | "openapi" | "confluent" | "eventbridge" | "amazon-apigateway";
3
+ export type TemplateType = "default" | "app" | "empty" | "asyncapi" | "openapi" | "confluent" | "eventbridge" | "amazon-apigateway" | "graphql";
4
4
  export type TemplateMode = "js" | "ts";
5
5
 
6
6
  export interface GetTemplateFileArgs {