@@ -46,7 +46,7 @@ npm install
4646This project uses:
4747
4848- [ Zod] ( https://zod.dev/ ) to define and validate the structure of form submissions.
49- - [ pdfkit] ( https://pdfkit.org/ ) to generate pdfs from html templates.
49+ - [ pdfkit] ( https://pdfkit.org/ ) to generate PDFs from html templates.
5050
5151### Install Zod
5252
@@ -56,7 +56,7 @@ npm install zod pdfkit
5656
5757### Define a schema for form submissions
5858
59- Create a file at ` src/forms/ form/schema.ts` :
59+ Create a file at ` form/schema.ts ` :
6060
6161``` ts title:src/forms/form/schema.ts
6262import { z } from ' zod'
@@ -76,7 +76,7 @@ This schema ensures that any incoming submission contains a valid name, a 1–5
7676
7777Create and configure the cloud resources your backend will use, such as storage buckets, queues, and key-value stores.
7878
79- ` ` ` ts title : src / resources /resources .ts
79+ ` ` ` ts title : resources /resources .ts
8080import { bucket , kv , topic } from ' @nitric/sdk'
8181
8282export const output = bucket (' receipts' ).allow (' read' , ' write' )
@@ -89,10 +89,10 @@ export const receipts = topic('form-submitted')
8989
9090Create an API route that validates and stores form submissions, then triggers further processing.
9191
92- ``` ts title:src/ services/forms.ts
92+ ``` ts title:services/forms.ts
9393import { api } from ' @nitric/sdk'
9494import { submissions , submitted } from ' ../resources/resources'
95- import { SubmissionSchema } from ' .../forms /form/schema'
95+ import { SubmissionSchema } from ' ../form/schema'
9696
9797const formApi = api (' forms' )
9898
@@ -118,9 +118,9 @@ formApi.post('/forms/:formId', async (ctx) => {
118118
119119Listen for submitted events and generate a formatted PDF receipt from the stored data.
120120
121- ``` ts title:src/ services/pdfs.ts
121+ ``` ts title:services/pdfs.ts
122122import { receipts , submissions , output } from ' ../resources/resources'
123- import { buildReceipt } from ' ../forms/ form/receipt'
123+ import { buildReceipt } from ' ../form/receipt'
124124
125125receipts .subscribe (async (ctx ) => {
126126 const { id } = ctx .req .json ()
@@ -144,7 +144,7 @@ receipts.subscribe(async (ctx) => {
144144
145145### Build the PDF Receipt
146146
147- ``` ts title:src/forms/ form/receipt.ts
147+ ``` ts title:form/receipt.ts
148148import PDFDocument from ' pdfkit'
149149import { Submission } from ' ./schema'
150150
@@ -198,7 +198,7 @@ This PDF output is fairly plain, you can enhance it further using layout templat
198198
199199Simulate or perform delivery of the receipt (e.g. via email or other downstream systems).
200200
201- ``` ts title:src/ services/deliver.ts
201+ ``` ts title:services/deliver.ts
202202import { receipts } from ' ../resources/resources'
203203
204204receipts .subscribe (async (ctx ) => {
@@ -213,7 +213,7 @@ receipts.subscribe(async (ctx) => {
213213
214214Create an endpoint that returns a download URL for the generated receipt file.
215215
216- ``` ts title:src/apis /receipts.ts
216+ ``` ts title:services /receipts.ts
217217import { api } from ' @nitric/sdk'
218218import { output } from ' ../resources/resources'
219219
0 commit comments