https://github.com/giomjds/printify
Upload your PDF or DOCX, select print settings, pay securely, and track your order in real timeβprofessional prints made effortless.
https://github.com/giomjds/printify
cloudinary nextjs postgresql uploadthing websockets
Last synced: 2 months ago
JSON representation
Upload your PDF or DOCX, select print settings, pay securely, and track your order in real timeβprofessional prints made effortless.
- Host: GitHub
- URL: https://github.com/giomjds/printify
- Owner: GioMjds
- License: other
- Created: 2025-06-05T01:33:55.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2025-06-28T02:30:44.000Z (about 1 year ago)
- Last Synced: 2025-06-28T03:26:41.132Z (about 1 year ago)
- Topics: cloudinary, nextjs, postgresql, uploadthing, websockets
- Language: TypeScript
- Homepage:
- Size: 1.05 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Security: SECURITY.md
Awesome Lists containing this project
README
# Printify
# 
> **Seamless document-to-print platform**
>
> Upload your `.pdf` or `.docx`, pay securely, and track your order in real time.
---
## π¦ Table of Contents
* [π About](#-about)
* [β¨ Features](#-features)
* [π οΈ Tech Stack](#tech-stack)
* [βοΈ Installation & Setup](#οΈ-installation--setup)
* [βΆοΈ Usage](#-usage)
* [π Repository Structure](#-repository-structure)
* [π€ Contributing](#-contributing)
---
## π About
Printify is a professional web portal that transforms your PDF and DOCX documents into high-quality printsβfast, reliable, and user-friendly. Designed for local print shops, it offers a streamlined, end-to-end experience:
* **Upload** documents in seconds
* **Pay** physically
* **Track** order status in real time
---
## β¨ Features
* π **Secure Uploads & Payments**: SSL encryption and Stripe integration for peace of mind
* π **Real-Time Tracking**: WebSockets notifications for status changes
* π **Document Preview**: In-browser preview before you submit
* π§ **Order Confirmation & Receipts**: Email receipts with unique Order ID
---
## π οΈ Tech Stack
| Layer | Technology |
| ------------- | ---------------------------------------- |
| Front End | Next.js 15 (App Router), Tailwind CSS v4 |
| Back End | Next.js API Routes, TypeScript |
| Database | PostgreSQL, Prisma ORM |
| File Storage | Cloudinary |
| Real-Time | WebSockets |
| Email Service | Nodemailer |
---
## βοΈ Installation & Setup
1. **Clone the repo**
```bash
git clone https://github.com/GioMjds/Printify.git
cd printify
```
2. **Install dependencies**
```bash
npm install
```
3. **Environment Variables** Create a `.env.local` file in the root and add:
```bash
# PostgreSQL for the database
DATABASE_URL="postgresql://:@:5432/printify?schema=public"
# Setup your own Cloudinary and fill the credentials needed
NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME=
NEXT_PUBLIC_CLOUDINARY_API_KEY=
NEXT_PUBLIC_CLOUDINARY_API_SECRET=
CLOUDINARY_URL=
# Create your own Gmail Address for your own setup
EMAIL_USER=your_own_gmail_address
EMAIL_PASS=app_password
```
4. **Run Prisma migrations & generate client**
```bash
Just copy the `schema.prisma` file in my repo
npx prisma migrate dev --name init
npx prisma generate
```
5. **Start the development server**
```bash
npm run dev
```
---
## βΆοΈ Usage
1. Open `http://localhost:3000` in your browser
2. **Upload** your PDF or DOCX file
3. **Select** print settings (paper size, color, duplex, quantity)
4. **Review** price estimate and **proceed** to payment
5. **Track** your order status on the dashboard
6. **Receive** email notification when ready
---
## π Repository Structure
```plaintext
/printify
βββ components/
β βββ ProtectedRoutes.tsx
β βββ constants/
β β βββ admin-sidebar.ts
β β βββ customer-sidebar.ts
β β βββ hero.ts
β β βββ navbar.ts
β βββ hooks/
β β βββ useWebSockets.tsx
β βββ layout/
β β βββ Footer.tsx
β β βββ Navbar.tsx
βββ lib/
β βββ auth.ts
β βββ prisma.ts
βββ public/
β βββ file.svg
β βββ globe.svg
β βββ next.svg
β βββ printify_logo.png
β βββ vercel.svg
β βββ window.svg
βββ prisma/
β βββ schema.prisma
β βββ migrations/
β βββ migration_lock.toml
β βββ 20250605034628_init/
β β βββ migration.sql
β βββ 20250605100725_init/
β β βββ migration.sql
β βββ 20250605101251_init/
β β βββ migration.sql
β βββ 20250607093243_init/
β βββ migration.sql
βββ src/
β βββ middleware.ts
β βββ app/
β β βββ favicon.ico
β β βββ globals.css
β β βββ providers.tsx
β β βββ (auth)/
β β β βββ layout.tsx
β β β βββ login/
β β β β βββ login.tsx
β β β β βββ page.tsx
β β β βββ register/
β β β β βββ page.tsx
β β β β βββ register.tsx
β β β βββ verify/
β β β βββ page.tsx
β β β βββ verify-otp.tsx
β β βββ (landing)/
β β β βββ landing-page.tsx
β β β βββ layout.tsx
β β β βββ page.tsx
β β βββ (protected)/
β β β βββ layout.tsx
β β β βββ sidebar.tsx
β β β βββ admin/
β β β β βββ page.tsx
β β β β βββ analytics/
β β β β β βββ page.tsx
β β β β βββ orders/
β β β β β βββ page.tsx
β β β β βββ settings/
β β β β β βββ page.tsx
β β β β βββ users/
β β β β βββ page.tsx
β β β βββ customer/
β β β βββ page.tsx
β β β βββ new/
β β β β βββ page.tsx
β β β βββ orders/
β β β β βββ page.tsx
β β β βββ profile/
β β β βββ page.tsx
β β βββ api/
β β βββ auth/
β β β βββ [...nextauth]/
β β β β βββ route.ts
β β β βββ action/
β β β βββ [action]/
β β β βββ route.ts
βββ services/
β βββ _axios.ts
β βββ Auth.ts
βββ skeletons/
βββ types/
β βββ useWebSocketsTypes.ts
βββ utils/
β βββ otpCache.ts
β βββ send-email.ts
βββ .env.local
βββ README.md
βββ eslint.config.mjs
βββ next-auth.d.ts
βββ next-env.d.ts
βββ next.config.ts
βββ package.json
βββ pnpm-lock.yaml
βββ pnpm-workspace.yaml
βββ postcss.config.mjs
βββ tsconfig.json
```
---
## π€ Contributing
1. Fork the repository
2. Create a new branch: `git checkout -b feature/YourFeature`
3. Commit your changes: `git commit -m 'Add YourFeature'`
4. Push to the branch: `git push origin feature/YourFeature`
5. Open a Pull Request
Please ensure your code follows the existing style and includes tests where applicable.
---
## π License
This project is licensed under the [MIT License](./LICENSE).