This is a SaaS Invoice web application built using Next.js with the App Router, TypeScript, and Tailwind CSS. The application allows users to create, manage, and send invoices, as well as manage customer information and bank details.
Before you begin, ensure you have met the following requirements:
- Git must be installed on your operating system.
To install SaaS Invoice, follow these steps:
- Clone the repository:
Linux and macOS:
```bash
sudo git clone https://github.com/UmbrellaSkiies/next-saas-invoice.git
```
Windows:
```bash
git clone https://github.com/UmbrellaSkiies/next-saas-invoice.git
cd next-saas-invoice
```
-
Install dependencies:
npm install
-
Set up environment variables:
Create a
.env.local
file in the root directory and add your environment variables:DATABASE_URL=your_database_url NEXT_PUBLIC_CLERK_FRONTEND_API=your_clerk_frontend_api CLERK_API_KEY=your_clerk_api_key RESEND_API_KEY=your_resend_api_key
-
Development: npm run dev
-
Build: npm run build
-
Start: npm run start
-
Migrate Database: npx drizzle-kit generate
-
Push to Database: npx drizzle-kit push
- Next.js 14: React framework with server-side rendering and static site generation.
- TypeScript: Static type checking.
- Tailwind CSS: Utility-first CSS framework.
- ShadCN UI: Custom UI components.
- Lucide Icons: Icons used throughout the application.
- Drizzle ORM: Type-safe ORM for database management.
- Neon Serverless: Database hosting.
- Clerk: Authentication provider.
- React-to-Print: For printing React components as PDFs.
- Resend: For sending digital invoices.
📁 next-saas-invoice (root)
|
├─ 📁 app
| ├─ 📁 api
| | ├─ 📁 bank-info
| | | |_ 📄 route.ts
| | ├─ 📁 customers
| | | |_ 📄 route.ts
| | ├─ 📁 invoices
| | |_ 📄 route.ts
| ├─ 📁 home
| | |_ 📄 page.tsx
| | |_ 📄 layout.tsx
| ├─ 📁 dashboard
| | |_ 📄 page.tsx
| | |_ 📄 layout.tsx
| ├─ 📄 layout.tsx
| |_ 📄 page.tsx
|
├─ 📁 components
| ├─ 📁 ui
| | |_ 📄 Button.tsx
| | |_ 📄 Card.tsx
| | |_ 📄 Modal.tsx
| ├─ 📁 dashboard
| | |_ 📄 CustomersTable.tsx
| | |_ 📄 InvoiceTable.tsx
| |_ 📁 layout
| |_ 📄 DesktopNav.tsx
| |_ 📄 Footer.tsx
| |_ 📄 Navbar.tsx
|
├─ 📁 lib
| |_ 📄 utils.ts
|
├─ 📁 hooks
| |_ 📄 useUser.ts
| |_ 📄 useActiveLink.ts
|
├─ 📁 types
| |_ 📄 types.d.ts
|
├─ 📁 styles
| |_ 📄 globals.css
| |_ 📄 variables.css
|
├─ 📁 public
| |_ 📁 images
| | |_ 📄 logo.svg
| | |_ 📄 hero-image.png
| |_ 📁 fonts
| |_ 📄 custom-font.woff2
|
├─ 📁 config
| |_ 📄 seo.ts
| |_ 📄 navigation.ts
|
├─ 📄 next.config.js
├─ 📄 package.json
├─ 📄 tsconfig.json
├─ 📄 .env.local
├─ 📄 .gitignore
- Fork the repository.
- Create a new branch (git checkout -b feature/your-feature).
- Make your changes and commit them (git commit -m 'Add some feature').
- Push to the branch (git push origin feature/your-feature).
- Open a Pull Request.
This project is free to use and does not contain any license.
If you want to contact me you can reach me at LinkedIn or Instagram.