Saldoo

Track spending fast, stay in control every day.

Saldoo is a web-based personal expense tracker for students and young adults who want a simple, secure way to manage money. Users can register, log in, add income and expenses, review transaction history, and instantly see their total balance, income, and spending in one dashboard. The product emphasizes account-level data isolation, session persistence, and lightweight preference storage with cookies.

Business Goals

  • Reach 1,000 registered users within 90 days of launch with at least 35% weekly active usage.
  • Convert at least 60% of registered users to complete their first transaction within 10 minutes of signup.
  • Maintain a 30-day user retention rate of 25% or higher in the first 6 months.
  • Keep authentication and dashboard uptime at 99.9% monthly to build trust in a finance product.

User Goals

  • Let users create an account and sign in securely within minutes.
  • Help users log income and expenses with minimal effort.
  • Give users a clear view of their current financial status through totals and recent activity.
  • Allow users to edit, delete, and filter transactions without needing spreadsheets.
  • Keep users logged in during a valid session and remember one preference via cookies.

Non-Goals

  • Not a full banking app and does not connect to real bank accounts in MVP.
  • Not a tax filing, investment tracking, or debt management platform.
  • Not designed for shared household budgeting or multi-user account collaboration in MVP.
  • Not supporting offline-first mobile usage in the initial release.

College Student Adit, 21 - A student living on a limited budget who needs a fast way to track daily spending, part-time income, and remaining cash. He wants a simple interface that works on laptop and phone without complicated categories.

College Student Adit, 21

  • As a student, I want to sign up with my name, email, and password so that I can start tracking money in my own account.
  • As a student, I want to see my total balance and recent transactions on one dashboard so that I know whether I can afford upcoming expenses.
  • As a student, I want to edit or delete a transaction if I made a mistake so that my records stay accurate.

Freelance Creator Nisa, 26 - A part-time freelancer who receives irregular payments and wants a clean summary of income versus expenses. She values quick filters and secure session handling because she checks finances often across multiple devices.

Freelance Creator Nisa, 26

  • As a freelancer, I want to filter transactions by income or expense so that I can review my cash flow quickly.
  • As a freelancer, I want my session to stay active until it expires so that I do not need to log in repeatedly during the day.
  • As a freelancer, I want the app to keep my data separated from other users so that my financial records remain private.

First-Time Budget Tracker Bima, 19 - A new user who has never used an expense app before and needs the product to be obvious and forgiving. He wants to understand his money without learning accounting terms.

First-Time Budget Tracker Bima, 19

  • As a first-time user, I want the dashboard to explain my totals clearly so that I can understand my financial condition at a glance.
  • As a first-time user, I want simple forms with validation so that I do not lose time fixing avoidable input errors.
  • As a first-time user, I want one saved preference remembered with cookies so that my experience feels personalized.

Authentication and Account Management · High priority

  • Users must be able to create accounts, sign in, stay authenticated during a valid session, and sign out securely.
  • Register with name, email, and password using server-side validation and password hashing.
  • Log in with email and password and create a protected session on success.
  • Keep the session active until expiration or logout, with protected routes for authenticated pages only.
  • Log out must destroy the session on the server and clear relevant cookies.
  • Reject duplicate email registrations and show friendly error states for invalid credentials.

Transaction Management · High priority

  • Users need CRUD capabilities for personal income and expense transactions tied strictly to their own account.
  • Create transactions with type, amount, date, and optional note or category.
  • Edit existing transactions and recalculate totals immediately after save.
  • Delete transactions with confirmation to prevent accidental removal.
  • Restrict every transaction query by authenticated user ID so data is isolated per account.
  • Show validation for negative amounts, empty required fields, and malformed dates.

Dashboard and Financial Summary · High priority

  • The dashboard must provide a quick snapshot of financial health and recent activity without requiring navigation through multiple screens.
  • Display user name, total income, total expenses, and net balance prominently at the top.
  • Show the most recent transactions in descending date order.
  • Update summary values after every transaction create, update, or delete.
  • Handle empty states gracefully when the user has no transactions yet.
  • Format currency consistently in the selected locale, defaulting to Indonesian Rupiah.

Filtering and History Review · Medium priority

  • Users should be able to inspect transaction history by type so they can separate spending from income.
  • Filter by income, expense, or all transactions.
  • Keep filters reflected in the URL or state so the view is shareable and persistent in-session.
  • Support paging or infinite scroll when transaction lists grow large.
  • Show clear empty state messaging when a filter returns no results.
  • Sort by newest first by default, with future extensibility for date or amount sorting.

Cookies and User Preference · Low priority

  • The app should store at least one non-sensitive preference in a cookie to improve repeat visits without collecting unnecessary data.
  • Persist one preference such as last selected transaction filter or currency display choice.
  • Store only non-sensitive preference data in cookies, not passwords or financial records.
  • Respect cookie expiration and allow the preference to be reset by the user.
  • Make cookie usage compatible with consent requirements where applicable.

First-Time User Experience

  • Land on a clean marketing/login page with a clear value proposition and one primary CTA.
  • Register in under 60 seconds using name, email, and password with inline validation.
  • Confirm account creation and automatically sign in after successful registration.
  • Arrive on the dashboard showing balance, income, expenses, and recent transactions within 5 seconds of first login.
  • Create the first transaction immediately from a prominent add button and see totals update instantly.
  • Return visits should restore the session automatically until expiration and remember one preference via cookie.

1. Sign Up or Log In

  • The user enters the app through a simple authentication flow with minimal friction and strong validation.
  • Require a valid email format and a password with minimum security rules.
  • Show clear error messages for existing email, wrong password, or expired session.
  • Route authenticated users away from login pages to the dashboard automatically.

2. Dashboard Overview

  • After authentication, the user sees the financial summary and recent transaction list immediately.
  • Display name, balance, total income, and total expenses in a prominent header area.
  • Render recent transactions in a compact list with type, amount, and date.
  • Show an empty state if no data exists yet with a direct call to action.

3. Add Transaction

  • Users create income or expense entries through a short form from the dashboard or dedicated modal.
  • Require transaction type and amount, with optional note/category and date defaulting to today.
  • Validate amount as a positive number and prevent submission if required fields are missing.
  • Update totals and recent list immediately after successful save.

4. Review and Filter History

  • Users inspect their transaction history and narrow it to income or expenses.
  • Filter options should switch instantly without a full page refresh.
  • Preserve the last selected filter during the session and optionally via cookie.
  • Show a no-results state when the selected filter has no matching records.

5. Edit, Delete, and Logout

  • Users can maintain accuracy in their records and end their session securely.
  • Allow editing and deletion only for the current user’s transactions.
  • Ask for delete confirmation before removing records.
  • Logout should invalidate the session and redirect to the login screen.

Advanced Features and Edge Cases

  • Remember the last used filter or view preference with a cookie.
  • Support pagination or virtualized lists for users with hundreds of transactions.
  • Show session-expired handling that redirects users to login with a clear message.
  • Allow future category support without changing the core transaction model.
  • Gracefully handle network failures with retry states and unsaved-change warnings.

UI and Interaction Principles

  • Use a calm, finance-friendly visual system with strong contrast and simple typography.
  • Make the balance and totals visually dominant to reduce cognitive load.
  • Ensure the app is fully keyboard navigable and screen-reader friendly.
  • Keep primary actions visible on desktop and mobile without burying them in menus.
  • Use fast transitions and optimistic UI for create, edit, and delete actions where safe.

A student opens Saldoo after realizing he has no idea how much money is left after a week of spending. He signs up in less than a minute, lands on a dashboard that shows his total income, total expenses, and current balance, and adds his first expense from his phone while commuting home.

A few days later, he checks the app again and filters the list to see only expenses, quickly spotting a duplicate entry. He edits one transaction, deletes another mistake, and the balance updates immediately. Because the app keeps his session active and stores one preference with cookies, the experience feels frictionless and trustworthy.

Over time, he stops guessing and starts making decisions from clear data. The business wins because the product becomes part of his routine, driving retention, repeat logins, and a strong foundation for future premium features like categories, goals, and export.

User-Centric Metrics

  • At least 80% of users who log in can understand their balance and totals within 30 seconds.
  • At least 70% of new users create their first transaction within 10 minutes of signup.
  • At least 85% of create/edit/delete actions complete without user abandonment.
  • At least 90% of dashboard loads show totals and recent transactions within 2 seconds on normal connections.
  • Support a user-reported task success rate of 4.5 out of 5 for adding and reviewing transactions.

Business Metrics

  • Reach 1,000 registered users in 90 days.
  • Achieve 40% monthly active user rate among registered users by month 3.
  • Convert 25% of registered users into returning weekly users by month 6.
  • Maintain signup-to-first-transaction conversion at 60% or higher.
  • Keep churn below 8% monthly among active users after launch stabilization.

Technical Metrics

  • Monthly uptime of 99.9% for authentication and dashboard services.
  • Median dashboard response time under 300 ms and 95th percentile under 800 ms.
  • Zero cross-user data leakage incidents and 100% user-scoped transaction queries.
  • Session creation and logout actions complete in under 500 ms at the API layer.

Tracking Plan

  • Track signup_started and signup_completed.
  • Track login_success and login_failed with reason codes.
  • Track dashboard_viewed with session age and device type.
  • Track transaction_created with type, amount bucket, and source screen.
  • Track transaction_updated and transaction_deleted.
  • Track filter_applied with selected transaction type.
  • Track logout_completed and session_expired redirects.

Technical Needs

  • Frontend: Next.js with React and TypeScript for fast dashboard rendering and route protection.
  • Backend: Next.js API routes or a separate Node.js service with Express/NestJS for auth and transaction CRUD.
  • Database: PostgreSQL for relational user and transaction data with indexed foreign keys.
  • ORM: Prisma for schema management, migrations, and type-safe queries.
  • Authentication: secure cookie-based sessions using HTTPOnly, Secure, and SameSite settings.
  • Validation: Zod for request and form validation on client and server.
  • Observability: Sentry for error monitoring and PostHog or GA4 for product analytics.

Integration Points

  • Auth/session handling via NextAuth.js or custom session middleware with signed cookies.
  • Email verification and transactional email through Resend or SendGrid if email confirmation is added later.
  • Analytics through PostHog or Google Analytics 4.
  • Deployment on Vercel or Render with managed PostgreSQL from Supabase, Neon, or Railway.
  • Optional currency formatting/localization using browser locale and Intl APIs.

Data Storage & Privacy

  • Store passwords only as salted hashes using a strong algorithm such as bcrypt or Argon2.
  • Keep all transactions scoped by authenticated user ID and enforce authorization at the database query layer.
  • Use HTTPOnly session cookies and avoid storing sensitive financial data in client-side storage.
  • Provide clear privacy notices and support account deletion/export to align with GDPR and CCPA expectations.
  • Log only non-sensitive metadata in application logs and redact PII from errors and analytics where possible.

Scalability & Performance

  • Add database indexes on user_id, transaction_type, and created_at to keep list queries fast.
  • Use pagination for transaction history to avoid slow loads as record counts grow.
  • Cache dashboard aggregates per user where appropriate, invalidating on transaction changes.
  • Optimize for mobile and low-bandwidth usage with compact payloads and server-side rendering for initial load.

Potential Challenges

  • Risk: cross-user data exposure from weak authorization checks. Mitigation: enforce user-scoped queries in every transaction endpoint and add automated authorization tests.
  • Risk: session hijacking or insecure cookies. Mitigation: use HTTPS, HTTPOnly Secure cookies, rotation, and short-lived sessions with server-side invalidation.
  • Risk: inaccurate totals after edits or deletes. Mitigation: centralize balance calculation in the backend and add integration tests for CRUD reconciliation.
  • Risk: poor initial engagement if onboarding feels heavy. Mitigation: keep registration short, prefill defaults, and show value on the first dashboard load.
  • Risk: filter or list performance degradation with growing transaction volume. Mitigation: paginate, index, and progressively load history.

Team & resourcing - Small team - 2 engineers, 1 designer, part-time PM/QA.

Phase 1: MVP Foundation · Weeks 1-2

  • Project setup with Next.js, TypeScript, Prisma, and PostgreSQL.
  • User registration, login, session management, and logout.
  • Protected routes and basic authorization checks.
  • Core database schema for users, sessions, and transactions.

Phase 2: Core Expense Tracker · Weeks 3-4

  • Dashboard with name, balance, total income, total expenses, and recent transactions.
  • Create, edit, delete, and list transactions.
  • Income and expense filtering.
  • Server-side validation and empty states.

Phase 3: Preference and Polish · Weeks 5-6

  • Cookie-based storage for one user preference.
  • Improved UI responsiveness, accessibility, and error handling.
  • Analytics events and error monitoring.
  • Session-expiration handling and logout refinements.

Phase 4: Release Hardening · Weeks 7-8

  • Load testing, security review, and authorization audit.
  • Bug fixes from QA and beta feedback.
  • Dashboard performance tuning and database indexing.
  • Production deployment and launch checklist.

Paste this into Cursor, Bolt, Lovable, or v0 to start building.

Build a web app called Saldoo, a simple secure personal expense tracker for students and young adults.

Core features:
User registration with name, email, password
Login with email and password
Cookie-based authenticated sessions that persist until expiration
Protected dashboard routes for authenticated users only
Dashboard showing user name, total income, total expenses, net balance, and recent transactions
Transaction CRUD: create, edit, delete, list
Filter transactions by income or expense
Keep every transaction tied to the logged-in user only
Logout that destroys the session
Store one non-sensitive user preference in a cookie, such as last selected filter

Recommended stack:
Next.js App Router, React, TypeScript, Tailwind CSS, PostgreSQL, Prisma, server actions or route handlers, cookie-based sessions with HTTPOnly Secure SameSite cookies, Zod validation, Sentry for errors.

Data model:
User: id, name, email, passwordHash, createdAt, updatedAt
Transaction: id, userId, type income|expense, amount, note, category optional, transactionDate, createdAt, updatedAt
UserPreference or preference cookie for lastSelectedFilter
Session handling with server-side verification and route protection

Screens/flows:
Landing page with sign up and log in
Register form
Login form
Dashboard with summary cards and recent transactions
Add/edit transaction modal or page
Transaction history view with filter controls
Logout action
Empty state and error state handling

Implementation requirements:
Use server-side authorization checks on every transaction query and mutation
Recalculate totals on the backend after every transaction change
Show validation errors for invalid email, weak password, negative or empty amount, and missing required fields
Format currency in Indonesian Rupiah by default using Intl.NumberFormat
Make the UI responsive, accessible, and fast, with optimistic updates where safe
Add analytics events for signup, login, dashboard view, create/update/delete transaction, filter changes, and logout
Include sensible seed data and migrations
Generate production-ready code structure, components, pages, API routes or server actions, Prisma schema, and basic tests for auth and authorization

Business Idea

aku adalah orang yg punya uang banyak, tapi aku hedon. makannya aku ingin memiliki sebuah app web expense tracker yg memungkinkan aku sbg mahasiswa mengelola keuangan pribadi secara sederhana. pengguna harus dapat membuat akun dan masuk ke dalam aplikasi untuk mencatat pemasukan dan pengeluaran, melihat riwayat trsnsaksi, dan aku juga ingin tau kondisi keuangan melalui saldo total pemasukan dan total ppengeluaran. data transaksi harus terhubung dgn pengguna yg sedang login, sehingga setiap pengguna hanya dapat bisa mengakses dan mengelola data miliknya sendiri. app jg harus mempertahankan informasi login pengguna selama session masih berlaku dan mengguankan cookies menyimpan minimal 1 preferensi pengguna. pengguan dapat menambahkan, mengubah, menghapus dan melihat transaksi keuangan melalui dashboard. fitur wajib: register (akun dgn nama, email, pass), login (email pass), session (menyimpan pengguna & protect halaman yg perlu autentikasi), dashboard menampilkan nama, saldo, total pemasukan, total pengeluaran dan transaksi terbaru. manajemen transaksi: mengubah dan menghapus transaksi. filter transaksi berdasarkan jenis pemasukan atau pengeluaran. cookies: menyim.. authorization: pengguan hanya dapat mengakses.. log out: mengakhiri session pengguna.

Make My PRD

Design by The Resonance | Powered by GPC – The AI Transformation Company