This is a Turborepo-powered monorepo containing the following applications and packages:
merchant-portal: Merchant dashboard applicationcheckout-portal: Customer checkout portalworker-server: Background worker server
- Framework: Next.js 15.3.1 with React 19
- Styling: TailwindCSS 4.x with shadcn/ui components
- State Management: SWR for data fetching
- Form Handling: React Hook Form with Zod validation
- UI Components:
- Radix UI primitives
- Framer Motion for animations
- Lucide React for icons
- Recharts for data visualization
- Runtime: Node.js (v18+)
- API: Next.js API Routes
- Database: Prisma 6.6 ORM
- Authentication: NextAuth.js 5.0
- Job Queue: BullMQ with Redis
- File Storage: AWS S3
- Network: Solana
- Libraries:
@solana/web3.js@solana/spl-token@solana/wallet-adapter
- Package Manager: pnpm 8+
- Monorepo: Turborepo with Remote Caching
- Language: TypeScript 5.8
- Linting & Formatting:
- ESLint 9
- Prettier
- Build Tool: Turbopack
- Container Platform: Docker
Before you begin, ensure you have installed:
-
Clone the repository
git clone <repository-url> cd jpay
-
Install dependencies
pnpm install
-
Set up environment variables
Copy the example environment files for each application:
# For merchant portal cp apps/merchant-portal/.env.example apps/merchant-portal/.env # For checkout portal cp apps/checkout-portal/.env.example apps/checkout-portal/.env # For worker server cp apps/worker-server/.env.example apps/worker-server/.env
-
Start development environment
# Start Docker services docker-compose up -d # Start all applications in development mode pnpm dev
pnpm dev- Start all applications in development modepnpm build- Build all applicationspnpm lint- Run linting across all applicationspnpm test- Run tests across all applicationspnpm clean- Clean all build outputs and caches
- Merchant Portal: http://localhost:3000
- Checkout Portal: http://localhost:3001
- Worker Server: http://localhost:3002
-
Branch Naming Convention
- Feature:
feature/description - Bugfix:
fix/description - Hotfix:
hotfix/description
- Feature:
-
Commit Messages Follow conventional commits:
feat: descriptionfix: descriptionchore: descriptiondocs: description
-
Code Quality
- Run
pnpm lintbefore committing - Ensure all tests pass with
pnpm test - Follow the TypeScript guidelines in
packages/typescript-config
- Run
This project uses Turborepo's Remote Caching feature. To enable it:
-
Login to Vercel:
npx turbo login
-
Link to Remote Cache:
npx turbo link
-
Cache Issues
# Clear Turborepo cache pnpm clean # Clear pnpm store pnpm store prune
-
Port Conflicts
- Check if any other services are using the required ports
- Modify the port in the respective .env file if needed
- Turborepo Documentation
- pnpm Documentation
- Internal documentation: Check
docs/directory
- Create a new branch from
main - Make your changes
- Submit a pull request
- Ensure CI checks pass
- Get approval from at least one reviewer
For internal support, contact the development team through:
mail: jashandeep1659@gmail.com Discord: jashandeep31