Peach is a web application for selling and distributing TIFF layered textile design files. It's built with modern web technologies and provides a platform for designers to showcase and sell their work.
- Next.js 14
- React 18
- TypeScript
- Tailwind CSS
- Prisma (with PostgreSQL)
- Lucia for authentication
- Resend for email
- Cloudflare R2 (S3 compatible) for file storage
- Trigger.dev for background jobs
- Biome for linting and formatting
- Node.js (v18 or later recommended)
- pnpm
- PostgreSQL database
- Clone the repository:
git clone https://github.com/siddharthborderwala/mypeach.git
cd mypeach- Install dependencies:
pnpm install- Set up environment variables:
Create a .env file in the root directory and add the variables.
- Set up the database:
pnpm db:generate
pnpm db:migrate- Run the development server:
pnpm devThe application should now be running at http://localhost:3000.
src/app: Next.js app router pages and layoutssrc/components: React componentssrc/lib: Utility functions and shared logicsrc/hooks: Custom React hooksprisma: Database schema and migrations
This project uses Tailwind CSS for styling.
Authentication is handled using Lucia. The main configuration can be found in src/lib/auth/lucia.ts.
File storage is managed using AWS S3 compatible Cloudflare R2. The configuration is in src/lib/storage/index.ts.
The public bucket is used to store files that are publicly accessible, such as design thumbnails.
The protected bucket is used to store files that are protected by authentication, such as the original design files.
Background jobs are managed using trigger.dev. The configuration can be found in trigger.config.ts.
All jobs are defined in src/trigger/.
This project uses Biome for linting and formatting. The configuration is in the biome.json file.
Please read the CONTRIBUTING.md file (if available) for details on our code of conduct and the process for submitting pull requests.