2025-07-29 19:45:38 -04:00
2025-07-29 19:45:38 -04:00

beenvoice Logo

beenvoice - Invoicing Made Simple

A modern, professional invoicing application built for freelancers and small businesses. beenvoice provides a clean, efficient way to manage clients and create professional invoices with ease.

beenvoice Logo

Features

  • 🔐 Secure Authentication - Email/password registration and sign-in with NextAuth.js
  • 👥 Client Management - Create, edit, and manage client information
  • 📄 Professional Invoices - Generate detailed invoices with line items
  • 💰 Flexible Pricing - Set custom rates and calculate totals automatically
  • 📱 Responsive Design - Works seamlessly on desktop, tablet, and mobile
  • 🎨 Modern UI - Clean, professional interface built with shadcn/ui
  • Type-Safe - Full TypeScript support with tRPC for API calls
  • 💾 Local Database - SQLite database with Drizzle ORM

🚀 Tech Stack

  • Frontend: Next.js 15 with App Router
  • Backend: tRPC for type-safe API calls
  • Database: Drizzle ORM with LibSQL (SQLite)
  • Authentication: NextAuth.js with email/password
  • UI Components: shadcn/ui with Tailwind CSS
  • Styling: Geist font family
  • Package Manager: Bun

📦 Installation

Prerequisites

  • Node.js 18+ or Bun
  • Git

Quick Start

  1. Clone the repository

    git clone https://github.com/yourusername/beenvoice.git
    cd beenvoice
    
  2. Install dependencies

    ```bash
    bun install
    
  3. Set up environment variables

    cp .env.example .env.local
    

    Edit .env.local and add your configuration:

    DATABASE_URL="file:./db.sqlite"
    NEXTAUTH_SECRET="your-secret-key-here"
    NEXTAUTH_URL="http://localhost:3000"
    
  4. Initialize the database

    bun run db:push
    
  5. Start the development server

    bun run dev
    
  6. Open your browser Navigate to http://localhost:3000

🏗️ Project Structure

beenvoice/
├── src/
│   ├── app/                    # Next.js App Router pages
│   │   ├── api/               # API routes (NextAuth, tRPC)
│   │   ├── auth/              # Authentication pages
│   │   ├── clients/           # Client management pages
│   │   ├── invoices/          # Invoice management pages
│   │   └── _components/       # Page-specific components
│   ├── components/            # Shared UI components
│   ├── server/               # Server-side code
│   │   ├── api/              # tRPC routers
│   │   ├── auth/             # NextAuth configuration
│   │   └── db/               # Database schema and connection
│   ├── styles/               # Global styles
│   └── trpc/                 # tRPC client configuration
├── drizzle/                  # Database migrations
├── public/                   # Static assets
└── docs/                     # Documentation

🎯 Usage

Getting Started

  1. Register an Account

    • Visit the sign-up page
    • Enter your name, email, and password
    • Verify your email (if configured)
  2. Add Your First Client

    • Navigate to the Clients page
    • Click "Add New Client"
    • Fill in client details (name, email, phone, address)
  3. Create an Invoice

    • Go to the Invoices page
    • Click "Create New Invoice"
    • Select a client
    • Add line items with descriptions, dates, hours, and rates
    • Save and generate your invoice

Features Overview

Client Management

  • Create and edit client profiles
  • Store contact information and addresses
  • Search and filter client list
  • View client history

Invoice Creation

  • Select from existing clients
  • Add multiple line items
  • Set custom rates per item
  • Automatic total calculations
  • Professional invoice formatting

User Interface

  • Clean, modern design
  • Responsive layout
  • Intuitive navigation
  • Toast notifications for feedback
  • Modal dialogs for forms

🔧 Development

Available Scripts

# Development
bun run dev          # Start development server
bun run build        # Build for production
bun run start        # Start production server

# Database
bun run db:push      # Push schema changes to database
bun run db:studio    # Open Drizzle Studio
bun run db:generate  # Generate new migration

# Code Quality
bun run lint         # Run ESLint
bun run format       # Format code with Prettier
bun run type-check   # Run TypeScript type checking

Database Schema

The application uses four main tables:

  • users: User accounts and authentication
  • clients: Client information and contact details
  • invoices: Invoice headers with client relationships
  • invoice_items: Individual line items with pricing

API Development

All API endpoints are built with tRPC for type safety:

  • Authentication: NextAuth.js integration
  • Clients: CRUD operations for client management
  • Invoices: Invoice creation and management
  • Validation: Zod schemas for input validation

🎨 Customization

Styling

The app uses Tailwind CSS with a custom design system:

  • Primary Color: Green (#16a34a)
  • Font: Geist for professional typography
  • Components: shadcn/ui component library
  • Spacing: 4px grid system

Branding

Update the logo and colors in:

  • src/components/logo.tsx - Main logo component
  • src/styles/globals.css - Color variables
  • src/app/layout.tsx - Font configuration

🚀 Deployment

Deployment

You can deploy this application to any platform that supports Next.js (Docker, Coolify, Railway, etc.).

  1. Build the application:
bun run build
  1. Start the server:
bun start

Other Platforms

The app can be deployed to any platform that supports Next.js:

  • Netlify: Use the Next.js build command
  • Railway: Connect your GitHub repository
  • DigitalOcean App Platform: Deploy with automatic scaling

Environment Variables

Required for production:

DATABASE_URL="your-database-url"
NEXTAUTH_SECRET="your-secret-key"
NEXTAUTH_URL="https://your-domain.com"

🤝 Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Development Guidelines

  • Follow TypeScript best practices
  • Use shadcn/ui components for consistency
  • Implement proper error handling
  • Add tests for new features
  • Follow the existing code style

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

🙏 Acknowledgments

📞 Support


Built for freelancers and small businesses who deserve better invoicing tools.

Description
Create professional invoices, manage clients, and track payments. Built for freelancers and small businesses—completely free.
Readme 2.8 MiB
Languages
TypeScript 96.7%
CSS 1.7%
Shell 1%
JavaScript 0.4%
Dockerfile 0.2%