Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

67 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

StewardPOS Logo

Self-Hosted • Open Source • Docker-First • Built for Churches & Small Business

License Version Docker PRs Welcome

TypeScript React Node.js PostgreSQL Tailwind

🚀 Quick Start✨ Features🎨 Branding📖 Docs📦 Deploy🤝 Contribute


💳 Modern POS Interface

Fast, intuitive checkout with barcode scanning, variants, and real-time inventory

📊 Analytics Dashboard

Comprehensive reports, sales tracking, and business insights


📑 Table of Contents

Click to expand


🔗 Quick Links


🚀 Quick Start

🐳 Docker (Recommended)

The fastest way to get started - everything you need in one command!

# Clone the repository
git clone https://github.com/24Skater/stewardpos.git
cd stewardpos

# Start all services
docker-compose up -d

# 🎉 That's it! Open http://localhost:8080
📋 First Time Setup
  1. Open http://localhost:8080
  2. Complete the setup wizard:
    • Create admin account
    • Configure database
    • Set authentication methods
  3. Login with your credentials
  4. Start selling!

Default Demo Credentials:

Email: admin@demo.local
Password: admin123

💻 Local Development

Backend Setup
cd backend
npm install
cp env.example .env    # Configure your settings
npm run setup-db       # Run migrations
npm run dev            # Start server at :3001
Frontend Setup
npm install
npm run dev            # Start dev server at :5173



✨ Features

💰 Point of Sale

  • ⚡ Fast checkout interface
  • 📷 Barcode scanning
  • 🎨 Product variants
  • 💳 Multiple payment methods
  • 🧾 Receipt printing/email
  • 💰 Discounts & promotions
  • 🔄 Quick returns from POS

📦 Inventory

  • 📚 Product catalog
  • 📊 Real-time stock tracking
  • ⚠️ Low stock alerts
  • 📥 CSV import/export
  • 🖼️ Product images
  • 🔄 Variant management

👥 Customers

  • 📇 Customer database
  • 📈 Purchase history
  • 📞 Contact management
  • 🏷️ Tags & custom fields
  • 💎 Lifetime value
  • 📧 Email notifications

📊 Reports & Exports

  • 📈 Sales & service analytics
  • 💵 Revenue tracking
  • 🏆 Product performance
  • 📤 Export PDF/Excel/CSV
  • 📅 Date filtering
  • 📉 Trend analysis

🔐 Security

  • 🛡️ Role-based access (RBAC)
  • 👔 Custom roles
  • 🔒 Granular permissions
  • 📝 Audit logging
  • 🔑 API key management
  • 🔐 bcrypt hashing

🛠️ Services

  • 🔧 Service catalog
  • 📝 Quote generation
  • ⏱️ Flexible pricing
  • 🔄 Quote → Order workflow
  • 📋 Customer booking
  • 📅 Scheduling

🎨 Branding

  • 🏪 Store identity config
  • 🎨 Custom brand colors
  • 📷 Logo everywhere
  • 🧾 Receipt customization
  • 📝 Custom header/footer
  • 🌈 Live color preview

💸 Discounts & Promos

  • 🏷️ Quick discount buttons
  • 🎟️ Promo code system
  • 👔 Employee discounts
  • ✍️ Manual discounts
  • 📊 Usage tracking
  • 🔒 Approval workflow

🔄 Returns & Refunds

  • 🧾 Receipt lookup
  • 📦 Item-level returns
  • 💵 Multiple refund methods
  • ⚡ Quick POS returns
  • 📝 Return reasons
  • 🔄 Auto restock option



🏗️ Architecture

StewardPOS uses Clean Architecture with the Ports and Adapters pattern:

┌─────────────────────────────────────────────────────────────────┐
│                         FRONTEND                                 │
│       React 18  •  TypeScript  •  Vite  •  shadcn/ui            │
├─────────────────────────────────────────────────────────────────┤
│                           API                                    │
│          Express  •  JWT Auth  •  Zod Validation                │
├─────────────────────────────────────────────────────────────────┤
│                      BUSINESS LOGIC                              │
│              Domain Models  •  Use Cases  •  Ports              │
├─────────────────────────────────────────────────────────────────┤
│                    ADAPTERS (Pluggable)                          │
│  ┌────────────┬────────────┬────────────┬────────────┐          │
│  │  Database  │    Auth    │   Email    │  Storage   │          │
│  ├────────────┼────────────┼────────────┼────────────┤          │
│  │ PostgreSQL │   Local    │   SMTP     │    S3      │          │
│  │   SQLite   │   Google   │  Resend    │   Azure    │          │
│  │ IndexedDB  │   OIDC     │  Console   │   Local    │          │
│  └────────────┴────────────┴────────────┴────────────┘          │
└─────────────────────────────────────────────────────────────────┘
🎯 Why This Architecture?
Benefit Description
Swappable Change databases/auth without touching business logic
Testable Mock adapters for comprehensive unit tests
Extensible Add new providers by implementing interfaces
Configurable Switch adapters via environment variables



🛠️ Tech Stack

Frontend

Tech Purpose
React UI Framework
TypeScript Type Safety
Vite Build Tool
Tailwind Styling
shadcn/ui Components

Backend

Tech Purpose
Node.js Runtime
Express Framework
PostgreSQL Database
JWT Auth
Docker Container



📖 Documentation

🚀 Getting Started

👨‍💻 Development

📚 API Reference

  • Products API: /api/products
  • Orders API: /api/orders
  • Customers API: /api/customers
  • Services API: /api/services
  • Quotes API: /api/quotes
  • Returns API: /api/returns
  • Discounts API: /api/discounts
  • Receipts API: /api/receipts
  • Admin API: /api/admin/*
  • API Keys: /api/admin/api-keys

🔧 Configuration

  • Environment variables: .env
  • Docker config: docker-compose.yml



📦 Deployment

🐳 Docker

Recommended

docker-compose up -d

📖 Guide

🐧 Linux

Ubuntu • Debian • CentOS

systemd service nginx proxy

📖 Guide

🪟 Windows

Server 2019+ • Win10/11

PowerShell script IIS support

📖 Guide

☁️ Cloud

AWS • Azure • GCP DigitalOcean • more

Container ready Auto-scaling

📖 Guide




🎨 Branding & Customization

Make stewardPOS your own with comprehensive branding options:

🏪 Store Identity

Configure your business details that appear across the system:

  • Store Name - Displayed in POS header
  • Store Number - For multi-location tracking
  • Contact Info - Phone, email
  • Address - Full location details

🎨 Visual Branding

  • Logo - Appears in POS header
  • Favicon - Browser tab icon
  • Brand Color - Applied to buttons, links, accents
  • Live Preview - See changes instantly!

🧾 Receipt Customization

Create professional, branded receipts:

  • Receipt Logo - Separate from main logo
  • Store Info - Name, address, phone
  • Header Message - Welcome text
  • Footer Message - Return policy, social media
  • Barcode - For easy scanning
  • Print & Email - Multiple delivery options

🌈 Theme Support

Brand color automatically updates:

  • Primary buttons
  • Links and accents
  • Focus rings
  • Gradients and glows

Tip: Go to Admin → Branding to customize all these options with a live preview!




🔐 Security

✅ Security Features

  • 🔐 bcrypt password hashing
  • 🎫 JWT authentication
  • 🛡️ Role-based access control
  • 📝 Complete audit logging
  • ✅ Zod schema validation
  • 🚫 SQL injection prevention
  • 🛡️ XSS protection
  • 🔒 Security headers (Helmet)
  • ⏱️ Rate limiting
  • 🔐 CORS configuration

🚨 Report Vulnerabilities

Found a security issue? Please report privately:

📧 Email: security@stewardpos.dev

Do not open public issues for security vulnerabilities.

See SECURITY.md for details.




🤝 Contributing

We welcome contributions! Here's how to get started:

# 1. Fork & clone
git clone https://github.com/YOUR_USERNAME/stewardpos.git

# 2. Install dependencies
npm install && cd backend && npm install

# 3. Create a branch
git checkout -b feature/amazing-feature

# 4. Make changes, then commit
git commit -m "feat: add amazing feature"

# 5. Push and open a PR
git push origin feature/amazing-feature
📋 Contribution Guidelines
  1. Check open issues first
  2. Follow our code style (ESLint + Prettier)
  3. Write tests for new features
  4. Update documentation as needed
  5. Use conventional commits



📊 Roadmap

✅ Completed

  • Full REST API
  • PostgreSQL & SQLite
  • JWT authentication
  • Role-based access
  • Docker support
  • Setup wizard
  • Reports & analytics
  • Discounts & promotions
  • Returns & refunds
  • Custom branding
  • Receipt customization
  • PDF/Excel exports
  • API key management
  • Service quotes workflow

🔄 In Progress

  • Google OAuth integration
  • OIDC/SSO providers
  • Mobile responsive
  • Performance tuning
  • Loyalty programs

📋 Planned

  • Mobile app (iOS/Android)
  • Offline-first PWA
  • Multi-location support
  • Plugin marketplace
  • QuickBooks integration
  • Hardware integrations
  • Inventory alerts
  • Customer loyalty points



💒 About This Project

The Heart Behind stewardPOS

This project was born out of a real need at my church. We needed a simple, reliable point-of-sale system for our bookstore and events, but most solutions were either too expensive or too complicated for our volunteers to use.

So I built stewardPOS — not just as software, but as an act of service.

"Whatever you do, work at it with all your heart, as working for the Lord, not for human masters."Colossians 3:23

While stewardPOS works great for any retail business, it was designed with churches, ministries, and non-profits in mind:

  • 🙏 Simple enough for volunteers
  • 💰 Free and open source
  • 🏠 Self-hosted (your data stays yours)
  • ⛪ Perfect for bookstores, cafés, gift shops, and events

Every feature, every line of code was written as unto the Lord. My hope is that this tool blesses your ministry the way building it has blessed mine.

— The stewardPOS Team




📄 License

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

✅ Commercial use ✅ Modification ✅ Distribution ✅ Private use


⭐ Star this repo if you find it useful!

Special thanks to all our contributors!

Made with ❤️ and 🙏 for the glory of God

Quick StartDocumentationContributeBack to Top ↑

Star History Chart

About

Steward · Register — open-source point of sale for churches and ministry-led retail. Self-hosted, Docker-ready.

Topics

Resources

Contributing

Security policy

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages