SmartTax DB Wireframe

Accounts & Access

users
  • id (uuid, pk)
  • email (unique)
  • password_hash
  • name
  • role (user/admin)
  • created_at, updated_at
links: sessions, ledger_entries, tax_calculations, filings
sessions
  • id (uuid, pk)
  • user_id (fk users)
  • expires_at
  • mfa_verified (bool)
  • created_at, last_seen_at
for sign-in, remember me

Content (FAQ, News, Policies)

faq_categories
  • id (pk)
  • name
  • order_index
faq_articles
  • id (pk)
  • category_id (fk faq_categories)
  • question
  • answer
  • version_label
  • updated_at
for accordion answers by category
news_posts
  • id (pk)
  • title, slug
  • excerpt
  • body
  • status (draft/published)
  • published_at
  • user_id (fk users)
news_tags
  • id (pk)
  • name
  • type (tax change/feature/guidance)
news_post_tags
  • post_id (fk news_posts)
  • tag_id (fk news_tags)
many-to-many for News / Updates
policy_versions
  • id (pk)
  • type (terms/privacy)
  • version_label
  • content
  • published_at
shows latest Terms & Privacy pages

Support & Engagement

contact_messages
  • id (pk)
  • user_id (nullable fk users)
  • name, email
  • subject, message
  • attachment_url
  • status (open/closed)
  • created_at, responded_at
newsletter_subscribers
  • id (pk)
  • email (unique)
  • status (active/unsubscribed)
  • created_at

Income & Expenses

Single ledger supports income and expense entries, CSV uploads, receipts.
ledger_categories
  • id (pk)
  • name
  • type (income/expense)
  • hmrc_box (optional)
  • order_index
ledger_entries
  • id (pk)
  • user_id (fk users)
  • category_id (fk ledger_categories)
  • type (income/expense)
  • amount
  • entry_date
  • description
  • source (manual/csv/receipt)
  • created_at
supports add/edit/delete
receipts
  • id (pk)
  • entry_id (fk ledger_entries)
  • file_url
  • uploaded_at
uploads for expenses or income evidence
csv_imports
  • id (pk)
  • user_id (fk users)
  • file_url
  • status (pending/done/failed)
  • rows_processed
  • created_at

Tax Calculator

tax_calculations
  • id (pk)
  • user_id (fk users)
  • tax_year
  • total_income
  • allowable_expenses
  • personal_allowance_used (bool)
  • student_loan (bool)
  • pension (bool)
  • breakdown_json
  • created_at
supports saved estimates

Self-Assessment

filings
  • id (pk)
  • user_id (fk users)
  • tax_year
  • status (draft/ready/submitted)
  • draft_payload
  • submitted_at
  • reference_code
  • created_at, updated_at
filing_tasks
  • id (pk)
  • filing_id (fk filings)
  • label
  • status (todo/done)
  • order_index
checklist items for filing flow
filing_documents
  • id (pk)
  • filing_id (fk filings)
  • file_url
  • type (pdf/export/evidence)
  • uploaded_at

Payments & Records

payment_schedules
  • id (pk)
  • user_id (fk users)
  • tax_year
  • due_date
  • amount
  • status (planned/paid)
payment_transactions
  • id (pk)
  • user_id (fk users)
  • schedule_id (nullable fk payment_schedules)
  • paid_at
  • amount
  • method
  • receipt_url

Tax History & Reports

tax_year_summaries
  • id (pk)
  • user_id (fk users)
  • tax_year
  • income_total
  • expense_total
  • tax_due
  • generated_at
feeds dashboard and report exports
report_exports
  • id (pk)
  • user_id (fk users)
  • tax_year
  • format (csv/pdf)
  • file_url
  • created_at
HMRC integration omitted per current scope.