Full-Stack Developer: Sports Bag Manufacturing Operations System
Worldwide
Project Overview Jensen Lee Corporation (jensenlee.com) is a Seattle-based sports bag manufacturer established in 1987. We custom-make duffel bags for sports teams, schools, and dealers across the US. We are modernizing our operations by replacing a legacy Microsoft Access database with a Supabase (PostgreSQL) backend and building a staff operations dashboard on top of it. The database schema is fully designed and already deployed in Supabase. All reference data (bag styles, pricing, accessories, sports, production statuses) is seeded. We have detailed design documentation. This is not a discovery project — we know exactly what we want built. We are looking for one developer to own the full stack: staff dashboard, QBO integration, UPS/USPS integration, work order PDF generation, and data migration. What's Already Done (You Don't Need to Build These) Supabase schema — fully deployed, all tables, relationships, indexes, views, and seed data in place Google Sheets order status tool — live at jensenlee.com/order-status (will be migrated to Supabase later) HTML bag builder (v11) — customer-facing tool for configuring bags, needs to be connected to Supabase Names input form — being built separately Zoho contact migration — being handled internally Design documentation — complete plain-English schema document and Fiverr deliverables list provided Tech Stack Database: Supabase (PostgreSQL) — already deployed Dashboard: React or Next.js (your recommendation welcome) Hosting: Vercel (free tier is fine for this scale) Accounting: QuickBooks Online (QBO) REST API Shipping: UPS API + USPS API PDF: react-pdf or equivalent Auth: Supabase Auth with role-based access (owner, front_desk, production roles) Deliverables 1. Staff Operations Dashboard A web application for internal staff use. Four user roles with different access levels: Owner — full access including pricing, discounts, financial reports Front Desk — order entry, customer lookup, repair entry, invoice approval Production — production events, screen library, webbing log, work orders Core features: Account and contact management (dealer vs direct customer) Organization and team management with default bag configuration per team Order entry with team config pre-fill (loads team's saved colors, style, accessories automatically) Copy-order function (specific fields carry over, others reset — documented) Production status updates per order (replaces Google Sheets backlog) Screen library management Webbing cut report (live filtered printable view for shop floor) Repair entry form with fault type tracking and salesperson sign-off gate Invoice review queue ("Ready to Invoice" — staff approves before QBO sends) Pending order follow-up queue (drafts, awaiting approval, awaiting confirmation) Reseller permit expiry alerts (90-day warning) Lead management (flat table, status tracking, convert to account) Activity log (calls, emails, tasks linked to contacts and leads) Box calculator embedded (staff selects shipping container, system calculates weight) Search behavior: When navigating between records (team → order history → back to team) the user must not lose their place. Context-preserving navigation is a hard requirement. 2. QuickBooks Online Integration OAuth2 authentication with QBO (this is the most technically complex piece — experience required) When a job reaches Complete status, auto-create a draft invoice in QBO (not sent yet) Draft invoice appears in staff "Ready to Invoice" queue Staff reviews and clicks "Approve and Send" — invoice sends to customer Auto-write production event (Invoiced) when sent Map database items to QBO item IDs (pulled via QBO Items API) Tax handling via QBO item flags (dealer items = non-taxable, direct = taxable) Map database accounts to QBO customer IDs (pulled via QBO Customers API) Support for two QBO classes: Dealer and Direct 3. UPS + USPS API Integration Rate quote based on order weight (calculated from bag quantities × bag weights) + staff-selected box/mailer dimensions Label generation from job record Tracking number auto-saved to job record Auto-write Shipped production event when label generated Support for: UPS Jensen Lee account, UPS customer 3rd-party account billing, USPS FedEx: customer provides label, staff enters tracking number manually (no FedEx API needed) Carrier and customer UPS account number stored at account level, pre-fills on new jobs 4. Work Order PDF Generation Three-copy PDF per order, printed for shop floor distribution. Must closely match our existing paper format (sample provided). Yellow copy (cutters) highlights: Job number, School/Group, Team name Each order line: Style, Qty, Body color, End color, Side color Orange copy (screen printing) highlights: Job number, School/Group End print colors, Side print colors Which panels get printed Screen numbers (once assigned by production staff) Green copy (heat press/names) highlights: Job number, School/Group Names/numbers with font and color Side-B content description Names list if ≤3 names, otherwise "see names file" 5. Access Data Migration Script One-time import of historical data from Microsoft Access (.accdb) into Supabase. Mapping documented: tblOrganization → account + organization tblOrganizationTeamName → team (cleaned during import, ambiguous splits flagged) tblJob → job tblOrderHeader → order_header (Names text field → legacy_notes, no cleanup needed) tblOrderDetail → order_line tblOrderDetailMisc → order_misc tlkpStatus → remapped to new order_status sequence RepairLog.xlsx → order_header (order_type = repair) Screen_Library.xlsx → screen_design + screen tables Known gaps: Team default configs, reseller permits, screen-to-order history, mockup files — all start fresh. QBO customer ID mapping handled separately via API. 6. Customer Approval Workflow Each order gets a unique confirmation number (e.g. JL-K7X4M2) and a UUID approval token Approval link: jensenlee.com/approve?token= followed by the unique token Approval page shows mockup PDF, T&C text (versioned — snapshot stored on order), approval form Customer enters name, clicks approve System records: approved_at timestamp with timezone, approved_by name and email, IP address, T&C version Order status moves to Customer Approved Staff dashboard shows newly approved orders in confirmation queue 7. Reports All queryable from the staff dashboard: Lapsed customer report — accounts that ordered a specific sport in previous seasons but not current season. One-click follow-up task creation. Sport-based revenue and volume — by sport, time period, dealer vs direct Price what-if analysis — re-price historical orders against a proposed price list without touching real data Sales history by account — full order history, mockup gallery, team configs. Flat view, no drilling. Repair fault tracking — factory vs customer damage ratio over time, by repair area Lead conversion report — leads by status, source, sport, time to convert Activity log / follow-up task list — flat view sorted by follow-up date 8. Order Status Website Update (Minor) Update existing order status tool (jensenlee.com/order-status) to query Supabase instead of Google Sheets Search by customer confirmation number instead of internal job number This is a small change to an existing working HTML tool — not a rebuild What We Will Provide Complete Supabase project access (URL, publishable key, service role key) Plain-English schema document (detailed description of every table and field) SQL schema file (already deployed — for your reference) Sample work orders (PDF) showing current print format Access database file (.accdb) for migration Repair log spreadsheet (Excel) Screen library spreadsheet (Excel) Bag builder HTML (v11) — for reference and connection Price sheets (PDF) — dealer and direct QBO sandbox account access for testing UPS developer account access Prompt responses to questions — owner is technical and involved Our Business Context ~500 orders per year, growing Two customer types: dealers (sporting goods stores ordering for multiple schools) and direct customers (schools/teams buying direct) 21 employees, small shop floor operation Key staff who will use the system: owner, 2 front desk staff, 1 production manager Current pain point: duplicate data entry between Access and QuickBooks Online, manual spreadsheet tracking of production status Questions We Want You to Answer in Your Proposal Have you built QBO OAuth2 integrations before? Can you share an example or describe the approach? What React/Next.js patterns do you use for role-based dashboards? Have you worked with Supabase before? How do you handle RLS policies? What is your estimated timeline broken into phases? What is your total budget estimate, and how would you phase the payments? What questions do you have about the project? Budget and Timeline Budget: $2,000–5,000 depending on experience and approach Timeline: Looking to have core features (dashboard + QBO) working within 3–4 weeks Engagement type: Fixed price preferred, milestone-based payments
- Less than 30 hrs/weekHourly
- 1-3 monthsDuration
- ExpertExperience Level
- Remote Job
- Ongoing projectProject Type
Skills and Expertise
Activity on this job
- Proposals:10 to 15
- Last viewed by client:yesterday
- Interviewing:5
- Invites sent:0
- Unanswered invites:0
About the client
- United States8:07 PM
- Manufacturing & ConstructionMid-sized company (10-99 people)
Explore similar jobs on Upwork
How it works
Create your free profileHighlight your skills and experience, show your portfolio, and set your ideal pay rate.
Work the way you wantApply for jobs, create easy-to-by projects, or access exclusive opportunities that come to you.
Get paid securelyFrom contract to payment, we help you work safely and get paid securely.
About Upwork
- 4.9/5(Average rating of clients by professionals)
- G2 2021#1 freelance platform
- 49,000+Signed contract every week
- $2.3BFreelancers earned on Upwork in 2020
Find the best freelance jobs
Growing your career is as easy as creating a free profile and finding work like this that fits your skills.
Trusted by