Table of Contents
App Overview
This app helps L & N Diesel manage customers, track vehicle registrations, and send reminders when plates are about to expire. It also includes a two-way SMS inbox so you can communicate with customers directly.
Customer Database
Store names, phone, email, notes
Vehicle Tracking
VIN, plates, expiration dates
Reminders
SMS & email when plates expire
SMS Inbox
Receive & reply to messages
Dashboard
See expiring plates at a glance
Auto Backup
Daily backup to cloud (DB + CSV)
Activity Log
Track who did what and when
Appointments
View, manage, confirm bookings
Online Booking
Customers book appointments online
Cost Estimate
Monthly SMS & hosting costs
CSV Import
Restore data from exported files
Getting Started
When you open the app, you'll be asked for an access code. Enter the code to unlock the app. The code is shared among staff â ask the owner if you don't have it.
Once inside, you'll see:
- Dashboard cards at the top â total customers, expiring this month, next month, already expired
- Search & filter bar â find customers by name, phone, VIN, or plate
- Customer table â all your customers with quick actions
Managing Customers
Adding a Customer
- Click the + Add Customer button
- Fill in first name, last name (required), phone, email, and notes
- Add one or more vehicles (see Vehicles section below)
- Click Save Customer
Editing a Customer
Click the Edit button on any customer row. Make changes and save. You can add/remove vehicles here too.
Viewing Details
Click the customer's name (it's a link) to open a read-only detail view showing all their info and vehicles.
Deleting a Customer
Click Delete on the customer row. You'll be asked to confirm. This removes the customer and all their vehicles permanently.
Searching & Filtering
- Search box â searches name, phone, email, VIN, plate, year, make, model all at once
- Month/Year filter â show only customers with plates expiring in a specific month
- "Expiring This Month" button â quick filter for urgent ones
- Sort dropdown â sort by newest, name A-Z, or plate expiration date
Exporting Data
Go to Settings â Export CSV to download all customer and vehicle data as a spreadsheet file.
Vehicles & VIN Decode
Each customer can have multiple vehicles. When adding or editing a customer:
- Click + Add Vehicle to add a vehicle entry
- Enter the license plate and plate expiration date (required)
- Enter the VIN (17 characters) and click Decode VIN â the year, make, and model will auto-fill
Click the à button on a vehicle entry to remove it.
Appointments
Click đ Appointments in the header to view and manage all appointments. The page splits into Upcoming (pending/confirmed) and Past/Completed (completed, cancelled, no-show).
Viewing Appointments
- Each row shows: date, time, customer name, phone, service, vehicle, and status
- Use the date picker and status filter to narrow results
- Appointments from the online booking page appear here automatically
Changing Status
Use the status dropdown on each row to change between: Pending, Confirmed, Completed, Cancelled, No-Show.
- Changing to Completed, Cancelled, or No-Show moves the appointment to the "Past" section
- Changing to Cancelled automatically sends an SMS to the customer notifying them of the cancellation
Sending Reminders
If a customer opted in for SMS reminders when booking, you'll see a đą button. Click it to send a reminder SMS immediately.
Deleting Appointments
Click the đ trash icon to permanently delete an appointment. You'll be asked to confirm.
Appointment Settings
Click the â Settings button (orange) to open the settings panel:
- Auto-confirm new online bookings â when on, new bookings come in as "Confirmed" instead of "Pending", and an SMS confirmation is sent immediately to the customer
- Enable auto reminders â automatically sends SMS reminders the day before to all customers who opted in. Choose the time (7 AM â 12 PM)
Time Slot Logic
When customers book online, time slots follow these rules:
- Slots are 20-minute intervals from 8:30 AM to 3:10 PM
- VIN Verification can share a time slot with one other service (max 1 VIN per slot)
- All other services need the slot to have no other non-VIN service booked (but can coexist with a VIN)
- In practice: each slot allows 1 VIN + 1 other service, but never 2 of the same type
- Saturdays: reduced hours (8:30 AM â 12:00 PM only)
- Sundays: closed, no slots available
Online Booking
The separate booking app (book.tridiep.uk) allows customers to schedule appointments online. It connects to this app via API.
How It Works for Customers
- Customer enters their name, email, and phone number
- Selects a preferred date and service (prices shown in dropdown)
- Available time slots appear â they pick one
- Optionally enters VIN (auto-decodes to fill year/make/model) and vehicle info
- Checks the SMS reminder box if they want a day-before reminder
- Submits the booking
What Happens Behind the Scenes
- Customer lookup â the system checks by phone number, then email, to see if they're already in the database
- New customer â if not found, creates a new customer record with note "Added via online booking"
- Name mismatch â if the phone matches an existing customer but the name is different, a note is added to the appointment: "Name mismatch: booked as [name]"
- Vehicle â if VIN or vehicle info is provided, it's added to the customer's vehicles (skips duplicates by VIN or plate)
- Auto-confirm â if enabled in settings, the appointment is set to "Confirmed" and an SMS confirmation is sent immediately
Managing Services & Pricing
The services and prices shown in the booking dropdown are managed via API. Default services include:
- VIN Verification â $25
- Light Duty Diesel Vehicle â $60
- VW & Audi (With Traction Control Bypass) â $65
- Sprinter Van â $75
- All Wheel Drive (AWD) â $90
- VW & Audi (Without Traction Control Bypass) â $90
- Heavy Duty Diesel Vehicle â $100
- DPF Regeneration â $150
- General Diesel Repair â price varies
To update prices or add/remove services, use the API endpoints:
- GET /api/booking-services/all â view all services
- POST /api/booking-services â add a new service
- PUT /api/booking-services/:id â update name, price, or deactivate
- DELETE /api/booking-services/:id â remove a service
Sending Reminders
The app can send SMS and/or email reminders to customers whose plates are expiring.
Send to a Single Customer
- Click the đŠ button on the customer's row
- Choose SMS, Email, or Both
- Edit the message if needed (it auto-fills with their name and vehicle info)
- Click Send
Send to Multiple Customers (Bulk)
- Use checkboxes to select customers, then click "Send to Selected"
- Or click đŠ Send Reminders in the toolbar to send to all expiring customers
- Choose the target group: this month, next 30 days, or currently displayed
- Choose SMS, Email, or Both
- Optionally write a custom message
- Click Send Reminders
SMS Inbox
When customers reply to your SMS reminders, their messages appear in the inbox.
Opening the Inbox
Click đ¨ Inbox in the top-right header. A badge shows the number of unread messages.
Reading & Replying
- Click a conversation to open the full thread
- Type your reply at the bottom and click Send Reply
- Your sent messages appear on the right side (blue bubbles)
Composing a New Message
Click + New Message in the inbox, enter a phone number and message, then send.
Managing Messages
- Mark All Read â clears all unread badges
- Delete All â removes all inbox messages (cannot undo)
- đ button â delete an individual conversation (hover to reveal)
- Unread only checkbox â filter to just unread conversations
SMS Opt-In / Opt-Out
Each customer has an SMS status that controls whether they receive text reminders.
How It Works
- New customers are opted in by default (they gave you their phone number at the shop)
- Opted-out customers are automatically skipped when you send bulk reminders
- You'll see a green "Opted In" or red "Opted Out" badge in the customer detail view
Automatic Detection
If a customer replies to your SMS with any of these keywords, their status changes automatically:
- Opt out: STOP, UNSUBSCRIBE, CANCEL, QUIT, OPT OUT
- Opt back in: START, UNSTOP, SUBSCRIBE, OPT IN
Manual Override
You can also toggle the status manually:
- Click Edit on the customer
- Check or uncheck the "SMS Opted Out" checkbox
- Save
Monthly Cost Estimate
The app tracks all SMS messages sent and received to give you an estimated monthly cost breakdown. Find it in Settings â Monthly Cost Estimate.
What's Included
| SMS Sent | $0.00849 per message | Reminders + inbox replies |
| SMS Received | $0.0075 per message | Customer replies |
| Phone Number | $1.00/month | AWS phone lease |
| Hosting | $5.00/month | Railway server |
How It Tracks
- Outbound SMS â logged every time you send a reminder or reply from the inbox
- Inbound SMS â logged every time a customer message arrives via the inbox
- Counts reset each month automatically
- Previous month's total is shown for comparison
Activity Log
The app logs every important action for accountability and troubleshooting. Find it in Settings â Activity Log.
What's Tracked
- đ Login â every time someone enters the access code
- đĢ Failed login â wrong code attempts (with IP address)
- đ¤ Customer created/edited/deleted â all customer changes
- đŠ Reminders sent â bulk sends with count
- âŠī¸ SMS reply â replies from the inbox
- đ CSV export / đĨ CSV import â data moves
- âī¸ Settings updated â config changes
What's Shown
Each entry shows the time, action description, and IP address of who did it. Entries are paginated (30 per page) and sorted newest-first.
Settings
Click âī¸ Settings in the header to access:
- Business Info â name, phone, email, address (used in reminder messages)
- SMS Template â default message for text reminders
- Email Template â default message for email reminders
- Email Subject â subject line for email reminders
Use these placeholders in templates:
- {name} â customer's first name
- {business} â your business name
- {phone} â your business phone
- {vehicles} â list of their expiring vehicles
Data Backup
The app automatically backs up your database to cloud storage (Amazon S3) every 24 hours. Each backup includes:
- SQLite database file (.db) â full database for fast restore
- CSV export (.csv) â human-readable, can be imported into any system
This means:
- If the server crashes, your data can be restored from either format
- You don't need to do anything â it's automatic
- A backup also runs every time the app starts
- Click "Backup Now" in Settings to trigger a manual backup anytime
Restoring from CSV
- Download
customers-latest.csvfrom your S3 bucket - Go to Settings â Import CSV
- Select the file and confirm
- Duplicates (same phone/email) are automatically skipped
customers-2026-07-21T14-30.db) so you have a history. The latest files always point to the most recent backup.Tips & Shortcuts
- Quick search â just start typing in the search box, results update after 2 characters. Searches name, phone, email, VIN, plate, year, make, and model.
- Press Enter in the search box to search immediately
- Phone formatting â the app auto-formats phone numbers as you type: (720) 527-3445
- VIN must be 17 characters â if it's shorter, it won't decode
- Plate expiration is the most important field â that's what drives the reminder system
- Dashboard cards â the "Expiring This Month" number matches the filter button
- CSV export includes all customers and vehicles â useful for external reports or printing
- CSV import skips duplicates automatically â safe to re-import without creating double entries
- SMS opt-out is automatic â if a customer texts STOP, they won't get reminders anymore
- Inbox conversations are grouped by phone number â shows "⊠You:" when you were the last to reply
- Activity log tracks all actions with IP addresses â check Settings to see recent activity
- Cost estimate in Settings updates in real-time based on actual SMS usage
- The app works on phones â the layout adapts for mobile use at the shop