Ledgerline
Ledgerline
Modern invoice management built with Next.js and PostgreSQL
Overview
Ledgerline is a full-stack invoice management application that helps businesses create, track, and manage invoices efficiently. Built with modern web technologies, it provides a clean dashboard interface for handling client billing and payment tracking.
Key Features
- Invoice Management: Create, edit, and track invoices with multiple status states (draft, sent, paid, overdue)
- Client Management: Store client information including names and email addresses
- Dashboard Analytics: View outstanding amounts, collected payments, and overdue invoices at a glance
- Multi-Currency Support: Handle invoices in different currencies
- Stripe Integration: Payment processing capabilities (scaffolded for production use)
- Authentication System: Secure user sessions with bcrypt password hashing
- Responsive Design: Built with Tailwind CSS and Radix UI components
Tech Stack
- Frontend: Next.js 16, React 19, TypeScript
- Backend: Next.js API routes, Server Actions
- Database: PostgreSQL with Drizzle ORM
- Authentication: Custom auth with bcrypt
- Payments: Stripe integration
- Styling: Tailwind CSS, Radix UI
- Validation: Zod schemas
Project Structure
src/
├── app/ # Next.js app router
│ ├── (auth)/ # Authentication pages
│ ├── (portal)/ # Main application dashboard
│ └── api/ # API routes
├── components/ # Reusable UI components
│ ├── app/ # Dashboard-specific components
│ ├── site/ # Marketing/auth components
│ └── ui/ # Base UI components
├── db/ # Database configuration
├── lib/ # Utility functions
└── types/ # TypeScript definitions
Getting Started
- Environment Setup: Copy
.env.exampleto.envand configure your database URL and auth secret - Database: Set up PostgreSQL and run migrations with Drizzle
- Development: Run
npm run devto start the development server
Database Schema
The application uses Drizzle ORM for type-safe database operations with PostgreSQL, managing users, invoices, and related billing data.