A modern, user-friendly web application for merging PDF files with a clean and intuitive interface. Built with Next.js, TypeScript, and Tailwind CSS.
- π Features
- Live Demo
- π οΈ Tech Stack
- π Project Structure
- π Getting Started
- Development
- Deployment
- Troubleshooting
- Visual Representation
- Contributing
- π¨βπ» Author
- π License
- π Star History
- π Acknowledgments
- π Drag and Drop PDF Files: Easily add files by dragging and dropping them into the application.
- π Reorder Files Before Merging: Arrange the order of your PDF files before merging them.
- π Simple and Intuitive Interface: User-friendly design for a seamless experience.
- π± Responsive Design: Optimized for all devices, including mobile and tablets.
- π― File Size Display: View the size of each PDF file before merging.
- ποΈ Easy File Removal: Quickly remove unwanted files from the list.
- β‘ Fast and Efficient: Merge PDF files quickly with high performance.
- π± Modern Frontend: Next.js with Tailwind CSS for a sleek and modern look.
- π οΈ TypeScript Support: Strongly typed codebase for improved maintainability.
- π¦ Component Library: Utilizes shadcn/ui components for a consistent design.
- π Deploy with Vercel: Easily deploy to Vercel with a single click.
-
β‘ React 19 RC Integration
- Document Metadata API
- Asset Loading API
- Progressive Loading
- Optimization Compiler
-
π Next.js 15 App Router
- Server Components
- Partial Prerendering
- Parallel Routes
- Edge Runtime
-
π Full-Stack Type Safety
- End-to-end typesafe APIs with tRPC
- Runtime validation
- Strict TypeScript
- Comprehensive error handling
-
β‘ Performance First
- Edge deployment
- Streaming SSR
- Smart bundling
- Optimal caching
- Framework: Next.js
- Language: TypeScript
- Styling: Tailwind CSS
- Components: shadcn/ui
simple-pdf-merger/
βββ .eslintrc.json
βββ .gitignore
βββ .husky/
β βββ _/...
β βββ commit-msg
βββ .vscode/
β βββ settings.json
βββ app/
β βββ fonts/
β βββ globals.css # Global styles
β βββ layout.tsx # Root layout with metadata
β βββ page.tsx # Home page
βββ commitlint.config.js
βββ components/
β βββ ui/ # shadcn/ui components
β βββ button.tsx
β βββ card.tsx
β βββ PDFMerger.tsx # Main PDF merger component
βββ components.json
βββ lib/
β βββ utils.ts # Utility functions
βββ next-env.d.ts
βββ next.config.ts
βββ package.json
βββ pnpm-lock.yaml
βββ postcss.config.mjs
βββ public/
β βββ screenshot.png # App screenshot
βββ README.md
βββ tailwind.config.ts
βββ tsconfig.json
βββ types/
β βββ api.ts # API type definitions
β βββ components.ts # Component type definitions
β βββ events.ts # Event type definitions
β βββ index.ts # Main type exports
β βββ pdf.ts # PDF type definitions
β βββ utils.ts # Utility type definitions
- Node.js 18.17 or later
- pnpm (recommended), npm, or yarn
-
Clone the repository:
git clone https://github.com/BjornMelin/simple-pdf-merger.git cd simple-pdf-merger
-
Install
pnpm
if you don't have it:npm install -g pnpm
-
Install dependencies:
pnpm install
-
Set up shadcn/ui components:
pnpm dlx shadcn@latest init
Choose the following options when prompted:
- TypeScript: Yes
- Style: Default
- Base color: Slate
- Global CSS: globals.css
- CSS variables: Yes
- tailwind.config.js location: tailwind.config.js
- Components import alias: @/components
- Utilities import alias: @/lib/utils
-
Install required shadcn/ui components:
pnpm dlx shadcn@latest add card button
-
Run the development server:
pnpm run dev
-
Open http://localhost:3000 in your browser.
npm run type-check
npm run lint
npm run build
- Push your code to GitHub
- Go to Vercel
- Import your repository
- Deploy
Build the application:
npm run build
The build output will be in the .next
directory.
If you encounter the error 'pnpm' is not recognized as an internal or external command, operable program or batch file
, follow these steps:
-
Ensure Node.js and npm are installed:
-
Download and install Node.js from nodejs.org.
-
Verify the installation:
node -v npm -v
-
-
Install
pnpm
globally:-
Run the following command to install
pnpm
:npm install -g pnpm
-
-
Verify
pnpm
installation:-
Check the
pnpm
version:pnpm -v
-
-
Run the command again:
-
Use
pnpm dlx
to ensure the latest version is used:pnpm dlx shadcn@latest init
-
graph TD;
A[Install Node.js and npm] --> B[Install pnpm globally];
B --> C[Clone the repository];
C --> D[Install dependencies];
D --> E[Initialize shadcn/ui];
E --> F[Install required components];
F --> G[Run development server];
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature
) - Commit your changes (
git commit -m 'Add some AmazingFeature'
) - Push to the branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
AWS-certified Solutions Architect and Developer with expertise in cloud architecture and modern development practices. Connect with me on:
Project Link: https://github.com/BjornMelin/simple-pdf-merger
This project is licensed under the MIT License - see the LICENSE file for details.