Commit Graph
100 Commits
Author SHA1 Message Date
soconnorandClaude Sonnet 4.6 0ba9c2f029 refactor: simplify register page to single centered card
Remove two-column hero layout, matching the signin page style.
Compact centered card: logo, heading, name/email/password form, footer.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-10 02:35:33 -04:00
soconnorandClaude Sonnet 4.6 02a951817c refactor: simplify signin page to single centered card
Remove two-column hero layout. Page is now a compact centered card:
logo, "Welcome back" heading, email/password form, and footer links.
Eliminates the left panel background mismatch issue.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-10 02:33:12 -04:00
soconnorandClaude Sonnet 4.6 3983724866 fix: restore authentik trusted origin and remove auth card U-border shadow
- Auto-derive trusted origin from AUTHENTIK_ISSUER URL so OAuth callbacks
  are accepted without requiring a separate AUTHENTIK_ORIGIN env var
- Remove leftover ssoProvider schema mapping (no longer used with genericOAuth)
- Remove dead @better-auth/sso dependency from package.json
- Drop md:shadow-2xl/md:shadow-lg from auth cards — the downward box-shadow
  was rendering as a U-shaped border (bottom+sides, no top); border +
  backdrop-blur-xl provides sufficient visual separation

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-10 02:24:46 -04:00
soconnor 0e46fdafb2 feat: add administration page and account role management
- Implemented `AdministrationContent` component for managing account roles.
- Created `AdministrationPage` to serve as the main entry point for administration tasks.
- Added PDF preview functionality with `PdfPreviewFrame` component for invoice generation.
- Introduced `InputColor` component for advanced color selection with various formats.
- Established color conversion utilities in `color-converter.ts` for handling color formats.
- Defined appearance-related schemas and types in `appearance.ts` for consistent theme management.
2026-04-30 10:50:50 -04:00
soconnor ddc2b42672 Refactor invoice data table and templates page for improved readability and functionality
- Cleaned up imports and formatted code for better readability in invoices-data-table.tsx.
- Enhanced invoice interface definitions for clarity.
- Improved toast messages for bulk delete and update actions.
- Refactored date formatting and status type retrieval for better readability.
- Simplified template management in templates page, extracting TemplateList component.
- Added registration toggle based on environment variable DISABLE_SIGNUPS.
- Updated navbar to conditionally render registration link based on allowRegistration prop.
- Enhanced error handling and validation in expenses and settings routers.
- Improved PDF export footer handling.
- Updated TRPC react integration for cleaner type imports.
2026-04-29 22:49:07 -04:00
soconnor dbb739b060 refactor: update SendEmailPage layout and remove SendEmailDialog component 2026-04-28 01:30:38 -04:00
soconnor bd3181fb9d feat: add PDF preview functionality and normalize email message handling 2026-04-28 01:26:47 -04:00
soconnor 915ec103fc feat: add email message field to invoices and update related components 2026-04-28 01:06:45 -04:00
soconnor 4108019eab feat: enhance PDF generation with improved line estimation and page budgeting 2026-04-28 00:44:00 -04:00
soconnor 84a5d997b4 refactor: remove InvoiceView component and update related email and invoice handling
- Deleted the InvoiceView component to streamline the codebase.
- Updated EmailPreview and SendEmailDialog components to include currency and notes fields.
- Enhanced invoice-form to handle default hourly rates and improved item mapping.
- Refactored email template generation to include notes and currency formatting.
- Adjusted API routers for invoices to calculate totals and handle notes and currency correctly.
2026-04-28 00:34:56 -04:00
soconnor ad89ad001d feat: update Dockerfile and docker-compose.yml to use WEB_PORT variable and streamline migration process 2026-04-27 22:49:13 -04:00
soconnor 4fd6772f2e refactor: streamline Dockerfile and docker-compose.yml for improved build process 2026-04-27 22:41:57 -04:00
soconnorandCopilot fbeca7cfee feat: remove start.sh script and add appearance preferences management
- Deleted the start.sh script for container management.
- Added AGENTS.md for project guidelines and development principles.
- Introduced new SQL migration files for user appearance preferences and platform settings.
- Implemented appearance provider to manage user interface themes and preferences.
- Created branding utility to define and manage branding-related constants and types.

Co-authored-by: Copilot <copilot@github.com>
2026-04-27 22:24:43 -04:00
soconnor b582b6c88e update pdf generation to flow better 2026-04-27 14:15:06 -04:00
soconnor 00e066ca4e fix: register frutiger-bold as pdf font 2026-04-27 13:33:40 -04:00
soconnor 4214a4b4de add invoice prefixes, currency passing to pdf gen 2026-04-10 01:28:14 -04:00
soconnor af392e1bc9 remove reordering controls, add auto sort 2026-04-09 23:27:45 -04:00
soconnor fb5ffc3195 upd: upgrade dependencies and improve invoice form layout 2026-04-04 21:09:24 -04:00
soconnor 1b6dfbb460 Fix invoice edit cache invalidation issue
- Add cache invalidation after invoice create/update mutations
- Properly invalidate both getById and getAll queries
- Prevents stale data from being displayed after saving
- Fixes flaky behavior where updates didn't appear immediately
2026-01-14 13:21:49 -05:00
soconnor 01f3b408e9 upd: change plugin for oidc 2026-01-14 03:30:15 -05:00
soconnor ea9dc35323 db: push sso changes 2026-01-14 03:24:30 -05:00
soconnor 1cf3dc4d6f feat: manual account linking 2026-01-14 03:20:31 -05:00
soconnor 0696e488e6 feat: add account linking 2026-01-14 03:17:54 -05:00
soconnor 0d5aae3f1b fix: adding explicit JWKS URI to bypass discovery issues 2026-01-14 03:14:55 -05:00
soconnor ee98bc6fcb fix: redundancy for redirect 2026-01-14 03:10:10 -05:00
soconnor 9aa0179d2e fix: change domain 2026-01-14 03:05:27 -05:00
soconnor cba39f80dc fix: testing 2026-01-14 03:04:04 -05:00
soconnor c8ac5710cf fix: add trusted origins 2026-01-14 02:59:52 -05:00
soconnor b90eb6d426 fix: add issuer env 2026-01-14 02:50:57 -05:00
soconnor 07d1dd6fc3 fix: remove proxy 2026-01-14 02:47:42 -05:00
soconnor d5f337df80 fix: hide mock in prod 2026-01-14 02:36:27 -05:00
soconnor d4df1a5104 lib: update next 2026-01-14 02:34:55 -05:00
soconnor 302f3cb3f5 feat: add oidc support with authentik 2026-01-14 02:33:20 -05:00
soconnor 180f14dfb0 feat: improve invoice calendar item display and date picker icon button styling 2025-12-14 22:02:04 -05:00
soconnor 32cffa34fa feat: Enhance DatePicker and NumberInput components, refactor invoice line item UI, sort invoice items by date, and remove Vercel configuration. 2025-12-14 21:13:18 -05:00
soconnor ed0dacb435 feat: Implement a new CountUp component and refactor calendar day details to use a Sheet instead of a Dialog. 2025-12-14 02:16:29 -05:00
soconnor 91d410cbce refactor: Remove env.example, optimize invoice calendar item selection with derived state, and enhance invoice form's default hourly rate initialization and save button loading state. 2025-12-14 02:16:21 -05:00
soconnor 75c4362d97 fix: resolve all remaining type safety errors
- Create types.ts with proper TypeScript interfaces for dashboard data
- Replace all 'any' types in dashboard/page.tsx with DashboardStats and RecentInvoice
- Fix type safety in invoice-form.tsx:
  - Replace 'any' in updateItem with proper union type
  - Add generic type parameter to updateField for type safety
  - Fix status type assertion (any -> proper union type)
  - Replace || with ?? for safer null handling
- All TypeScript compilation errors resolved
- Lint down to 1 warning (false positive for 'loading' variable)
2025-12-11 20:15:29 -05:00
soconnor cf4ef928b8 fix: resolve majority of lint errors across codebase
- Remove unused imports from page.tsx, clients/page.tsx, invoices/page.tsx
- Remove unused imports from invoice-form.tsx, invoice-workspace.tsx
- Move CustomTooltip outside component in revenue-chart.tsx (fixes react-hooks/static-components)
- Fix type safety in umami.ts (any -> unknown)
- Fix type safety in sidebar-provider.tsx (add type assertion)
- Add no-op comments to empty fallback functions in animation-preferences-provider.tsx
- Fix type safety in invoice-workspace.tsx (any[] -> typed array)

Note: dashboard/page.tsx still has ~55 type safety warnings related to 'any' types
in stats/invoice data. These are pre-existing and would require significant refactoring
of the dashboard data flow to properly type. TypeScript compilation passes.
2025-12-11 20:05:34 -05:00
soconnor 50735b74ea fix: resolve lint errors in modified files
- Remove unused imports from invoice-form.tsx, sidebar.tsx, dashboard-shell.tsx
- Remove unused imports from dashboard.ts and calendar.tsx
- Fix unused parameter in invoice-calendar-view.tsx with underscore prefix
- Fix type-only import for DayButton in calendar.tsx
- All typecheck errors resolved
- Remaining lint errors are in unmodified files (pre-existing)
2025-12-11 20:01:04 -05:00
soconnor 1a3c2e08ce refactor: improve invoice editor UX and fix visual issues
- Remove clock icons and hour text from calendar month view, show only activity bars
- Fix calendar week view mobile layout (2-column grid instead of vertical stack)
- Update invoice form skeleton to match actual layout structure
- Add client-side validation for empty invoice item descriptions with auto-scroll to error
- Fix hourly rate defaulting logic with proper type guards
- Update invoice details skeleton to match page structure with PageHeader
- Fix hydration error in sidebar (div inside button -> span)
- Improve dashboard chart color consistency (draft status now matches monthly metrics)
- Fix mobile header layout to prevent text squishing (vertical stack on mobile)
- Add IDs to invoice line items for scroll-into-view functionality
2025-12-11 19:57:54 -05:00
soconnor 39fdf16280 feat: Implement a new dashboard shell with animated background, refactor dashboard data fetching into a dedicated API route, and introduce new UI components.** 2025-12-10 03:16:36 -05:00
soconnor ca6484aea5 hotfix: update next/react to patch RCE exploit 2025-12-03 20:44:07 -05:00
soconnor 77498967ec chore: update Next.js to 16.0.6 and refresh bun lockfile 2025-11-30 19:33:03 -05:00
soconnor 10d7500ef3 feat: integrate Umami analytics for client-side and server-side event tracking 2025-11-30 19:28:25 -05:00
soconnor e27877c477 fix: Ensure color theme syncs correctly by updating useEffect dependencies, refactor email base URL assignment, and add baseline-browser-mapping dependency. 2025-11-29 03:16:46 -05:00
soconnor 03579bc625 feat: Implement database persistence and synchronization for user theme preferences 2025-11-29 03:08:10 -05:00
soconnor a1c7b9223f feat: Remove Vercel Analytics, generalize deployment instructions, and switch base URL configuration to NEXT_PUBLIC_APP_URL. 2025-11-29 02:52:10 -05:00
soconnor 2fc03566d1 feat: introduce BETTER_AUTH_URL and NEXT_PUBLIC_APP_URL environment variables and update password reset link. 2025-11-29 02:47:30 -05:00
soconnor 079d9b6282 chore: Set database connection SSL configuration to false. 2025-11-29 02:39:09 -05:00
soconnor 5723ca07a8 feat: add trusted origin to authentication configuration. 2025-11-29 02:32:58 -05:00
soconnor a452526cbb refactor: Switch clone-local.sh to use local pg_dump/psql and remove an old Drizzle migration file. 2025-11-29 02:29:30 -05:00
soconnor 3ebec7aa4a refactor: migrate authentication system and update Drizzle schema. 2025-11-29 02:26:26 -05:00
soconnor c88e5d9d82 feat: Implement dynamic accent color selection and refactor appearance settings 2025-11-29 00:49:24 -05:00
soconnor 10e1ca8396 feat: Add comprehensive theme management with mode and color selectors, alongside new fonts. 2025-11-27 23:31:10 -05:00
soconnor 0809f75673 Disable ESLint during Next.js builds 2025-11-25 02:05:00 -05:00
soconnor 35ca35c28a Clean up unused imports and refactor type definitions
- Remove unused `cn` import from theme-selector - Remove unused `Slot`
import from badge - Remove unused `X` icon import from switch - Replace
empty interface extends with type alias in input - Replace empty
interface extends with type alias in textarea - Add "secondary" variant
to button type props - Replace "brand" variant with "default" in
client-list and invoice cards
2025-11-25 02:01:16 -05:00
soconnor 75ce36cf9c Update Next.js to v15.5.6 and upgrade dependencies
Bump Next.js from 15.4.5 to 15.5.6 and update related dependencies.

Also upgrade other packages to latest compatible versions including: -
Radix UI components (all minor version updates) - Tiptap editor (3.0.7 →
3.11.0) - React and React DOM (19.1.1 → 19.2.0) - TanStack Query (5.84.0
→ 5.90.10) - TypeScript and ESLint ecosystem - Tailwind CSS (4.1.11 →
4.1.17) - Various other patch and minor updates

Additionally add theme support with next-themes and multiple color
schemes (light, dark, sunset, forest).
2025-11-25 01:54:23 -05:00
soconnor a69b8f029b Improve PDF export error handling and logging
Add detailed logging for file-saver failures and fallback download
attempts. Wrap fallback logic in try-catch to handle edge cases where
manual download also fails, providing better debugging and user-facing
error messages.
2025-11-25 00:37:49 -05:00
soconnor fd6b490de1 Remove debug logging and simplify error handling 2025-11-24 21:47:47 -05:00
soconnor 843f9ceed0 Add fallback download method with MIME type handling
Implement a downloadBlob utility function that provides browser
compatibility by falling back to manual blob download when file-saver
fails. Explicitly set MIME type to application/pdf and add debugging
logging throughout the PDF generation and download process.
2025-11-24 21:47:04 -05:00
soconnor 543c553786 Update Next.js to version 15.4.2 and refactor invoice pages
- Upgrade Next.js and related packages for improved performance and security
- Refactor invoice-related pages to streamline navigation and enhance user experience
- Consolidate invoice editing and viewing functionality into a single page
- Remove deprecated edit page and implement a new view page for invoices
- Update links and routing for consistency across the dashboard
2025-08-11 22:37:40 -04:00
soconnor a270f6c1e5 Add user-controlled animation preferences and reduce motion support
- Persist prefersReducedMotion and animationSpeedMultiplier in user
profile - Provide UI controls to toggle reduce motion and adjust
animation speed globally - Centralize animation preferences via provider
and useAnimationPreferences hook - Apply preferences to charts’
animations (duration, enabled/disabled) - Inline script in layout to
apply preferences early and avoid FOUC - Update CSS to respect user
preference with reduced motion overrides and variable animation speeds
2025-08-11 17:54:53 -04:00
soconnor 46767ca7e2 Improve input validation and data sanitization
The changes add consistent string trimming, better null handling, and
improved validation logic across the business and client forms.
2025-08-11 02:48:24 -04:00
soconnor a680f89a46 Add business nickname support across app and API 2025-08-11 01:50:20 -04:00
soconnor 93ffdf3c86 Add global animation system and entrance effects to UI 2025-08-01 14:21:10 -04:00
soconnor eaf185d89e Responsive flow for mobile updates 2025-08-01 13:51:41 -04:00
soconnor 4fbb12643c Disable a11y alt-text rule for footer logo image 2025-08-01 03:49:35 -04:00
soconnor bb99809b4f Fix PDF pagination and logo rendering issues
Keep content from breaking across pages and adjust logo display in the
invoice footer. Make height calculations more conservative to avoid
content overlapping.
2025-08-01 03:48:02 -04:00
soconnor 4f249fc777 Refactor data export logic and fix whitespace in styles
The message body wasn't needed since the subject line adequately
describes the changes: refactoring the data export handling into a
separate callback function and fixing extra whitespace in CSS class
names.
2025-08-01 03:42:32 -04:00
soconnor f87cc2f295 Update defaultHourlyRate dependency array in InvoiceForm 2025-08-01 03:39:23 -04:00
soconnor 9de86df070 Fix edit invoice initialization and routing
The form initialization logic for editing invoices was improved to
handle route changes correctly. The edit link path was fixed and cache
invalidation was added to ensure fresh data on navigation.
2025-08-01 03:33:19 -04:00
soconnor 5e30d338af Prevent defaultHourlyRate from overwriting edited first item 2025-08-01 00:31:39 -04:00
soconnor e8fb8fa21c Add eslint-disable for useEffect dependency warning 2025-08-01 00:22:59 -04:00
soconnor e53d5944d0 Graph styling 2025-08-01 00:18:11 -04:00
soconnor 22bbe3a1ed Remove unused pool timeout configuration options 2025-07-31 23:13:49 -04:00
soconnor 43b8fd6c9e Use theme-aware chart colors and update color variables 2025-07-31 23:10:55 -04:00
soconnor 8c8f09dab9 Update invoice-form.tsx 2025-07-31 19:14:11 -04:00
soconnor 2eac74ea0c Default hourly 2025-07-31 19:14:01 -04:00
soconnor d9515f7723 Make hourly rate optional for clients and invoices 2025-07-31 19:11:20 -04:00
soconnor 817689001c New invoice bug fix 2025-07-31 18:54:24 -04:00
soconnor cd062d6670 Update pdf-export.tsx 2025-07-31 18:48:25 -04:00
soconnor 860693edcd Update favicon.ico 2025-07-31 18:41:10 -04:00
soconnor 2a4f78a762 Theme overhaul - missing files 2025-07-31 18:37:45 -04:00
soconnor 8a2565adad Theme overhaul 2025-07-31 18:37:33 -04:00
soconnor a1616b161d Add flashy UI animations and enhance PDF invoice layout
- Adds CSS animations for buttons, cards, icons, and text - Improves
homepage with animated elements and interactive effects - Refines PDF
export: better notes/totals layout, colors, and spacing - Updates styles
for more engaging user experience
2025-07-30 21:28:59 -04:00
soconnor 0040fae499 Use transition-colors for brand buttons
Adjust PDF export pagination for better orphan handling

Increase dense header space to 300px for PDF export

Prevent orphan pages with fewer than 2 items in PDF export
2025-07-30 20:39:06 -04:00
soconnor acc8731e09 Add confirmation dialog before sending invoice email
The commit adds a confirmation dialog when sending invoices, improves
error handling with retries, and refines email-related UI text.
2025-07-29 20:15:40 -04:00
soconnor 8cd9035f3c Add Vercel Analytics and improve PDF export layout
The main changes are: - Add Vercel Analytics to track site usage -
Improve PDF invoice layout and pagination: - Better line height and
padding for description text - Dynamic row height based on content
length - More accurate pagination calculations - Prevent orphaned items
on last page - Clean up formatting and spacing - Remove database backup
and Docker files
2025-07-29 19:48:57 -04:00
soconnor 9370d5c935 Build fixes, email preview system 2025-07-29 19:45:38 -04:00
soconnor e6791f8cb8 Update README.md 2025-07-29 19:11:34 -04:00
soconnor 51872a3277 Convert invoice view to client component
This conversion enables client-side features like delete functionality
with confirmation dialog and live data updates through React Query
2025-07-20 03:57:33 -04:00
soconnor d5f9d1f583 Add invoice deletion functionality
The changes implement deletion capabilities for invoices with proper UI
feedback and confirmation dialogs.
2025-07-20 03:51:34 -04:00
soconnor 3ac6e4d5b8 Update Next.js to version 15.4.2 and refactor invoice pages
- Upgrade Next.js and related packages for improved performance and security
- Refactor invoice-related pages to streamline navigation and enhance user experience
- Consolidate invoice editing and viewing functionality into a single page
- Remove deprecated edit page and implement a new view page for invoices
- Update links and routing for consistency across the dashboard
2025-07-18 20:18:43 -04:00
soconnor 505d47918e Colors! 2025-07-17 02:27:36 -04:00
soconnor e9eb9c03eb Badge colors! 2025-07-17 02:08:27 -04:00
soconnor 5f02bc1ff3 Refactor import page and add password change feature
This commit overhauls the invoice import UI and adds password
management. The changes:

- Replace custom import UI with reusable CSVImportPage component
- Add password change functionality with validation
- Improve form styling and accessibility
- Update import instructions for simplified CSV format
- Add client selection and validation
2025-07-16 14:40:15 -04:00
soconnor 1023bc0c2b Rebrand color scheme from emerald/green to teal/blue 2025-07-16 14:30:01 -04:00
soconnor b5784061eb Refactor clients section to use client components
The commit makes several updates to the client-related pages in the
dashboard:

- Convert client edit/new pages to client components
- Remove server-side rendering wrappers
- Update client detail page styling and layout
- Add back button to client detail page
- Fix ID param handling in edit page
- Adjust visual styles and spacing

I focused on capturing the key changes while staying within the 50
character limit for the subject line and using the imperative mood. The
subject line alone adequately describes the core change without needing
a message body.
2025-07-16 14:19:50 -04:00
soconnor 4976c13f32 Improve business details page layout and styling
The changes focus on improving the layout, styling and UX of the
business details pages by:
- Streamlining the edit page layout
- Adding consistent card styling and spacing
- Improving header structure and actions
- Enhancing content organization with separators
- Updating icon styles and colors
- Refining typography and spacing
2025-07-16 13:43:45 -04:00