From 97829a48a253f63c7dd117dd12f208bb61ea342b Mon Sep 17 00:00:00 2001 From: eric-kitagawa Date: Tue, 10 Mar 2026 14:20:02 -0400 Subject: [PATCH 1/3] chore: update openapi spec --- backend/docs/swagger.yaml | 85 +++++++++++++++---------------- backend/internal/models/guests.go | 4 +- clients/shared/src/index.ts | 2 +- 3 files changed, 44 insertions(+), 47 deletions(-) diff --git a/backend/docs/swagger.yaml b/backend/docs/swagger.yaml index f2477ed0..cf1f4bc3 100644 --- a/backend/docs/swagger.yaml +++ b/backend/docs/swagger.yaml @@ -3,7 +3,7 @@ definitions: CreateGuest: properties: first_name: - example: John + example: Jane type: string last_name: example: Doe @@ -17,9 +17,6 @@ definitions: type: object CreateUser: properties: - clerk_id: - example: user_123 - type: string department: example: Housekeeping type: string @@ -29,6 +26,9 @@ definitions: first_name: example: John type: string + id: + example: user_123 + type: string last_name: example: Doe type: string @@ -69,7 +69,7 @@ definitions: example: "2024-01-02T00:00:00Z" type: string first_name: - example: John + example: Jane type: string id: example: 530e8400-e458-41d4-a716-446655440000 @@ -219,7 +219,7 @@ definitions: UpdateGuest: properties: first_name: - example: John + example: Jane type: string last_name: example: Doe @@ -233,9 +233,6 @@ definitions: type: object User: properties: - clerk_id: - example: user_123 - type: string created_at: example: "2024-01-01T00:00:00Z" type: string @@ -249,7 +246,7 @@ definitions: example: John type: string id: - example: 550e8400-e29b-41d4-a716-446655440000 + example: user_123 type: string last_name: example: Doe @@ -401,6 +398,40 @@ paths: summary: Updates a guest tags: - guests + /api/v1/hotels: + post: + consumes: + - application/json + description: Create a new hotel with the given data + parameters: + - description: Hotel data + in: body + name: hotel + required: true + schema: + $ref: '#/definitions/Hotel' + produces: + - application/json + responses: + "201": + description: Created + schema: + $ref: '#/definitions/Hotel' + "400": + description: Bad Request + schema: + additionalProperties: + type: string + type: object + "500": + description: Internal Server Error + schema: + additionalProperties: + type: string + type: object + summary: Create hotel + tags: + - hotels /api/v1/hotels/{id}: get: description: Retrieve a hotel's details using its UUID @@ -499,40 +530,6 @@ paths: summary: Get personalized hello message tags: - hello - /hotel: - post: - consumes: - - application/json - description: Create a new hotel with the given data - parameters: - - description: Hotel data - in: body - name: hotel - required: true - schema: - $ref: '#/definitions/Hotel' - produces: - - application/json - responses: - "201": - description: Created - schema: - $ref: '#/definitions/Hotel' - "400": - description: Bad Request - schema: - additionalProperties: - type: string - type: object - "500": - description: Internal Server Error - schema: - additionalProperties: - type: string - type: object - summary: Create hotel - tags: - - hotels /request: post: consumes: diff --git a/backend/internal/models/guests.go b/backend/internal/models/guests.go index 6feca2ee..a97d51f6 100644 --- a/backend/internal/models/guests.go +++ b/backend/internal/models/guests.go @@ -7,14 +7,14 @@ type CreateGuest struct { LastName string `json:"last_name" validate:"notblank" example:"Doe"` ProfilePicture *string `json:"profile_picture,omitempty" validate:"omitempty,url" example:"https://example.com/john.jpg"` Timezone *string `json:"timezone,omitempty" validate:"omitempty,timezone" example:"America/New_York"` -} +}//@name CreateGuest type UpdateGuest struct { FirstName string `json:"first_name" validate:"notblank" example:"Jane"` LastName string `json:"last_name" validate:"notblank" example:"Doe"` ProfilePicture *string `json:"profile_picture,omitempty" validate:"omitempty,url" example:"https://example.com/john.jpg"` Timezone *string `json:"timezone,omitempty" validate:"omitempty,timezone" example:"America/New_York"` -} +}//@name UpdateGuest type Guest struct { ID string `json:"id" example:"530e8400-e458-41d4-a716-446655440000"` diff --git a/clients/shared/src/index.ts b/clients/shared/src/index.ts index 9cd67763..0b4f3c26 100644 --- a/clients/shared/src/index.ts +++ b/clients/shared/src/index.ts @@ -37,7 +37,7 @@ export { } from "./api/generated/endpoints/users/users"; export { - usePostHotel, + usePostApiV1Hotels, useGetApiV1HotelsId, } from "./api/generated/endpoints/hotels/hotels"; From 8eedf571ba654f207e93e4f279673e2094ada444 Mon Sep 17 00:00:00 2001 From: eric-kitagawa Date: Tue, 10 Mar 2026 17:26:39 -0400 Subject: [PATCH 2/3] pageshell component --- .../web/src/components/SideBarWithContent.tsx | 2 +- clients/web/src/components/ui/PageShell.tsx | 53 +++++++++++++++++++ clients/web/src/routes/_protected/rooms.tsx | 30 +++++++++-- 3 files changed, 80 insertions(+), 5 deletions(-) create mode 100644 clients/web/src/components/ui/PageShell.tsx diff --git a/clients/web/src/components/SideBarWithContent.tsx b/clients/web/src/components/SideBarWithContent.tsx index 0db40d82..cf2d1fe0 100644 --- a/clients/web/src/components/SideBarWithContent.tsx +++ b/clients/web/src/components/SideBarWithContent.tsx @@ -5,7 +5,7 @@ export function SideBarWithContent() { return (
-
+
diff --git a/clients/web/src/components/ui/PageShell.tsx b/clients/web/src/components/ui/PageShell.tsx new file mode 100644 index 00000000..4d9c2ac0 --- /dev/null +++ b/clients/web/src/components/ui/PageShell.tsx @@ -0,0 +1,53 @@ +import type { ReactNode } from "react"; +import { cn } from "@/lib/utils"; + +type PageShellProps = { + header: ReactNode; + drawer?: ReactNode; + drawerOpen?: boolean; + children: ReactNode; +}; + +export function PageShell({ + header, + drawer, + drawerOpen = false, + children, +}: PageShellProps) { + const hasDrawer = !!drawer; + + return ( +
+
+
+ {header} +
+ +
+
+ {children} +
+
+
+ + {hasDrawer && ( + + )} +
+ ); +} diff --git a/clients/web/src/routes/_protected/rooms.tsx b/clients/web/src/routes/_protected/rooms.tsx index 7bc07e17..75481947 100644 --- a/clients/web/src/routes/_protected/rooms.tsx +++ b/clients/web/src/routes/_protected/rooms.tsx @@ -1,14 +1,36 @@ import { createFileRoute } from '@tanstack/react-router' -import { GuestPageShell } from '@/components/guests/GuestPageShell' +import { PageShell } from '@/components/ui/PageShell' +import { useState } from 'react'; export const Route = createFileRoute('/_protected/rooms')({ component: RoomsPage, }) function RoomsPage() { + const [open, setOpen] = useState(false); return ( - -

Rooms page WIP...

-
+ + Rooms + + + } + drawerOpen={open} + drawer={ +
+

Drawer content

+
+ } + > +
+

Main content goes here.

+
+
) } From 9a00b201e088de14058c19bd269e79cb4d141c98 Mon Sep 17 00:00:00 2001 From: eric-kitagawa Date: Tue, 10 Mar 2026 18:29:43 -0400 Subject: [PATCH 3/3] lint --- clients/web/src/components/ui/PageShell.tsx | 30 ++++++++++----------- clients/web/src/routes/_protected/rooms.tsx | 4 +-- 2 files changed, 16 insertions(+), 18 deletions(-) diff --git a/clients/web/src/components/ui/PageShell.tsx b/clients/web/src/components/ui/PageShell.tsx index 4d9c2ac0..773d68f4 100644 --- a/clients/web/src/components/ui/PageShell.tsx +++ b/clients/web/src/components/ui/PageShell.tsx @@ -1,12 +1,12 @@ -import type { ReactNode } from "react"; -import { cn } from "@/lib/utils"; +import type { ReactNode } from 'react' +import { cn } from '@/lib/utils' type PageShellProps = { - header: ReactNode; - drawer?: ReactNode; - drawerOpen?: boolean; - children: ReactNode; -}; + header: ReactNode + drawer?: ReactNode + drawerOpen?: boolean + children: ReactNode +} export function PageShell({ header, @@ -14,14 +14,14 @@ export function PageShell({ drawerOpen = false, children, }: PageShellProps) { - const hasDrawer = !!drawer; + const hasDrawer = !!drawer return (
@@ -38,16 +38,14 @@ export function PageShell({ {hasDrawer && ( )}
- ); + ) } diff --git a/clients/web/src/routes/_protected/rooms.tsx b/clients/web/src/routes/_protected/rooms.tsx index 75481947..eb589b9f 100644 --- a/clients/web/src/routes/_protected/rooms.tsx +++ b/clients/web/src/routes/_protected/rooms.tsx @@ -1,13 +1,13 @@ import { createFileRoute } from '@tanstack/react-router' +import { useState } from 'react' import { PageShell } from '@/components/ui/PageShell' -import { useState } from 'react'; export const Route = createFileRoute('/_protected/rooms')({ component: RoomsPage, }) function RoomsPage() { - const [open, setOpen] = useState(false); + const [open, setOpen] = useState(false) return (