The premier gallery experience for your NFTs.
- Architecture Overview — monorepo structure, build system, auth, GraphQL/Relay, feature flags, CI/CD
- Known Issues & Technical Debt — consolidated TODOs and known bugs
- Third-Party Dependencies — external services, API keys, and subscriptions
At Gallery, we use a monorepo tool called moon.
Every time you want to run a task in our repo, it will follow the format moon {command-here}.
Before moving forward with this README, please install moon using these instructions
You'll notice there are different apps and packages in the repo, each with its own moon.yml file. The files list the relevant moon commands to run for each target. If you're unsure about which command to run to boot a specific app or package, refer to the associated moon.yml.`
Install our node version:
nvm install && nvm useInstall correct yarn version (3.4.1):
yarn set version 3.4.1Install dependencies:
yarn installCreate a local .env file by copying values from .env.sample:
cp apps/web/.env.sample apps/web/.envStart app:
moon run web:devThe app will be running at http://localhost:3000.
See apps/mobile/README.md for the full guide. Quick start:
# Requires Xcode 16.4 — download from https://developer.apple.com/download/all/?q=Xcode%2016.4
DEVELOPER_DIR="/path/to/Xcode-16.4.app/Contents/Developer" moon run mobile:ios# Android
moon run mobile:android/packages/shared contains shared code that can be utilized by both web and mobile. When developing here, you'll need to run codegen specific to that package, such as moon run shared:codegen-watch. In other words, just having the web or mobile app running won't automatically handle codegen for shared – that will need to be a separate process.
Cypress CI is configured as a Github workflow in .github/workflows.
If you need access to any of the following:
- Test wallet
- Analytics keys
- Sentry keys
- Cypress dashboard
Hit up a member of the core team.
Feature flags are defined in two places:
- Static flags in
packages/shared/src/utils/featureFlags.ts-- used in pre-auth contexts (login screens, onboarding routing) where no RelayqueryRefis available. - Relay-based flags in
apps/web/src/utils/graphql/isFeatureEnabled.tsxandapps/mobile/src/utils/isFeatureEnabled.tsx-- used in authenticated contexts with ADMIN role overrides.
| Flag | Default | Description |
|---|---|---|
SHOW_SOCIAL_CONNECTIONS |
false |
Controls X/Farcaster/Lens connection UI, Farcaster auth, and social pills on profiles |
Admins (ADMIN role) see all features regardless of flag values.
moon run web:testfor testsmoon run web:relay-codegento run relay compilermoon run web:relay-watchto run relay compiler in watch modemoon run web:lintfor lintingmoon run web:typecheckfor checking type validitymoon run web:synpress-runto run e2e testsmoon run web:synpress-opento open cypressyarn fetch-schemato pull graphql schema from productionyarn fetch-schema-devto pull graphql schema from development