Skip to content

Danford/PrintChecks

Β 
Β 

Repository files navigation

πŸ’° PrintChecks

Professional check printing and payment documentation that runs entirely in your browser

License: MIT Vue 3 TypeScript

PrintChecks is a fork of PrintMeChecks that dramatically expands its capabilities to offer enhanced customization, richer output, and business-ready payment documentation. What started as a simple check-printing tool has evolved into a comprehensive, privacy-focused financial documentation system.

🌟 Why PrintChecks?

Privacy First: Other check printing services charge $1.25+ per check and require you to upload sensitive banking information to third-party servers. PrintChecks runs entirely in your browserβ€”no data ever leaves your computer.

Business Ready: Manage multiple bank accounts, track vendors, generate professional receipts, and access comprehensive payment analyticsβ€”all from one local tool.

Cost Effective: Buy blank check stock from any office supply store and print unlimited checks for free. No subscriptions, no per-check fees, no compromises.


✨ Key Features

🏦 Professional Check Printing

  • Print checks on standard 8.5" x 11" paper
  • Official E13B MICR font for routing and account numbers
  • Automatic amount-to-words conversion
  • Elegant signature fonts (optional)
  • Multiple bank account support
  • Custom logo upload and positioning

πŸ“‹ Receipt & Invoice Management

  • Create itemized receipts with line items
  • Automatic calculations (subtotal, tax, totals)
  • Professional formatting for business use

🎨 Customization Engine

  • Font customization for every check element
  • Color schemes and styling presets
  • Logo upload with positioning controls
  • Preset system for quick style switching

πŸ‘₯ Vendor Management

  • Store vendor information (name, address, email, phone)
  • Quick-fill vendor details on checks
  • Track payment history per vendor

πŸ“Š Payment Analytics

  • Payment volume tracking over time
  • Top vendors by payment amount
  • Monthly spending breakdowns
  • Check frequency analysis
  • Comprehensive payment history

πŸ“š History & Documentation

  • Complete payment history tracking
  • Combined view of checks and receipts
  • Immutable payment records
  • Coming Soon: Search, filters, pagination, sorting, and data export

πŸ”’ Privacy & Security

  • 100% Local: All processing happens in your browser
  • No Network Requests: Zero external server communication
  • Local Storage: Data stays on your computer
  • No Tracking: No analytics, cookies, or user tracking
  • Open Source: Audit the code yourself

πŸ“Έ Screenshots

New Check Creation New Check Creation

Check Preview with MICR Font Check Preview with MICR Font

Write New Check Modal Write New Check Modal

Payment History & Analytics Payment History & Analytics


πŸ“– Documentation

View Full Documentation β†’


πŸš€ Quick Start

For End Users (Main Application)

Prerequisites

  • Node.js (v18+ recommended)
  • npm or yarn package manager

Installation

  1. Clone the repository
git clone https://github.com/Danford/PrintChecks.git
cd PrintChecks/printchecks
  1. Install dependencies
npm install
  1. Start the development server
npm run dev
  1. Open in your browser Navigate to http://localhost:5173/

Production Build

npm run build

The production build will be in the dist/ directory, ready to deploy to any static hosting service.


πŸ“– Usage Guide

Setting Up Your First Check

  1. Add a Bank Account

    • Navigate to "Bank Accounts" in the sidebar
    • Enter your routing number, account number, and bank name
    • Optionally upload your bank's logo
  2. Configure Check Style

    • Go to "Customization" to personalize fonts, colors, and layout
    • Upload your company logo if desired
    • Save preset styles for quick access
  3. Print Your First Check

    • Return to "Home" and fill in the check details
    • Select payee (or add a new vendor)
    • Enter amount and memo
    • Click "Print" to generate a print-ready check

Managing Vendors

  1. Navigate to "Vendors" in the sidebar
  2. Click "Add Vendor" to create new entries
  3. Fill in vendor details (name, address, contact info)
  4. Use vendors for quick-fill when printing checks

Creating Receipts

  1. Go to "Receipts" in the sidebar
  2. Add line items with descriptions and amounts
  3. Configure tax rates and additional charges
  4. Generate and print professional receipts

Viewing Analytics

  1. Navigate to "Analytics"
  2. Review payment trends over time
  3. Identify top vendors by payment volume
  4. Analyze monthly spending patterns

πŸ”§ For Developers

PrintChecks is also available as modular npm packages for integration into your own applications:

Installation

# Core library (framework-agnostic)
npm install @printchecks/core

# Vue 3 integration
npm install @printchecks/vue

# Web Components (works with any framework)
npm install @printchecks/web-components

Quick Example

import { PrintChecksCore } from '@printchecks/core'

const printChecks = new PrintChecksCore()

// Create a check
const check = await printChecks.createCheck({
  checkNumber: '1001',
  date: new Date().toLocaleDateString(),
  amount: 1250.00,
  payTo: 'Acme Corporation',
  memo: 'Invoice #12345',
  // ... other fields
})

View Full Documentation β†’

Monorepo Development

This repository uses a monorepo structure with pnpm workspaces:

# Install dependencies
pnpm install

# Build all packages
pnpm build

# Develop specific package
pnpm dev:core
pnpm dev:vue

# Run documentation site
pnpm docs:dev

# Type checking
pnpm type-check

# Linting
pnpm lint

πŸ“ Project Structure

PrintChecks/
β”œβ”€β”€ printchecks/              # Main application directory
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ components/       # Vue components
β”‚   β”‚   β”‚   β”œβ”€β”€ customization/  # Customization UI components
β”‚   β”‚   β”‚   └── receipt/        # Receipt and line item components
β”‚   β”‚   β”œβ”€β”€ composables/      # Reusable Vue composition functions
β”‚   β”‚   β”œβ”€β”€ stores/           # Pinia state management
β”‚   β”‚   β”‚   β”œβ”€β”€ app.ts          # Global app state
β”‚   β”‚   β”‚   β”œβ”€β”€ check.ts        # Check management
β”‚   β”‚   β”‚   β”œβ”€β”€ customization.ts # Styling and presets
β”‚   β”‚   β”‚   β”œβ”€β”€ receipt.ts      # Receipt functionality
β”‚   β”‚   β”‚   └── history.ts      # History tracking
β”‚   β”‚   β”œβ”€β”€ types/            # TypeScript type definitions
β”‚   β”‚   β”œβ”€β”€ views/            # Vue router views (pages)
β”‚   β”‚   β”œβ”€β”€ router/           # Vue Router configuration
β”‚   β”‚   └── main.ts           # Application entry point
β”‚   β”œβ”€β”€ public/               # Static assets
β”‚   β”œβ”€β”€ scripts/              # Development utility scripts
β”‚   └── package.json          # Dependencies and scripts
β”œβ”€β”€ LICENSE                   # MIT License
└── README.md                 # This file

πŸ› οΈ Technology Stack


πŸ“œ Available Scripts

# Development
npm run dev              # Start dev server with hot reload
npm run dev:clear        # Start dev server with cleared history (debugging)

# Production
npm run build            # Build for production
npm run preview          # Preview production build locally

# Code Quality
npm run type-check       # Run TypeScript type checking
npm run lint             # Lint and auto-fix with ESLint
npm run format           # Format code with Prettier

🀝 Contributing

We welcome contributions! Here's how you can help:

  1. Fork the repository
  2. Create a feature branch
    git checkout -b feature/amazing-feature
  3. Make your changes and ensure code quality
    npm run lint && npm run type-check
  4. Commit your changes
    git commit -m 'Add amazing feature'
  5. Push to your fork
    git push origin feature/amazing-feature
  6. Open a Pull Request

Development Guidelines

  • Follow existing code style (enforced by ESLint and Prettier)
  • Write TypeScript with proper type definitions
  • Test your changes thoroughly
  • Update documentation as needed
  • Keep commits focused and atomic

πŸ› Troubleshooting

Fonts not loading correctly

  • Ensure the expanded_fonts.js file is present in the project root
  • Check browser console for font loading errors
  • Try clearing browser cache

Print preview looks incorrect

  • Verify your browser's print settings (margins, scale)
  • Ensure "Background graphics" is enabled in print options
  • Use Chrome or Firefox for best results

Data not persisting

  • Check that localStorage is enabled in your browser
  • Ensure you're not in private/incognito mode
  • Check browser console for storage errors

Development server won't start

  • Delete node_modules and package-lock.json
  • Run npm install again
  • Ensure you're using Node.js v18+

πŸ“„ License

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

Copyright Β© 2025 Joshua Danford


πŸ™ Acknowledgments

  • Original PrintMeChecks project by sktzofrenic
  • Vue.js community for excellent documentation and tools
  • All contributors who have helped improve this project

πŸ”— Links


πŸ’‘ Tips for Best Results

  1. Check Stock: Use standard 8.5" x 11" blank check stock with MICR ink compatibility
  2. Printer Settings:
    • Disable margins or use minimal margins
    • Enable "Background graphics"
    • Use 100% scale (no fit-to-page)
  3. Browser: Chrome and Firefox provide the most consistent printing results
  4. Backups: Periodically export your history and vendor data
  5. Security: Run locallyβ€”never host this on a public server with real banking information

PrintChecks: Take control of your payment documentation. Private, professional, and completely free. 🏦✨

About

PrintChecks is a fork of PrintMeChecks that expands its capabilities to offer enhanced customization and richer output, turning a simple check-printing web app into a more flexible, business-ready payment / payment-receipt printing tool.

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • TypeScript 78.3%
  • Vue 19.1%
  • JavaScript 2.0%
  • Other 0.6%