https://github.com/mohsin-shaikh/modern-monorepo
Next 15, React 19, Supabase, tRPC, Shadcn UI, Resend, Trigger.dev, etc...
https://github.com/mohsin-shaikh/modern-monorepo
next15 pnpm react19 resend shadcn-ui supabase trigger-dev trpc
Last synced: 3 months ago
JSON representation
Next 15, React 19, Supabase, tRPC, Shadcn UI, Resend, Trigger.dev, etc...
- Host: GitHub
- URL: https://github.com/mohsin-shaikh/modern-monorepo
- Owner: mohsin-shaikh
- License: agpl-3.0
- Created: 2025-04-04T06:44:09.000Z (6 months ago)
- Default Branch: main
- Last Pushed: 2025-05-24T06:59:09.000Z (4 months ago)
- Last Synced: 2025-05-24T07:38:30.740Z (4 months ago)
- Topics: next15, pnpm, react19, resend, shadcn-ui, supabase, trigger-dev, trpc
- Language: TypeScript
- Homepage: https://app.zuupee.com
- Size: 4.27 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Security: SECURITY.md
Awesome Lists containing this project
README
# modern-monorepo
## About Zuupee
A modern monorepo featuring a Next.js dashboard with Supabase authentication and a local Supabase development environment.
## Features
**Team Management**: Create and manage multiple teams with role-based access control, invitation system, and customizable team settings for enhanced collaboration.
**Authentication**: Robust security with Supabase-powered authentication, including MFA, email verification, and protected routes for secure access.
**Modern Stack**: Built with Next.js, TypeScript, tRPC, and Supabase, featuring Shadcn UI components and Tailwind CSS for a modern development experience.
**Infrastructure**: Powered by Vercel deployment, Supabase backend, Trigger.dev for background jobs, and Resend for transactional emails.## Get started
We are working on the documentation to get started with Zuupee for local development: https://docs.zuupee.com
## App Architecture
- Monorepo
- Pnpm
- React
- TypeScript
- Nextjs
- Supabase
- Shadcn- TailwindCSS
- tRPC### Hosting
- Supabase (database, storage, realtime, auth)
- Vercel (Website, edge-config, and metrics)### Services
- Trigger.dev (background jobs)
- Resend (Transactional & Marketing)- Github Actions (CI/CD)
- Polar (Payment processing)
## Project Structure
### Apps
- **Dashboard**: Next.js application with Supabase authentication
- **API**: Local Supabase instance for development### Packages
- **ui**: Shared UI components using shadcn/ui
- **supabase**: Supabase client and utilities
- **logger**: Shared logging utilities
- **eslint-config**: Shared ESLint configuration
- **typescript-config**: Shared TypeScript configuration## Getting Started
### Prerequisites
- Node.js
- pnpm
- Docker (for local Supabase)### Initial Setup
1. Install dependencies:
```bash
pnpm install
```2. Set up environment variables:
```bash
# Required environment variables for auth
NEXT_PUBLIC_SUPABASE_URL=
NEXT_PUBLIC_SUPABASE_ANON_KEY=
```## Development
### Dashboard App
The dashboard app includes a complete authentication system powered by Supabase Auth with the following features:
- Sign In
- Sign Up
- Password Reset
- Email Verification
- Protected Routes
- Session Management### Local Supabase Development
The API app provides a local Supabase instance for development, allowing you to:
- Run Supabase services locally
- Develop and test database migrations
- Test authentication flows
- Develop and test database functions
- Work with real-time subscriptions
- Test storage functionalityTo start the local Supabase instance:
```bash
cd apps/api
pnpm dev
```This will start all Supabase services locally, including:
- PostgreSQL database
- Supabase Auth
- Storage
- Edge Functions
- Real-time subscriptions## UI Components
### Adding Components
To add components to your app, run the following command at the root of your `web` app:
```bash
pnpm dlx shadcn@latest add button -c apps/web
```This will place the ui components in the `packages/ui/src/components` directory.
### Using Components
To use the components in your app, import them from the `ui` package:
```tsx
import { Button } from "@pkg/ui/components/button"
```### Tailwind Configuration
Your `tailwind.config.ts` and `globals.css` are already set up to use the components from the `ui` package.
## Shared Packages
### Supabase Package
The `supabase` package provides shared Supabase client configuration and utilities for both the dashboard and API applications.
### Logger Package
The `logger` package offers consistent logging utilities across all applications in the monorepo.
### ESLint and TypeScript Config
Shared configurations for ESLint and TypeScript ensure consistent code style and type checking across all packages and applications.
## License
This project is licensed under the **[AGPL-3.0](https://opensource.org/licenses/AGPL-3.0)** for non-commercial use.
### Commercial Use
For commercial use or deployments requiring a setup fee, please contact us for a commercial license at [engineer@zuupee.com](mailto:engineer@zuupee.com).By using this software, you agree to the terms of the license.