# 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