pdo - Database connectivitypdo_pgsql - PostgreSQL drivermbstring - Multi-byte string supportjson - JSON processingcurl - API communicationfileinfo - File type detectiongd or imagick - Image processingRun the automated setup script:
chmod +x setup.sh
./setup.sh
git clone [repository-url] bookkeep-pro
cd bookkeep-pro
composer install
Create a PostgreSQL database and configure the connection:
export PGHOST=your-database-host
export PGPORT=5432
export PGDATABASE=bookkeep
export PGUSER=your-username
export PGPASSWORD=your-password
php includes/db_setup.php
php includes/seed.php
php -S 0.0.0.0:5000 -t public public/router.php
http://localhost:5000
| Service | Purpose | Required? | Where to Configure |
|---|---|---|---|
| Stripe | Payment processing, subscriptions | Optional | User Settings → Payment Settings |
| OpenAI | Receipt/invoice OCR scanning | Optional | Admin → Company Settings → AI / OCR |
| SMTP | Email sending (invoices, notifications) | Optional | Admin → Company Settings → Email |
| Google reCAPTCHA | Spam protection on forms | Optional | Admin → Company Settings → reCAPTCHA |
For payment processing and subscriptions:
For AI-powered receipt and invoice scanning:
Common SMTP settings:
| Provider | Host | Port | Encryption |
|---|---|---|---|
| Gmail | smtp.gmail.com | 587 | TLS |
| SendGrid | smtp.sendgrid.net | 587 | TLS |
| Mailgun | smtp.mailgun.org | 587 | TLS |
role='admin' in the database.
Access the admin panel at: /admin/
| Feature | Location | Description |
|---|---|---|
| Dashboard Overview | /admin/ | Stats: users, revenue, invoices, customers |
| User Management | /admin/users.php | Create, edit, delete users, assign roles, manage permissions |
| Permission Management | /admin/users.php → Shield icon | Granular permissions per user |
| Subscription Invoices | /admin/subscription-invoices.php | View subscription payments, webhook logs |
| Email Campaigns | /admin/campaigns.php | Send newsletters and announcements |
| Translation Management | /admin/translations.php | Edit translations for EN, DA, SV |
| VAT Configuration | /admin/vat.php | Manage VAT rates |
Location: /admin/company.php
| Tab | Settings Available |
|---|---|
| General | Trial period, copyright text, footer settings |
| AI / OCR | OpenAI API key for receipt scanning |
| Branding & SEO | App name, logo, favicon, meta tags |
| Social | Social media links |
| SMTP configuration | |
| Company Info | Business name, address, contact details |
| Bank Details | Bank account, IBAN, SWIFT |
| Invoice Settings | Invoice prefix, numbering, payment terms |
| Import Service | Customer import service configuration |
| reCAPTCHA | Spam protection settings |
/dashboard.php
Overview, quick stats, recent activity
/customers.php
Manage company & private customers
/vendors.php
Supplier management, expenses
/invoices.php
Create, send, track invoices
/products.php
Products, services, text items
/estimates.php
Create quotes and estimates
/accounts.php
BAS kontoplan management
/journal.php
Double-entry bookkeeping, OCR scanning
/ledger.php
Account transactions view
Location: /reports/
| Report | Path | Description |
|---|---|---|
| Reports Dashboard | /reports/ | Overview of all reports |
| Revenue Report | /reports/revenue.php | Monthly revenue with charts |
| Outstanding Invoices | /reports/outstanding.php | Aging analysis |
| Top Customers | /reports/top-customers.php | Revenue by customer |
| Profit & Loss | /reports/profit-loss.php | Income statement |
| Balance Sheet | /reports/balance-sheet.php | Assets, liabilities, equity |
| VAT Report | /reports/vat-report.php | VAT declaration |
Location: /settings.php
| Feature | Location | Description |
|---|---|---|
| Receipt/Invoice OCR | /journal.php → Scan Receipt | AI-powered document scanning |
| SIE-4 Export | /reports/ → Export | Swedish accounting export |
| SAF-T Export | /reports/ → Export | OECD standard XML export |
| VAT Export (Sweden) | /reports/vat-export-skv.php | Skatteverket XML format |
| VAT Export (Denmark) | /reports/vat-export-skat.php | SKAT XML format |
| Company Lookup | /customers.php | Auto-lookup from allabolag.se / datacvr.virk.dk |
| Multi-Company | Navigation → Company Switcher | Manage multiple companies |
| Table | Purpose |
|---|---|
| users | User accounts with roles |
| companies | Business details, VAT, bank info |
| customers | Customer records |
| vendors | Supplier/vendor management |
| products | Product catalog |
| services | Service offerings |
| invoices | Invoice headers |
| invoice_items | Invoice line items |
| payments | Payment records |
| chart_of_accounts | Account plan (BAS) |
| journal_entries | Journal entry headers |
| journal_entry_lines | Double-entry lines |
| expenses | Expense tracking |
| vat_rates | VAT rate configuration |
| translations | Multi-language strings |
| system_settings | Global settings |
Demo User: demo@bookkeep.com / demo123
Admin: Create via database or set role='admin'
Verify your PostgreSQL environment variables are set correctly:
echo $PGHOST $PGPORT $PGDATABASE $PGUSER
Ensure the uploads directory is writable:
chmod -R 755 public/uploads