This is the frontend monorepo for MeowFans, built with Next.js, TypeScript, and Turborepo.
- Framework: Next.js 15 (App Router), React 19
- Language: TypeScript
- Styling: Tailwind CSS, Radix UI (via shared UI package)
- State Management: Zustand
- Data Fetching: Apollo Client (GraphQL)
- Monorepo Tooling: Turborepo, PNPM Workspaces
- Validation: Zod
- Icons: Lucide React, Tabler Icons
This project uses a monorepo structure organized as follows:
client: The main user-facing application.admin: The administrative dashboard.creator: The creator portal and tools.auth: Authentication flow application.
ui(@workspace/ui): Shared UI library containing reusable components based on Radix UI.gql(@workspace/gql): Shared GraphQL configuration, Apollo Client setup, and generated types.eslint-config(@workspace/eslint-config): Shared ESLint configurations.typescript-config(@workspace/typescript-config): Sharedtsconfig.jsonbases.
-
Clone the repository:
git clone <repository-url> cd meowfans-client
-
Install dependencies:
pnpm install
To start the development server for all applications simultaneously:
pnpm dev
# or
turbo run devTo run a specific application:
pnpm dev:client # Starts the Client app
pnpm dev:admin # Starts the Admin app
pnpm dev:creator # Starts the Creator app
pnpm dev:auth # Starts the Auth appTo build all applications and packages:
pnpm buildTo build a specific application:
pnpm build:clientTo run linting across the workspace:
pnpm lintTo format code with Prettier: Be aware of this as this will format the gql generated file which might cause error
pnpm formatCheck the .env.example files in each application directory for required environment variables. You typically need to set standard Next.js and Apollo Client variables (e.g., API endpoints).
- Make sure you have the latest dependencies (
pnpm i). - Create a branch for your feature or fix.
- Ensure linting passes (
pnpm lint). - Commit your changes and push to the repository.