ludwig-g-w Chaincred .cursorrules file for TypeScript (stars: 1)

# INSTRUCTIONS
- BUILD IN A TDD FASHION -> WRITE THE TESTS FIRST -> THEN WRITE THE CODE
- THIS IS A FULL STACK APP which means that we can leverage Node.js within the ./app/api folder

# TECK STACK
- EXPO.IO, to build the app
- EXPO ROUTER with Server Actions and API routes
- NATIVEWIND, styling native with TailwindCSS
- PRISMA ORM, to handle database operations
- tRPC, to handle API requests
- TYPESCRIPT 
- THIRDWEB SDK (thirdweb.com)
- BUN, to run the app

# TESTING
- JEST, to run tests
- REACT NATIVE TESTING LIBRARY, to run tests
- MAESTRO E2E, to run tests

# CODING STYLE
- FUNCTIONAL PROGRAMMING
- READABILITY OVER CONCISE
- KISS PRINCIPLE
- COMMENT AT TOP OF FILE EXPLAINING WHAT THE FILE IS FOR
- USE TYPESCRIPT TO THE MAX
#CURRENT FILE STRUCTURE
tree -I 'node_modules|scripts|migrations|generated|demo.gif|e2e|assets|api|build|.git|.cxx|.gitignore |ios|android|.*' -a -L 4
├── app
│   ├── (tabs)
│   │   ├── (chat)
│   │   │   ├── Chat.tsx
│   │   │   └── _layout.tsx
│   │   ├── (discover)
│   │   │   ├── _layout.tsx
│   │   │   ├── discoverList.tsx
│   │   │   └── discoverMap.tsx
│   │   ├── (home)
│   │   │   ├── _layout.tsx
│   │   │   └── homeIndex.tsx
│   │   ├── (settings)
│   │   │   ├── _layout.tsx
│   │   │   ├── settings.tsx
│   │   │   └── settingsProfile.tsx
│   │   ├── _layout.tsx
│   │   └── scanAddress.tsx
│   ├── _layout.tsx
│   ├── gettingStarted.tsx
│   ├── index.tsx
│   ├── profiles
│   │   └── [address].tsx
│   ├── wrongAccount.tsx
│   └── wsegue.tsx
├── app.json
├── babel.config.js
├── bun.lockb
├── codegen.ts
├── codegen.yml
├── components.json
├── compose.yaml
├── dockerfile
├── eas.json
├── entrypoint.sh
├── env.d.ts
├── expo-env.d.ts
├── global.css
├── graphql.schema.json
├── index.js
├── lib
│   ├── components
│   │   ├── AttestationItem.tsx
│   │   ├── ConnectButtonThirdweb.tsx
│   │   ├── ErrorBoudary.tsx
│   │   ├── GetStartedCard.tsx
│   │   ├── InputWithButton.tsx
│   │   ├── MainButton.tsx
│   │   ├── MapView.tsx
│   │   ├── MySegmentedControl.tsx
│   │   ├── ProfileListItem.tsx
│   │   ├── Rating.tsx
│   │   ├── ReviewListItem.tsx
│   │   ├── SuspenseFallback.tsx
│   │   ├── Toast.tsx
│   │   ├── WebNotImplemented.tsx
│   │   ├── connect-modal-v5
│   │   │   ├── ConnectWithPhoneNumber.tsx
│   │   │   ├── ConnectWithSocial.tsx
│   │   │   ├── Connected.tsx
│   │   │   ├── ExternalWallets.tsx
│   │   │   └── index.tsx
│   │   ├── nativeWindInterop.tsx
│   │   ├── primitives
│   │   │   ├── label
│   │   │   ├── slot.tsx
│   │   │   ├── switch
│   │   │   └── types.ts
│   │   └── ui
│   │       ├── avatar.tsx
│   │       ├── button.tsx
│   │       ├── card.tsx
│   │       ├── input.tsx
│   │       ├── label.tsx
│   │       ├── switch.tsx
│   │       ├── text.tsx
│   │       ├── textarea.tsx
│   │       ├── tooltip.tsx
│   │       └── typography.tsx
│   ├── constants.ts
│   ├── graphql
│   │   ├── client.ts
│   │   └── index.graphql
│   ├── screens
│   │   ├── coinbase-redirect
│   │   │   ├── CoinbaseRedirect.tsx
│   │   │   └── CoinbaseRedirect.web.tsx
│   │   ├── discover-layout
│   │   │   ├── DiscoverLayout.tsx
│   │   │   └── DiscoverLayout.web.tsx
│   │   ├── discover-list
│   │   │   ├── DiscoverList.tsx
│   │   │   └── DiscoverList.web.tsx
│   │   ├── discover-map
│   │   │   ├── DiscoverMap.tsx
│   │   │   └── DiscoverMap.web.tsx
│   │   ├── getting-started
│   │   │   ├── GettingStarted.tsx
│   │   │   └── GettingStarted.web.tsx
│   │   ├── home-index
│   │   │   ├── HomeIndex.tsx
│   │   │   └── HomeIndex.web.tsx
│   │   ├── home-layout
│   │   │   ├── HomeLayout.tsx
│   │   │   └── HomeLayout.web.tsx
│   │   ├── index-layout
│   │   │   ├── Header.tsx
│   │   │   ├── IndexLayout.tsx
│   │   │   ├── IndexLayout.web.tsx
│   │   │   ├── ThirdwebProvider.tsx
│   │   │   └── useRedirectAuth.tsx
│   │   ├── login
│   │   │   ├── Login.tsx
│   │   │   └── Login.web.tsx
│   │   ├── profile
│   │   │   ├── Profile.tsx
│   │   │   └── Profile.web.tsx
│   │   ├── scan-address
│   │   │   ├── ScanAddress.tsx
│   │   │   └── ScanAddress.web.tsx
│   │   ├── settings-layout
│   │   │   ├── SettingsLayout.tsx
│   │   │   ├── SettingsLayout.web.tsx
│   │   │   ├── profile
│   │   │   └── settings
│   │   ├── tabs-layout
│   │   │   ├── LayoutTabs.tsx
│   │   │   └── LayoutTabs.web.tsx
│   │   └── wrong-account
│   │       ├── WrongAccount.tsx
│   │       └── WrongAccount.web.tsx
│   ├── services
│   │   ├── db
│   │   │   ├── dev.db
│   │   │   ├── functions.ts
│   │   │   ├── importCSV.js
│   │   │   ├── prismaClient.ts
│   │   │   ├── profiles_rows.csv
│   │   │   └── schema.prisma
│   │   ├── storage.client.ts
│   │   ├── supabase.ts
│   │   ├── thirdwebAuth.ts
│   │   └── thirdwebClient.ts
│   ├── trpc-server
│   │   ├── context.ts
│   │   ├── routers
│   │   │   ├── _app.ts
│   │   │   └── zod.ts
│   │   └── trpc.ts
│   ├── useColorScheme.tsx
│   └── utils
│       ├── attestations.ts
│       ├── constants.tsx
│       ├── eas.tsx
│       ├── hooks.tsx
│       ├── index.ts
│       ├── tRPCProvider.tsx
│       ├── trpc.ts
│       ├── types.tsx
│       └── uploading.ts
├── metro.config.js
├── nativewind-env.d.ts
├── package.json
├── roadmap.md
├── server.js
├── tailwind.config.js
├── tsconfig.json



bun
css
docker
graphql
javascript
jest
prisma
react
+6 more

First Time Repository

Review & Loyality Mobile App using Blockchain EAS(Ethereum Attestation Service) as source of truth

TypeScript

Languages:

CSS: 1.6KB
JavaScript: 6.0KB
Ruby: 2.6KB
Shell: 6.6KB
TypeScript: 257.5KB
Created: 12/22/2023
Updated: 1/22/2025

All Repositories (1)

Review & Loyality Mobile App using Blockchain EAS(Ethereum Attestation Service) as source of truth