Skip to content

Enhance reports, budget, settings, and splits features#7

Merged
hasnaintypes merged 46 commits into
mainfrom
develop
Apr 21, 2026
Merged

Enhance reports, budget, settings, and splits features#7
hasnaintypes merged 46 commits into
mainfrom
develop

Conversation

@hasnaintypes
Copy link
Copy Markdown
Owner

This pull request introduces several major updates across the codebase, including enhancements to authentication and environment configuration, significant database schema extensions for group expense management, and the addition of new dependencies and assets. The most important changes are grouped below by theme.

Authentication and Environment Configuration:

  • Added new environment variables in .env.example to support Google OAuth, Better Auth infrastructure, field-level PII encryption, and admin email configuration. These changes make it easier to integrate third-party authentication and improve security. [1] [2] [3]
  • Updated authentication-related dependencies in package.json, including upgrades for better-auth and the addition of @better-auth/infra, jspdf, and qrcode.react. [1] [2] [3] [4]
  • Expanded the list of authentication and public paths in middleware.ts, adding support for two-factor authentication and password recovery flows.

Database Schema Extensions (Group Expenses & Auditing):

  • Extended the Prisma schema (prisma/schema.prisma) to add support for group expense tracking, including new models for Contact, Group, GroupMember, Expense, ExpenseParticipant, Settlement, and related enums (GroupType, GroupRole, SplitMethod). This enables advanced features like group expense splitting, settlements, and contact management.
  • Added models for TwoFactor (for two-factor authentication), AuditLog (for user action auditing), WaitlistEntry, and ContactMessage. Updated the User, Transaction, and Category models to reference these new entities. [1] [2] [3] [4] [5] [6] [7]

Assets and Documentation:

  • Added new SVG logo components for Excel, Gmail, and Google Calendar to the public/images/logos directory, enhancing UI integration with external services. [1] [2] [3]
  • Updated the repository URL in the README.md to the correct GitHub address and directory name, improving onboarding instructions.
  • Removed the unused Gemini logo SVG component.

hasnaintypes and others added 30 commits March 19, 2026 12:50
Replace JSON preview with type-specific React previews, add per-row PDF
export via jsPDF, create Report records from AI insights Inngest job,
export SendTemplateEmailOptions type, and update report type definitions.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Extract BudgetRadialChart, BudgetStatusBadge, and CategoryIcon into
standalone components. Redesign budget card with daily pace indicator,
remaining balance tooltip, and animated radial progress. Simplify budget
page layout by removing sidebar radar chart. Improve create budget dialog.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…categories

Remove Account and Appearance tabs, merge theme picker into display
settings with visual mockup cards. Redesign categories with CategoryIcon,
typed color badges, collapsible parent rows. Delete dead account-settings
and appearance-settings components.
Remove DefaultView redirect logic from overview page, drop the field
from onboarding state and step forms, and remove from display settings
validation schema.
Simplify BasicInfoStep props by removing account/defaultAccountId
pass-through, add inline amount input with decimal formatting, redesign
type selector with colored icons, and improve receipt step layout.
Increase section gaps, use rounded-xl cards, fix CTA and avatar group
wrapping, add top padding for navbar clearance, and allow comarch.com
images in next.config.
Apply consistent animate-in fade-in-50 space-y-12 container across
accounts, analytics, transactions, and account detail pages. Fix
account card hardcoded dark colors to use theme tokens, fix navbar logo
color for dark mode, widen profile select triggers, and standardize
transactions header typography.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…rt limit

Remove dead settings files (billing, notifications, profile, sessions).
Add export-settings with CSV download. Fix export fetch limit exceeding
Zod max(100) validation.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…lements

Add Contact, Group, GroupMember, Expense, ExpenseParticipant, and Settlement
models with supporting enums (GroupType, GroupRole, SplitMethod). Add
SPLIT_REMINDER and GROUP_EXPENSE notification types. Update User, Category,
and Transaction models with new relations.
Add Zod validation schemas for contacts, expenses, groups, and settlements
with create/update inputs. Add corresponding TypeScript types for API
responses including Contact, Expense, Group, GroupMember, and Settlement.
Add SplitService with calculateSplit (EQUAL/EXACT/PERCENTAGE/SHARES methods
with rounding correction), calculateGroupBalances, calculatePairwiseDebts,
calculateTotalBalance, simplifyDebts (greedy algorithm), and getActivityFeed
(merged expenses + settlements timeline).
Add contactRouter (list/create/update/delete with auto-link by email),
groupRouter (CRUD + members + balances + simplified debts + activity feed),
expenseRouter (CRUD with optional linked transaction), and settlementRouter
(list/create with optional linked transfer). Register all in appRouter.
Fix transactionRouter contactId/groupId to use relation connect/disconnect
syntax. Add splitSummary endpoint to overviewRouter.
…stions

Add parseExpenseFromText (natural language to structured expense data),
generateGroupInsights (spending analysis with top spender/category/trend),
and suggestSplit (pattern-based payer and method recommendation) to
aiService. Add corresponding aiRouter endpoints with rate limiting.
Add weekly split reminder (Sunday 10AM cron) that emails users about
unsettled group balances, and monthly group report (1st of month 8AM cron)
that sends per-group spending summaries. Add Handlebars email templates
for both notifications.
Add optional hideLegend prop to HorizontalBarChart component to allow
callers to suppress the redundant legend when the Y-axis already labels
each bar. Defaults to false for backward compatibility.
Add splits page with stats cards (you owe, you are owed, net balance,
active groups), tabbed groups/contacts lists with search, contact CRUD
sheet, group creation sheet with color picker and member selection,
and group cards with type badges and member avatars. Add tRPC
invalidation helpers for contacts, groups, expenses, and settlements.
Add group detail page with tabbed layout (Expenses, Charts, Settle Up).
Expenses tab shows expense list with category icons and activity feed
timeline. Charts tab shows spending radar/bar chart and member balances
horizontal bar chart. Settle Up tab shows balance summary with progress
bars and simplified debts. Add expense form sheet with AI parse, split
input with 4 methods, and settle up dialog. Add useGroupDetail hook.
Replace Accounts (Wallet icon) navigation link with Splits (Users icon)
in the main navbar to surface the new splits feature.
Add contacts (6), groups (3: Apartment, Bangkok Trip, Friday Lunches),
expenses (28 with participants and split methods), and settlements (6)
to the seed script. Clean up existing splits data before re-seeding
to support idempotent runs.
- Replace horizontal bar chart with vertical bar chart for member balances
- Add gradient coloring (green/red) and legends to balance chart
- Make chart height flexible to align with radar chart
- Convert settle up from Sheet to Dialog
- Remove extra ScrollArea spacing from settle up tab
- Add DiceBear avatars to balance/debt lists
- Remove Invoice link from dashboard header
- Change spending overview bar color to red for expenses
- Hide pagination on overview recent transactions
- Add friendly column labels in table toggle (Category instead of CategoryId)
Add Google social login, forgot-password page, upgrade better-auth to
1.5.6, and integrate @better-auth/infra dash + sentinel plugins for
analytics and security.
Update features, help, contact, changelog pages, rewrite site content,
add new integration logos, waitlist API, contact API, and WaitlistEntry
schema.
Add pagination to blog list, bigger post images, themed sidebar, cleaner
post page layout, and redesigned comment section with better UX.
Upgrade zod 3.25 -> 4.3.6 for @better-auth/infra compatibility. Fix
ZodError .errors -> .issues, .default({}) -> .default(() => ({})), and
zodResolver type casts for Zod v4.
Add encryptField/decryptField functions for selective PII encryption
at rest. Uses Node.js crypto with "enc:" prefix for encrypted values,
graceful legacy fallback for plaintext, and no-op when key is absent.
Add optional FIELD_ENCRYPTION_KEY env var (64-char hex string).
…tact router

Encrypt ContactMessage.email on write, AuditLog.ipAddress on write,
and Contact.phone on write with decryption on all read paths.
Remove phone from contact search since encrypted values cannot be
searched with SQL LIKE/contains queries.
Add TwoFactor model for TOTP-based 2FA with backup codes, AuditLog
model with indexed userId/resourceType/action/createdAt columns,
and twoFactorEnabled boolean on User model.
Add 2FA setup/disable/backup dialogs, verification page at /two-factor,
twoFactor plugin in Better Auth client and server config, enhanced
use-auth hook with 2FA state management, and security section UI
for enabling/disabling 2FA with QR code and backup codes.
Add origin validation utility in lib/security/csrf.ts, apply CSRF
checks to tRPC and waitlist routes, add IP-based rate limiting,
audit middleware on protectedProcedure for auto-logging mutations,
and admin-only waitlist export endpoint.
Add Handlebars templates for contact admin notification, contact
confirmation, and waitlist welcome emails. Fix template cache to
handle new template paths correctly.
Add OFX parser for SGML-based bank files, update bulk import dialog
to auto-detect OFX/QFX files and skip column mapping step, update
file upload step to accept OFX/QFX formats, and add OFX type to
bulk import types and transaction validation.
Add branded PDF export with jsPDF including summary stats, color-coded
amounts, and page footers. Add JSON export format, date range filtering,
and format selector to export settings UI.
…ment

Replace raw SQL in overviewRouter with Prisma findMany + JS aggregation,
add current-session detection and revokeAll in sessionRouter, add
twoFactorEnabled to user types, add phone format regex to contact
validation, and tighten transaction router input handling.
…olors

Update all 12 email templates with consistent design system using dark
theme primary green (#006239), gradient accent bar, improved typography,
and polished card layouts with rounded corners and subtle borders.
@hasnaintypes hasnaintypes self-assigned this Apr 21, 2026
@vercel
Copy link
Copy Markdown

vercel Bot commented Apr 21, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
trackit-app Ready Ready Preview, Comment Apr 21, 2026 5:19am

@hasnaintypes hasnaintypes merged commit 19cefbb into main Apr 21, 2026
5 checks passed
@github-actions
Copy link
Copy Markdown

🎉 This PR is included in version 1.3.0 🎉

The release is available on GitHub release

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant