Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
46 commits
Select commit Hold shift + click to select a range
05bd9e5
feat(reports): add report preview component and PDF export
hasnaintypes Mar 19, 2026
2d7d56a
feat(budget): redesign budget cards with radial chart and status badges
hasnaintypes Mar 19, 2026
7a557cc
refactor(settings): consolidate to two tabs and redesign display and …
hasnaintypes Mar 19, 2026
ba6a44f
refactor(settings): remove DefaultView from entire app
hasnaintypes Mar 19, 2026
84300f0
refactor(transaction): redesign form steps layout
hasnaintypes Mar 19, 2026
23d460d
refactor(about): improve hero section layout and spacing
hasnaintypes Mar 19, 2026
63c1400
refactor(ui): unify page containers and fix theme inconsistencies
hasnaintypes Mar 19, 2026
b8cfca7
refactor(charts): add dual/horizontal bar charts and improve existing…
hasnaintypes Mar 19, 2026
eac3ffd
refactor(analytics): redesign page with category bar chart, top expen…
hasnaintypes Mar 19, 2026
44001bd
refactor(overview): sort pie chart categories by value and limit to t…
hasnaintypes Mar 19, 2026
94a9bfd
refactor(charts): add loading skeletons and improve chart tooltips
hasnaintypes Mar 20, 2026
b6d241f
refactor(analytics): wire loading states and monthly granularity
hasnaintypes Mar 20, 2026
47659b9
refactor(pages): update overview, accounts, and clean up unused budge…
hasnaintypes Mar 20, 2026
2be0bab
refactor(settings): consolidate settings with export tab and fix expo…
hasnaintypes Mar 20, 2026
48194a8
refactor(onboarding): remove theme selection from onboarding flow
hasnaintypes Mar 20, 2026
f0aeb56
refactor(reports): improve report preview formatting
hasnaintypes Mar 20, 2026
21c78bd
feat(db): add transaction seed script
hasnaintypes Mar 20, 2026
3644cd5
feat(db): add splits schema with contacts, groups, expenses, and sett…
hasnaintypes Mar 25, 2026
2235cad
feat(splits): add validation schemas and TypeScript types
hasnaintypes Mar 25, 2026
88a6074
feat(splits): add split calculation service
hasnaintypes Mar 25, 2026
d38c109
feat(splits): add CRUD routers and overview integration
hasnaintypes Mar 25, 2026
e4eaf76
feat(splits): add AI expense parsing, group insights, and split sugge…
hasnaintypes Mar 25, 2026
3144851
feat(splits): add scheduled reminders and email templates
hasnaintypes Mar 25, 2026
e1d68bf
refactor(charts): add hideLegend option to horizontal bar chart
hasnaintypes Mar 25, 2026
9d25774
feat(splits): add splits list page with contacts and groups UI
hasnaintypes Mar 25, 2026
f427d30
feat(splits): add group detail page with expense tracking and charts
hasnaintypes Mar 25, 2026
fc5ee6a
refactor(nav): replace accounts with splits in navbar
hasnaintypes Mar 25, 2026
08a9963
feat(db): extend seed script with splits sample data
hasnaintypes Mar 25, 2026
3c82276
refactor(ui): improve splits charts, settle dialog, overview tweaks
hasnaintypes Mar 26, 2026
73107db
feat(auth): add Google OAuth, forgot password, and Better Auth infra
hasnaintypes Mar 26, 2026
3e2640e
refactor(email): rewrite email templates with consistent design
hasnaintypes Mar 26, 2026
f60138c
refactor(onboarding): redesign step forms with SettingRow pattern
hasnaintypes Mar 26, 2026
91998a3
refactor(ui): update public pages, site content, and components
hasnaintypes Mar 26, 2026
9771e96
refactor(blog): improve blog listing, post page, and comment section
hasnaintypes Mar 26, 2026
044942a
refactor: remove about page and all related components
hasnaintypes Mar 26, 2026
713880c
feat(deps): upgrade zod to v4 and fix breaking changes
hasnaintypes Mar 26, 2026
d01a089
feat(security): add AES-256-GCM field-level encryption utility
hasnaintypes Mar 27, 2026
2150273
feat(security): encrypt PII fields at rest in contact, audit, and con…
hasnaintypes Mar 27, 2026
1fe45a1
feat(schema): add TwoFactor, AuditLog models and twoFactorEnabled field
hasnaintypes Mar 27, 2026
76ab19f
feat(auth): implement TOTP-based two-factor authentication
hasnaintypes Mar 27, 2026
a979c08
feat(security): add CSRF protection, rate limiting, and audit middleware
hasnaintypes Mar 27, 2026
574277c
feat(email): add contact and waitlist email templates with cache fix
hasnaintypes Mar 27, 2026
4ffd4e9
feat(import): add OFX/QFX bank file import support
hasnaintypes Mar 27, 2026
8299265
feat(export): enhance export with PDF support and date range filtering
hasnaintypes Mar 27, 2026
e79ed14
refactor(routers): harden input validation and improve session manage…
hasnaintypes Mar 27, 2026
3845739
refactor(email): redesign all email templates with dark theme brand c…
hasnaintypes Apr 21, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,13 @@ DATABASE_URL="postgresql://postgres:password@localhost:5432/trackit-saas"
BETTER_AUTH_SECRET="your_secret_here"
BETTER_AUTH_URL="http://localhost:3000"

# Google OAuth (optional — enables "Continue with Google")
GOOGLE_CLIENT_ID="your_google_client_id"
GOOGLE_CLIENT_SECRET="your_google_client_secret"

# Better Auth Infrastructure (optional — dashboard + security)
BETTER_AUTH_API_KEY="your_better_auth_api_key"

# ──────────────────────────────────────────────
# Email - Primary: Resend (optional, needs paid plan)
# ──────────────────────────────────────────────
Expand All @@ -41,6 +48,7 @@ SMTP_PORT=587
SMTP_USER="you@gmail.com"
SMTP_PASS="your_app_password"
SMTP_FROM="Trackit <you@gmail.com>"
ADMIN_EMAIL="admin@yourdomain.com"

# ──────────────────────────────────────────────
# AI (Google Gemini) — server-side only
Expand Down Expand Up @@ -76,3 +84,10 @@ NEXT_PUBLIC_BETTER_STACK_LOG_LEVEL="debug"
# ──────────────────────────────────────────────
UPSTASH_REDIS_REST_URL="your_upstash_redis_rest_url"
UPSTASH_REDIS_REST_TOKEN="your_upstash_redis_rest_token"

# ──────────────────────────────────────────────
# Field-Level PII Encryption (optional)
# ──────────────────────────────────────────────
# 256-bit hex key for AES-256-GCM encryption of PII fields.
# Generate with: node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"
FIELD_ENCRYPTION_KEY=""
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,8 +51,8 @@ A personal finance SaaS for bank account management, transaction tracking, hiera
### 1. Clone and Install

```bash
git clone <repo-url>
cd trackit-saas
git clone https://github.com/hasnaintypes/trackit-app.git
cd trackit-app
pnpm install
```

Expand Down
3 changes: 2 additions & 1 deletion middleware.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,14 @@ const AUTH_PATHS = [
"/sign-in",
"/sign-up",
"/reset-password",
"/forgot-password",
"/verify-success",
"/two-factor",
];

// Public pages under src/app/(public)
const PUBLIC_PATHS = [
"/",
"/about",
"/blog",
"/changelog",
"/contact",
Expand Down
5 changes: 5 additions & 0 deletions next.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,11 @@ config.images = {
hostname: "randomuser.me",
pathname: "/api/portraits/**",
},
{
protocol: "https",
hostname: "www.comarch.com",
pathname: "/**",
},
],
};

Expand Down
7 changes: 5 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
"prepare": "husky install"
},
"dependencies": {
"@better-auth/infra": "^0.1.13",
"@google/generative-ai": "^0.24.1",
"@hookform/resolvers": "^5.2.2",
"@logtail/next": "^0.2.1",
Expand Down Expand Up @@ -68,7 +69,7 @@
"@tsparticles/slim": "^3.9.1",
"@upstash/ratelimit": "^2.0.8",
"@upstash/redis": "^1.37.0",
"better-auth": "^1.3.27",
"better-auth": "^1.5.6",
"class-variance-authority": "^0.7.1",
"clsx": "^2.1.1",
"cmdk": "^1.1.1",
Expand All @@ -81,13 +82,15 @@
"hast-util-sanitize": "^5.0.2",
"inngest": "^3.18.0",
"input-otp": "^1.4.2",
"jspdf": "^4.2.1",
"lucide-react": "^0.545.0",
"motion": "^12.23.24",
"next": "15.5.9",
"next-themes": "^0.4.6",
"nodemailer": "^8.0.2",
"pg": "^8.16.3",
"prismjs": "^1.30.0",
"qrcode.react": "^4.2.0",
"radix-ui": "^1.4.3",
"react": "^19.2.4",
"react-day-picker": "^9.11.3",
Expand All @@ -106,7 +109,7 @@
"superjson": "^2.2.1",
"tailwind-merge": "^3.3.1",
"vaul": "^1.1.2",
"zod": "^3.24.2"
"zod": "^4.3.6"
},
"devDependencies": {
"@eslint/eslintrc": "^3.3.1",
Expand Down
Loading
Loading