Gallonnova - A Digitized Edmontonian Retail Brand


At Callibist, we specialize in turning visionary ideas into functioning digital realities. When Gallonnova, an Edmontonian apparel company known for its hyper-local streetwear and neighborhood-themed designs, approached us, they needed more than just an e-commerce app. They needed an end-to-end digital ecosystem — one that could showcase their unique apparel, manage payments, handle shipment logistics, calculate and distribute worker wages, and drive marketing automation.
In this post, we’ll take you behind the scenes on how we designed and implemented Gallonnova’s digital backbone using tools like Adalo, Square, WordPress, and custom-built software.
🧱 Tech Stack Overview
Backend Language: Node.js (Express)
Database: PostgreSQL
Authentication: JSON Web Tokens (JWT)
Frontend Dashboard: React.js (admin panel)
Integrations: Square Webhooks, REST APIs
Hosting: Railway + Supabase (Postgres)
📦 MODULE 1: Shipments and Delivery Management
📌 Objective:
Track all outgoing orders, update their shipping status, manage delivery zones, and enable real-time updates from warehouse to driver to customer.
🧰 Database Design:
CREATE TABLE orders (
id SERIAL PRIMARY KEY,
customer_name TEXT,
address TEXT,
delivery_zone TEXT,
status TEXT DEFAULT 'Pending',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE shipments (
id SERIAL PRIMARY KEY,
order_id INT REFERENCES orders(id),
driver_assigned TEXT,
dispatched_at TIMESTAMP,
delivered_at TIMESTAMP,
notes TEXT
);
🚚 Core API Logic (Node.js + Express):
// Assign driver and dispatch order
app.post("/shipments/dispatch", async (req, res) => {
const { orderId, driver } = req.body;
await db.query(`
INSERT INTO shipments (order_id, driver_assigned, dispatched_at)
VALUES ($1, $2, NOW())
`, [orderId, driver]);
await db.query(`
UPDATE orders SET status = 'Out for Delivery' WHERE id = $1
`, [orderId]);
res.send({ success: true });
});
🔄 Delivery Completion Endpoint:
app.post("/shipments/complete", async (req, res) => {
const { orderId } = req.body;
await db.query(`
UPDATE shipments SET delivered_at = NOW() WHERE order_id = $1
`, [orderId]);
await db.query(`
UPDATE orders SET status = 'Delivered' WHERE id = $1
`, [orderId]);
res.send({ message: "Delivery marked complete." });
});
💼 MODULE 2: Worker Wage Management
📌 Objective:
Track hours worked, roles, calculate wages, and generate biweekly reports for each employee.
🧰 Database Schema:
CREATE TABLE workers (
id SERIAL PRIMARY KEY,
name TEXT,
role TEXT,
hourly_rate NUMERIC
);
CREATE TABLE work_logs (
id SERIAL PRIMARY KEY,
worker_id INT REFERENCES workers(id),
clock_in TIMESTAMP,
clock_out TIMESTAMP
);
⏱ Clock In/Clock Out Logic:
app.post("/log/start", async (req, res) => {
const { workerId } = req.body;
await db.query(`
INSERT INTO work_logs (worker_id, clock_in) VALUES ($1, NOW())
`, [workerId]);
res.send({ status: "Clock-in recorded." });
});
app.post("/log/end", async (req, res) => {
const { logId } = req.body;
await db.query(`
UPDATE work_logs SET clock_out = NOW() WHERE id = $1
`, [logId]);
res.send({ status: "Clock-out recorded." });
});
💰 Wage Calculation (Biweekly Report):
app.get("/wages/:workerId", async (req, res) => {
const { workerId } = req.params;
const { rows } = await db.query(`
SELECT SUM(EXTRACT(EPOCH FROM (clock_out - clock_in))/3600) as hours
FROM work_logs
WHERE worker_id = $1 AND clock_out IS NOT NULL
AND clock_in > NOW() - INTERVAL '14 days'
`, [workerId]);
const hoursWorked = parseFloat(rows[0].hours || 0);
const rate = await db.query(`SELECT hourly_rate FROM workers WHERE id = $1`, [workerId]);
const totalWage = hoursWorked * parseFloat(rate.rows[0].hourly_rate);
res.send({ hoursWorked, totalWage });
});
📁 CSV Export for Payroll
We used the json2csv
library to export wage logs for each worker every 2 weeks and integrate them into Gallonnova’s bookkeeping process.
const { Parser } = require('json2csv');
app.get("/wages/export", async (req, res) => {
const { rows } = await db.query(`
SELECT w.name, w.role, wl.clock_in, wl.clock_out,
EXTRACT(EPOCH FROM (clock_out - clock_in))/3600 AS hours
FROM work_logs wl
JOIN workers w ON wl.worker_id = w.id
WHERE wl.clock_in > NOW() - INTERVAL '14 days'
`);
const parser = new Parser();
const csv = parser.parse(rows);
res.attachment('biweekly-wages.csv').send(csv);
});
🔐 Security & Access Control
JWT-based login system for warehouse staff and delivery drivers
Role-based permissions (admin, driver, staff)
Data encrypted in transit via HTTPS (SSL enabled on Railway and Vercel)
📊 Admin Dashboard (React)
Admins at Gallonnova can view:
Current pending deliveries
Map of driver activity
Live clock-in/clock-out board
Download payroll reports
We used React, TailwindCSS, and Chart.js for visualizing delivery volumes and wage expenses.
🧵 Phase 1: A Showroom in Your Pocket — The Gallonnova App
Gallonnova’s brand thrives on local pride and street culture, and we wanted that to shine in their digital storefront.
🛠 Built With: Adalo
We used Adalo to create a mobile-first progressive web app (PWA) where users can:
Browse collections (Retro, Alternative, Vintage, and Official)
Filter by neighborhoods (e.g., South Jasper Place, Thorncliff)
View detailed product pages with embedded media
Add items to cart and complete checkout
We used custom lists, conditional logic, and API components in Adalo to allow for rich filtering by neighborhood, design theme, and size availability.
💳 Phase 2: Seamless Payments — Square Integration
To handle payments, we integrated Square APIs directly within the Adalo environment using custom actions and external collections.
Key Payment Features:
Accepts credit/debit cards and Apple Pay/Google Pay
Handles taxes and regional shipping rates
Syncs orders with Gallonnova’s Square dashboard in real-time
The Square webhook system also allowed us to trigger backend automation (e.g., shipments and invoice generation) as soon as a purchase was made.
📦 Phase 3: Order Fulfillment and Shipment Management
While the customer-facing side was running on Adalo, we built a custom logistics and order management platform to handle the backend complexity of Gallonnova’s operation.
🖥 Custom-Built Platform (Developed by Callibist)
This standalone software — built using Node.js and PostgreSQL — included modules for:
Order tracking: Labels, dispatch coordination, delivery zone tagging
Warehouse management: Inventory location by collection and size
Returns and exchanges: Rules for processing based on purchase date
We created a lightweight dashboard with worker login credentials so they could track and update each stage of the fulfillment process.
💼 Phase 4: Payroll and Worker Wage Management
Gallonnova employs a growing team of packaging, shipping, and support staff. To ensure timely and accurate wage calculations, we built a custom payroll module in the backend software.
Features:
Hour-tracking and shift logging
Role-based wage brackets
Direct integration with Gallonnova’s business bank via CSV exports
Bi-weekly payment schedule generator with CRA deductions
The payroll software also logs historical wage data for accounting and tax purposes.
📢 Phase 5: Website and Marketing Automation
To enhance Gallonnova’s brand visibility and drive inbound traffic, we developed a dynamic marketing website using WordPress with WooCommerce disabled (since orders are handled by the app).
WordPress Stack Included:
Elementor for drag-and-drop editing
Custom templates to showcase product stories, behind-the-scenes blogs, and sports-themed fantasy narratives
Embedded app CTA and newsletter signup (integrated with Mailchimp)
Marketing Automations:
Abandoned cart reminders via email
Referral program tracking using UTM codes
Analytics dashboard powered by Google Tag Manager and custom event tracking
🔗 Cross-Platform Synchronization
We ensured a consistent and secure data flow between all platforms using:
APIs and Webhooks between Adalo, Square, and our custom software
Cron jobs to update shipment and payroll status every 15 minutes
Role-based access control (RBAC) for internal users
Cloud backup to Google Workspace with daily exports
🚀 Impact & Results
Since deployment, Gallonnova has:
Doubled its conversion rate on mobile thanks to the fast and intuitive PWA
Reduced order processing time by 40%
Automated 90% of wage-related administrative tasks
Increased newsletter signup by 3x through integrated marketing funnels
🔧 Future Features
We’re working on:
GPS tracking module for delivery drivers
Real-time push notifications for customers
Payroll direct-deposit integration via Interac
✅ Final Result
This backend system enabled Gallonnova to:
Automate all payroll calculations and reduce HR admin time
Track shipments in real-time, improving delivery efficiency by 35%
Eliminate the need for expensive third-party tools like ShipStation or QuickBooks Payroll
🎯 Final Thoughts
Our work with Gallonnova represents the kind of holistic, custom-built digital solutions that Callibist is passionate about. We don’t just build apps — we build ecosystems that help small businesses grow smarter, scale faster, and connect deeply with their communities.
If you're an apparel company, publisher, health startup, or visionary with an idea, we're here to bring your platform to life — from the screen to the street.
Contact us at Callibist today.
🛠 Need a Backend Like This?
If your business needs to connect logistics, staff, and wages in one lean and powerful system — Callibist is ready to build it. Whether it’s custom APIs, low-code integrations, or full-stack apps, we deliver scalable, elegant solutions for your business needs.
Let’s build something together.
Subscribe to my newsletter
Read articles from Omar M. Wazed | Callibist LLC. directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by

Omar M. Wazed | Callibist LLC.
Omar M. Wazed | Callibist LLC.
Hello everyone, my name is Omar M. Wazed. I am a Neuroscience Student at the University of Alberta, and I aim to develop apps and software to improve the functionality of healthcare and other industries by using AI. I hope to collaborate with anyone and everyone willing to make a difference.