// SHIP LOG

// SHIP LOG

Every change. Every week. No fluff.

Subscribe via RSS →  ·  Substack: deeper write-ups

2026-05-01

Marketing site foundation

Added the structural files for the marketing site: robots.txt (with smart-block rules for competitive intelligence scrapers like SEMRUSH and Ahrefs, while explicitly allowing Google, Bing, and AI search crawlers), llms.txt (the emerging standard for AI crawler context), and the content-strategy folder with keyword maps and page templates.

Wrote complete content briefs for the home page, pricing page, About, FAQ, Resources, and Contact, all in DealArena Team voice, all following the GEO answer-first pattern, all with proper schema markup specs. Implementation in Flask templates is the next session's work.

#2026-05-01

2026-04-30

Analytics page split + Render deploy live

Split the Analytics + Reports sections out of the Database page into a dedicated /analytics route. Cleaner mental model: Database is for browsing prospects, Analytics is for performance review. Added Analytics to the sidebar nav between Database and Outreach, plus to the Cmd+K command palette.

DealArena is now publicly accessible on Render at the production URL. Free tier hosting (sleeps after 15 min idle), $0/month operating cost during build phase. Phase 1 of the build roadmap (foundation: SQL fix + DB migration + production deploy) is officially closed.

#2026-04-30

2026-04-29

Nav redesign: sidebar + command palette + page split

Replaced the hamburger drawer + mobile bottom nav with a permanent collapsible sidebar. Added Cmd+K command palette for fast jumps between pages, prospects, and actions. Split the original cluttered main page into 4 purpose-driven pages: / (lite home dashboard), /pipeline (kanban), /discover (signals + scraper + news), /community (forum + education + leaderboard).

Each page now answers one user question. The sidebar gives always-visible navigation without consuming screen real estate when collapsed. Cmd+K turns DealArena into a power-user tool, typing "kanban" jumps you straight there.

#2026-04-29

2026-04-28

In-app notification system

Replaced every native alert() and confirm() call in the app with a custom styled notice system. Notifications now surface as toast-style cards in the corner with appropriate icons and colors per type (info, success, error, warning). Auto-dismiss after a few seconds, dismissible manually, queue-friendly.

Native browser dialogs were always going to be ugly and inconsistent across browsers. Custom notice system means we control the experience and can theme it later.

#2026-04-28

2026-04-27

P0 SQL placeholder bug fixed

Swept backend.py for SQL ? placeholders (SQLite syntax) and replaced with %s (psycopg2's required syntax). The bug was preventing about half the routes from working at runtime, including most CRUD operations, CSV import, task management, and forum pagination. Tested all affected routes against the new Neon Postgres database.

This was the highest-priority fix on the issue tracker. Without it, the app couldn't move past local development.

#2026-04-27

2026-04-26

Postgres migrated to Neon

Migrated the production database from a local Postgres instance on a personal laptop to Neon's managed Postgres service. Region: AWS US East 1 (Northern Virginia). Free tier covers the entire build phase. Connection string updated; init_db() recreated the 16-table schema fresh on first boot.

This was the unblocker for production hosting. With the database accessible from anywhere on the public internet, the app could be deployed to Render.

#2026-04-26