Figma parity inventory

Every designed RareAS surface is now route-tracked.

This strict TypeScript surface reviews the current figma app, maps each designed feature to its Astro, TanStack, Keycloak, or global-overlay runtime, and records the backend contract that exists today.

38
Designed surfaces
37
GraphQL-first surfaces
15
Astro public routes
21
Tracked gap files
39%
Public route share
1
Staff-only surfaces

Feature implementation matrix

Showing 38 of 38 designed surfaces.

Achievements & XP
XP, badges, achievement catalog, progress
AuthenticatedGraphQLTanStack app route/app/achievementsCurrent runtime is a pre-rendered Astro /app route hydrated by the TanStack router; access is gated by Keycloak OIDC storage and the Django GraphQL me query. No dedicated achievement resolver is exposed in the current feature schema.Add GraphQL achievement definitions, user achievement grants, and seasonal rotation metadata before live claims.
Add To Collection
Barcode, photo, shelf, import, manual, voice flows
AuthenticatedGraphQL + REST boundaryTanStack app route/app/collection/addCurrent runtime is a pre-rendered Astro /app route hydrated by the TanStack router; access is gated by Keycloak OIDC storage and the Django GraphQL me query. Current feature schema exposes scanSessions, scan candidates, and contribution mutations; binary upload is not GraphQL.GraphQL scan/session/contribution mutations; REST remains reserved for binary media upload.
Admin Panel
Users, catalog, moderation, marketplace, messaging, mobile, analytics, security, settings
StaffGraphQL + REST boundaryTanStack app route/app/adminCurrent runtime is a pre-rendered Astro /app route hydrated by the TanStack router; access is gated by Keycloak OIDC storage and the Django GraphQL me query. Staff-only route guard is local frontend plus GraphQL me.isStaff; current feature schema exposes adminAuditEvents.Keep the staff route guard and add RBAC-scoped GraphQL admin operations per module.
AI Shelf Scan
Image upload, confidence candidates, review/confirm workflow
AuthenticatedGraphQL + REST boundaryTanStack app route/app/scans/aiCurrent runtime is a pre-rendered Astro /app route hydrated by the TanStack router; access is gated by Keycloak OIDC storage and the Django GraphQL me query. Current feature schema exposes scanSessions and scan candidates; media upload should stay REST.REST for image upload; GraphQL for scan session, candidates, and resolution.
Authentication
Sign in, sign up, forgot password
PublicREST boundaryKeycloak route/auth/sign-inCurrent auth boundary is Keycloak OIDC at /auth/sign-in, /auth/callback, /auth/sign-out, and /auth/silent-renew; Django validates Bearer tokens with KeycloakAuthentication. Local JWT token endpoints only exist when ENABLE_LOCAL_JWT_AUTH=true.Keep OIDC/Keycloak as the auth boundary; frontend handles redirects, callback state, and session storage.
Barcode Scanner
Camera/USB/paste/CSV modes, candidate disambiguation, contribution fallback
AuthenticatedGraphQLTanStack app route/app/scans/barcodeCurrent runtime is a pre-rendered Astro /app route hydrated by the TanStack router; access is gated by Keycloak OIDC storage and the Django GraphQL me query. Current catalog schema can search by UPC and the feature schema exposes scan sessions.Use GraphQL barcode resolver and unresolved-scan contribution workflow.
Brand Hub
Microsoft/Xbox family hub, product lines, signals
PublicGraphQLAstro route/brands/microsoftCurrent Django GraphQL catalog fields include allItems, searchItems, allCategories, allCompanies, myCollection, and collection mutations at /api/graphql when ENABLE_GRAPHQL=true. Brand slug routes are static today; backend company lookup needs slug parity.Bind to company slug, product families, editorial collections, and catalog counts.
Brands Directory
Featured brands, trending brands, A-Z index
PublicGraphQLAstro route/brandsCurrent Django GraphQL catalog fields include allItems, searchItems, allCategories, allCompanies, myCollection, and collection mutations at /api/graphql when ENABLE_GRAPHQL=true. Company data exists through allCompanies/company nodes; product-family slices remain frontend fixtures.Keep brand browsing as SEO Astro pages while replacing showcase fixtures with company/product family data.
Catalog Database
Browse grid/list, advanced filters, sort, ownership tags
PublicGraphQLAstro route/databaseCurrent Django GraphQL catalog fields include allItems, searchItems, allCategories, allCompanies, myCollection, and collection mutations at /api/graphql when ENABLE_GRAPHQL=true.Strict TanStack Query/Table route uses typed filters and should keep mapping to Django catalog connections.
Categories Beyond Games
Games, movies, music, TCG, toys, memorabilia, sports, comics, watches, coins, stamps
PublicGraphQLAstro route/categoriesCurrent Django GraphQL catalog fields include allItems, searchItems, allCategories, allCompanies, myCollection, and collection mutations at /api/graphql when ENABLE_GRAPHQL=true. Category data exists through allCategories/category nodes; category profile copy remains fixture-backed.Use category profiles, category attributes, rarity rules, and landing-page slices from backend data.
Collection
Stats, grid/list, filters, bulk selection, share card, import, trash
AuthenticatedGraphQLTanStack app route/app/collectionCurrent runtime is a pre-rendered Astro /app route hydrated by the TanStack router; access is gated by Keycloak OIDC storage and the Django GraphQL me query. Current catalog schema exposes myCollection, allCollectionItems, collectionGroups, and collectionCopies.Replace remaining local collection fixtures with owner-filtered GraphQL collection copies and groups.
Collection To Feed
Post-on-add, bulk auto-drafts, review queue, anti-spam
AuthenticatedGraphQLTanStack app route/app/feed/draftsCurrent runtime is a pre-rendered Astro /app route hydrated by the TanStack router; access is gated by Keycloak OIDC storage and the Django GraphQL me query. Current feedPosts exist, but a dedicated draft queue contract is not exposed yet.Add GraphQL draft creation and moderation state before public publishing automation.
Compare & Analytics
Collection comparisons, overlap, mirrored bars, analytics snapshots
AuthenticatedGraphQLTanStack app route/app/compareCurrent runtime is a pre-rendered Astro /app route hydrated by the TanStack router; access is gated by Keycloak OIDC storage and the Django GraphQL me query. Current feature schema exposes analyticsSnapshots; collection comparison UI is still fixture-first.Back with analytics snapshot and collection compare queries.
Connections
Followers, following, groups, mute, block, restrict
AuthenticatedGraphQLTanStack app route/app/connectionsCurrent runtime is a pre-rendered Astro /app route hydrated by the TanStack router; access is gated by Keycloak OIDC storage and the Django GraphQL me query. Current feature schema exposes following, myBlocks, follow, and block operations.GraphQL social graph mutations plus privacy/block enforcement.
Contributions & Moderation
Contribution form, trust tier, moderation queue, diff viewer, appeals
AuthenticatedGraphQLTanStack app route/app/contributeCurrent runtime is a pre-rendered Astro /app route hydrated by the TanStack router; access is gated by Keycloak OIDC storage and the Django GraphQL me query. Current feature schema exposes catalogContributions and contribution mutations.GraphQL contribution submission and staff moderation operations.
Developer API
API reference, keys, OAuth, usage, webhooks, deprecations
PublicGraphQLAstro route/developersCurrent Django GraphQL feature fields live behind /api/graphql when ENABLE_GRAPHQL=true and are authorized by Keycloak bearer tokens plus the me viewer query. Current feature schema exposes developerClients, persistedGraphqlOperations, and webhookSubscriptions.GraphQL developer clients, persisted operations, usage logs, and webhook subscriptions.
GameScan & Connected Stores
Store connectors, unified library, sync sessions, admin/mobile panels
PublicGraphQL + REST boundaryAstro route/gamescanCurrent GameScan runtime boundary is REST: /api/v1/me/profile/, /api/v1/gamescan/sync/, and /api/v1/gamescan/sessions/. Public /gamescan is an Astro route.Keep existing GameScan REST sync boundary; use GraphQL only for future library, sessions, and dashboards when implemented.
Global Command Palette
Cmd-K sections, recent actions, saved searches, quick add
AuthenticatedGraphQLGlobal overlayglobal overlayCurrent Django GraphQL feature fields live behind /api/graphql when ENABLE_GRAPHQL=true and are authorized by Keycloak bearer tokens plus the me viewer query. Current relevant fields include savedSearches and catalog search; there is no standalone URL route.Keep it mounted in AppChrome; add GraphQL search/action providers without inventing a static page.
Grading & Authentication
Cert lookup, slabs, population, submit-to-grading, authenticity alerts
AuthenticatedGraphQL + REST boundaryTanStack app route/app/gradingCurrent runtime is a pre-rendered Astro /app route hydrated by the TanStack router; access is gated by Keycloak OIDC storage and the Django GraphQL me query. Current feature schema exposes gradingRecords; external cert callbacks/webhooks stay REST.GraphQL grading records and cert metadata; REST only for external webhook/callback boundaries.
Home
Hero, rarity ladder, trending grails, scan CTAs
PublicGraphQLAstro route/Current Django GraphQL catalog fields include allItems, searchItems, allCategories, allCompanies, myCollection, and collection mutations at /api/graphql when ENABLE_GRAPHQL=true. Public home still falls back to strict fixtures when optional GraphQL fails.Keep home route public and SEO-safe; hydrate trending, grails, and rarity bands from backend queries when available.
Item Detail
Gallery, rarity score, family strip, reviews, price intelligence, owner social proof
PublicGraphQLAstro route/items/stadium-eventsCurrent Django GraphQL catalog fields include allItems, searchItems, allCategories, allCompanies, myCollection, and collection mutations at /api/graphql when ENABLE_GRAPHQL=true. Item pages are static Astro slugs today and still need slug-backed live lookup parity.Replace fixture lookup with slug query, item variants, rarity explanation, reviews, and contribution tabs.
Leaderboards
Podium, ranks table, board filters, rival, opt-out
PublicGraphQLAstro route/leaderboardsCurrent Django repo has a leaderboards app, but no public REST route is exposed in rareas_backend/urls.py; this Astro page is fixture-backed today.Use GraphQL or a real public endpoint for leaderboard windows and user opt-out state before claiming live ranks.
Localization & Currency
Locale, currency, FX, translation status, legal copy
AuthenticatedGraphQLTanStack app route/app/localizationCurrent runtime is a pre-rendered Astro /app route hydrated by the TanStack router; access is gated by Keycloak OIDC storage and the Django GraphQL me query. Current feature schema exposes currencyRates and privacy preference locale/currency fields.GraphQL currency rates, user preferences, regional releases, and translated catalog fields.
Marketplace
Wishlist on sale, last-minute auctions, target deltas, recommendations, affiliate disclosure
AuthenticatedGraphQLTanStack app route/app/marketplaceCurrent runtime is a pre-rendered Astro /app route hydrated by the TanStack router; access is gated by Keycloak OIDC storage and the Django GraphQL me query. Current feature schema exposes marketplaceListings and latestMarketSummary.GraphQL lanes should be personalized and filtered by user wishlist and trust signals.
Messages
Direct messages, group conversations, reports, abuse controls
AuthenticatedGraphQLTanStack app route/app/messagesCurrent runtime is a pre-rendered Astro /app route hydrated by the TanStack router; access is gated by Keycloak OIDC storage and the Django GraphQL me query. Current feature schema exposes conversations and messages; subscriptions can follow later.GraphQL conversation/message operations remain the current contract; real-time subscriptions can follow later.
Mobile App Companion
Native app preview, scan tab, offline sync, push, deep links
Mobile companionGraphQL + REST boundaryAstro route/mobileCurrent web route is public Astro documentation. Native app APIs should use the same Keycloak, GraphQL, GameScan REST, and upload boundaries as the web app.Frontend documents mobile parity; native apps use GraphQL sync plus REST upload/update boundaries.
Notifications
Notification center, unread state, channels, preferences
AuthenticatedGraphQLGlobal overlayglobal overlayCurrent Django GraphQL feature fields live behind /api/graphql when ENABLE_GRAPHQL=true and are authorized by Keycloak bearer tokens plus the me viewer query. Current feature schema exposes notifications and notification mutations; there is no standalone URL route.Keep mounted in chrome; use notification list/preference queries and mark-read mutation.
Onboarding
Profile setup, collecting interests, first three owned items
AuthenticatedGraphQLTanStack app route/app/onboardingCurrent runtime is a pre-rendered Astro /app route hydrated by the TanStack router; access is gated by Keycloak OIDC storage and the Django GraphQL me query.Use TanStack Form and GraphQL mutations for profile, privacy defaults, and seed collection items.
Pricing & Tiers
Free/Pro/Creator plans, feature matrix, FAQs, checkout prompts
PublicGraphQL + REST boundaryAstro route/pricingCurrent Django GraphQL feature fields live behind /api/graphql when ENABLE_GRAPHQL=true and are authorized by Keycloak bearer tokens plus the me viewer query. Current feature schema exposes entitlementPlans and myEntitlements; payment provider callbacks are not GraphQL.GraphQL plan/entitlement read model; payment provider callbacks stay REST.
Profile
Public profile, stats, collection previews, activity, badges
AuthenticatedGraphQLTanStack app route/app/profileCurrent runtime is a pre-rendered Astro /app route hydrated by the TanStack router; access is gated by Keycloak OIDC storage and the Django GraphQL me query. Current profile authorization fields include publicProfilePermissions and privacyPreferences.Enforce privacy matrix and route-level user handle support.
Rarity Scoring
Rarity calculator, scale showcase, why-this-score drawer
PublicGraphQLAstro route/items/stadium-eventsCurrent Django GraphQL feature fields live behind /api/graphql when ENABLE_GRAPHQL=true and are authorized by Keycloak bearer tokens plus the me viewer query. Current feature schema exposes rarityProfile and rarity workflow mutations.Use rarity profile, history, confidence, and explainability fields from GraphQL.
Reviews, Discussion, Q&A
Reviews, helpful votes, threaded comments, questions, reports
PublicGraphQLAstro route/items/stadium-eventsCurrent Django GraphQL feature fields live behind /api/graphql when ENABLE_GRAPHQL=true and are authorized by Keycloak bearer tokens plus the me viewer query. Current feature schema exposes reviews and review mutations; discussion and Q&A remain separate future slices.Item tabs should fetch reviews/discussion with object authorization and moderation state.
Search Results
Catalog/users/collection/wishlist/reviews/discussion tabs
PublicGraphQLAstro route/searchCurrent Django GraphQL catalog fields include allItems, searchItems, allCategories, allCompanies, myCollection, and collection mutations at /api/graphql when ENABLE_GRAPHQL=true. Current backend search is searchItems; people, reviews, and discussion tabs are not runtime-backed yet.Wire tabs to typed GraphQL search queries and persisted operation rules as each backend slice exists.
Settings, Privacy, Security
Privacy, 2FA, sessions, notifications, billing, export, deletion
AuthenticatedGraphQL + REST boundaryTanStack app route/app/settingsCurrent runtime is a pre-rendered Astro /app route hydrated by the TanStack router; access is gated by Keycloak OIDC storage and the Django GraphQL me query. Preferences are GraphQL; OIDC session and security controls remain Keycloak boundaries.GraphQL for preferences; REST/OIDC boundaries for session and security provider redirects.
Social Feed
Activity feed, post cards, composer, reactions, comments
AuthenticatedGraphQLTanStack app route/app/feedCurrent runtime is a pre-rendered Astro /app route hydrated by the TanStack router; access is gated by Keycloak OIDC storage and the Django GraphQL me query. Current feature schema exposes feedPosts, reviews, follows, and feed post mutations.Use feed posts, reactions, comments, reports, and privacy-aware actor fields.
Valuation & Insurance
Valuation snapshot, insurance packet, report order, claim builder, verify URL
AuthenticatedGraphQL + REST boundaryTanStack app route/app/valuationCurrent runtime is a pre-rendered Astro /app route hydrated by the TanStack router; access is gated by Keycloak OIDC storage and the Django GraphQL me query. Current feature schema exposes valuationReports and valuation workflow mutations; binary/PDF exports stay REST.GraphQL valuation reports and jobs; REST for PDF/binary export downloads.
Variants & Families
Product family tree, variant comparison, prototype/retail/region filters
PublicGraphQLAstro route/database/original-xbox/variantsCurrent Django GraphQL feature fields live behind /api/graphql when ENABLE_GRAPHQL=true and are authorized by Keycloak bearer tokens plus the me viewer query. Relevant current fields include catalogVariants and itemIdentifiers.Back static variant fixtures with catalog variant and regional release GraphQL queries.
Wishlist & Price Targets
Targets, alert toggles, marketplace lane, check prices drawer, bulk actions
AuthenticatedGraphQLTanStack app route/app/wishlistCurrent runtime is a pre-rendered Astro /app route hydrated by the TanStack router; access is gated by Keycloak OIDC storage and the Django GraphQL me query. Current feature schema exposes wishlistTargets, marketplaceListings, and priceObservations.Wire target, marketplace, price observation, and alert preference flows to GraphQL.

Frontend gap tracker

These rows are keyed to the 21 numbered files inFeatures/FrontendGapAnalysisand keep Figma, routes, GraphQL operations, hooks, and tests connected.

Gap fileWorkstreamStatusRoutesGraphQL operationsFrontend hooksTests
Design system and tokens
01-design-system-and-tokens.md
Design systemRoute foundation
/features
No direct GraphQL operation; token and visual-system parity only
No hook; shared theme CSS and rarityBrand constants
apps/web/tests/e2e/public-routes.spec.ts
Homepage
02-homepage.md
DiscoveryFixture-first
/
RareAsHomeallItemssearchItems
useHomeData
apps/web/tests/e2e/public-routes.spec.ts
Auth and onboarding
03-auth-and-onboarding.md
Auth/accessIn progress
/auth/sign-in/app/onboarding
memyTwoFactorStateonboarding/profile mutations needed
auth.ts OIDC helpersuseSettingsAccount for session-adjacent account state; onboarding mutation hook missing
apps/web/tests/e2e/live-keycloak-login.spec.ts
Catalog and database
04-catalog-and-database.md
DiscoveryLive GraphQL
/database/categories/brands/brands/microsoft
RareAsCatalogallItemssearchItemsallCategoriesallCompanies
useCatalog
apps/web/tests/e2e/public-routes.spec.ts
Item detail
05-item-detail.md
DiscoveryFixture-first
/items/stadium-events/database/original-xbox/variants
RareAsItemDetailRareAsItemDetailLookupreviewsrarityProfilemarketplaceListings
useItemDetailusePublicItemReviews
apps/web/tests/e2e/public-routes.spec.ts
Collection management
06-collection-management.md
CollectorIn progress
/app/collection/app/collection/add/app/compare
RareAsCollectionmyCollectioncollectionGroupsaddToCollectionupdateCollectionItem+1
useCollectionuseAddToCollectionMutationuseUpdateCollectionItemMutationuseRemoveFromCollectionMutation
apps/web/tests/e2e/app-chrome-parity.spec.ts
Wishlist and prices
07-wishlist-and-prices.md
CollectorIn progress
/app/wishlist/app/marketplace
RareAsWishlistmyCollection WISHLIST/WANT_TO_BUY statuseswishlistTargetsmarketplaceListingspriceObservations+1
useWishlistuseUpsertWishlistTargetMutationuseUpsertWishlistTargetBusinessMutation
apps/web/tests/e2e/app-chrome-parity.spec.ts
Search and command palette
08-search-and-command-palette.md
DiscoveryIn progress
/search/app/search
RareAsSearchsearchItemssearchCatalogBusiness neededcommandPaletteBusiness neededsavedSearches needed
useSearch
apps/web/tests/e2e/public-routes.spec.ts
Social feed
09-social-feed.md
CommunityFixture-first
/app/feed/app/feed/drafts
RareAsFeedPostsRareAsFeedCommentscreateFeedPostBusinesscreateFeedCommentBusinesssetFeedReactionBusiness
useFeedPostsuseFeedCommentsuseCreateFeedPostMutationuseCreateFeedCommentMutationuseSetFeedReactionMutation
apps/web/tests/e2e/app-chrome-parity.spec.ts
Reviews and discussion
10-reviews-and-discussion.md
CommunityFixture-first
/items/stadium-events
RareAsReviewsupsertItemReviewBusinesssetHelpfulVoteBusinessreportContentBusiness
useReviewsusePublicItemReviewsuseUpsertItemReviewMutationuseSetHelpfulVoteMutation
apps/web/tests/e2e/public-routes.spec.ts
Profile and following
11-profile-and-following.md
CommunityFixture-first
/app/profile/app/connections
RareAsFollowingpublicProfilePermissionsmyBlocksfollowUserBusinessunfollowUserBusiness
useFollowinguseSettingsAccountuseFollowUserMutationuseUnfollowUserMutation; profile/privacy hooks missing
apps/web/tests/e2e/app-chrome-parity.spec.ts
Leaderboards and achievements
12-leaderboards-and-achievements.md
CommunityFixture-first
/leaderboards/app/achievements
leaderboardSummary neededmyAchievements needed
No hook yet; leaderboard and achievement pages are fixture-backed
apps/web/tests/e2e/public-routes.spec.tsapps/web/tests/e2e/app-chrome-parity.spec.ts
Notifications and messaging
13-notifications-and-messaging.md
CommunityFixture-first
/app/messages
RareAsNotificationsRareAsConversationsRareAsConversationMessagesmarkNotificationReadcreateMessageBusiness+1
useNotificationsuseConversationsuseConversationMessagesuseMarkNotificationReadMutationuseCreateMessageMutation+1
apps/web/tests/e2e/app-chrome-parity.spec.ts
Settings and pricing
14-settings-and-pricing.md
Auth/accessIn progress
/app/settings/pricing
RareAsPlatformRevenueGapprivacyPreferences needednotificationPreferencesentitlementPlansmyEntitlements+1
useSettingsAccountusePlatformRevenueGapuseUpsertNotificationPreferenceMutation; profile/privacy/billing hooks missing
apps/web/tests/e2e/app-chrome-parity.spec.tsapps/web/tests/e2e/public-routes.spec.ts
Contributions and moderation
15-contributions-and-moderation.md
ModerationIn progress
/contribute/app/contribute/app/admin
CatalogContributionsModerationReportsLegalReviewQueueItemssubmitCatalogContributionBusinessreviewCatalogContributionBusiness
useCatalogContributionsuseModerationReportsuseReviewQueueItemsuseSubmitCatalogContributionMutationuseReviewCatalogContributionMutation
apps/web/tests/e2e/contribute-parity.spec.ts
AI scan and capture
16-ai-scan-and-capture.md
Scan/mobileFixture-first
/app/scans/ai/app/scans/barcode/app/collection/add
ScanSessionsScanProviderJobscreateScanSessionresolveScanSessionresolveBarcodeScanBusiness
useScanSessionsuseScanProviderJobsuseResolveScanSessionMutationuseResolveBarcodeScanMutation
apps/web/tests/e2e/app-chrome-parity.spec.ts
Navigation and app shell
17-navigation-and-app-shell.md
Auth/accessIn progress
//app/collection/app/profile/app/admin
me viewer query for gated nav; no page-specific operation
auth.ts viewer refreshcanAccessAppPageAppChrome state; useNavigationAccess hook not created
apps/web/tests/e2e/app-chrome-parity.spec.tsapps/web/tests/e2e/public-routes.spec.ts
Marketplace and valuation
18-marketplace-and-valuation.md
RevenueFixture-first
/app/marketplace/app/valuation
RareAsPlatformRevenueGapRareAsLatestMarketSummarymarketplaceListingsvaluationReportsgenerateValuationReport+1
usePlatformRevenueGapuseLatestMarketSummaryuseGenerateValuationReportMutationuseRecordPriceObservationMutation
apps/web/tests/e2e/app-chrome-parity.spec.ts
Developer portal and API
19-developer-portal-and-api.md
PlatformFixture-first
/developers
RareAsPlatformRevenueGapRareAsDeveloperApiKeysdeveloperClientspersistedGraphqlOperationswebhookSubscriptions+2
usePlatformRevenueGapuseDeveloperApiKeysuseUpsertDeveloperClientMutationuseRegisterPersistedGraphqlOperationMutationuseIssueDeveloperApiKeyMutation+2
apps/web/tests/e2e/public-routes.spec.ts
Mobile and GameScan
20-mobile-and-gamescan.md
Scan/mobileFixture-first
/mobile/gamescan
GameScan REST /api/v1/gamescan/profile/GameScan REST /api/v1/gamescan/sessions/GameScan REST /api/v1/gamescan/sync/future gamescanLibraryBusiness GraphQL
useGameScanProfileuseGameScanSessionsuseGameScanSync
apps/web/tests/e2e/public-routes.spec.ts
API layer and data
21-api-layer-and-data.md
API/dataIn progress
/features
runFeatureQueryrunFeatureMutationcodegen schema.graphqlmeallItems+3
graphqlRequestrunFeatureQueryrunFeatureMutationfeature hooks in apps/web/src/app/api
pnpm --filter @rareas/web validate:graphqlpnpm --filter @rareas/web typecheck