Soroush Neyestani

Software Engineer

Application Architect

Enterprise Application Developer

Technical Author & Educator

Alltag — Master Product & Architecture Plan

Purpose of this document
This file is the single source of truth for continuing the Alltag project in a new ChatGPT conversation if previous chat history is unavailable.
It contains the product vision, non-negotiable rules, architecture, security model, data model, UX principles, localization requirements, sync strategy, backup/recovery rules, phased implementation plan, and the required delivery protocol for every development chat.


0. Product identity

Product name: Alltag
Android project name: Alltag
Recommended project root: C:\Projects\Alltag
Recommended namespace/applicationId: dev.soroush.alltag

Alltag is the public/product name. Internal architecture terminology remains language-neutral.


1. Product vision

Alltag is a local-first Android application for managing the operational complexity of daily life:

  • letters and official documents
  • appointments
  • tasks and deadlines
  • follow-ups
  • legal and administrative cases
  • health-related administration
  • recurring routines
  • household collaboration
  • bank/account balances entered manually
  • future income and expenses
  • installments, payment pauses and future obligations
  • contracts
  • shopping lists and shared household items
  • cash-flow forecasting
  • “Can I afford this?” purchase simulation
  • encrypted local backups
  • home-only family synchronization
  • Markdown context export for continuation in ChatGPT or another LLM

The product is not primarily:

  • a generic calendar,
  • a banking application,
  • a simple expense tracker,
  • a cloud SaaS,
  • or a document scanner.

It is best described as:

A private household operating system for life administration, obligations, documents, money, timelines and decisions.


2. Core product principles

These rules are non-negotiable and must not be broken by later implementation shortcuts.

2.1 Local-first / offline-first

Each Android device owns a complete local database for the data it is allowed to retain.

The application must remain usable when:

  • internet is unavailable,
  • the FRITZ!Box is unreachable,
  • the user is away from home,
  • other household members are offline.

Cloud connectivity is not required for core operation.


2.2 Household-first, but ownership is individual

A household may contain multiple members.

Examples:

  • Soroush
  • Bahareh
  • future family members
  • temporary flatmates

Every meaningful record has an ownerMemberId.

A household membership grants collaboration rights, not ownership.


2.3 Ownership rule

For every record:

Owner may:
- read
- edit
- delete
- archive
- change its own content
- decide sharing policy

Other authorized household members may:
- read if permitted
- add contributions
- add comments/checkpoints/actions
- perform explicitly shared workflow actions
- edit/delete only their own contributions

Other members may NOT:
- destructively edit another owner's original content
- delete another owner's original record
- convert another owner's sensitive record to portable/offline-readable

Three mutation classes must exist conceptually:

1. OWNER_MUTATION
2. CONTRIBUTION
3. SHARED_ACTION

Examples:

  • Changing a payment amount: OWNER_MUTATION
  • Adding a note to someone else's case: CONTRIBUTION
  • Marking milk as bought in a shared shopping list: SHARED_ACTION

2.4 Capture first, organize later

Users are tired and busy. Alltag must not force classification at capture time.

Fast path:

Open app
→ Capture
→ text/photo/OCR/document/task/etc.
→ Save
→ item appears at top of Inbox

The user can classify and enrich the item later.

This is a core UX rule.


2.5 Taxonomy + tags + relations

The mental model is taxonomy-based.

The app ships with default top-level categories, for example:

Finanzen
Gesundheit
Recht
Arbeit
Auto
Wohnung
Familie
Verträge
Behörden
Studium
Sonstiges

But users can:

  • add categories
  • rename categories
  • reorder categories
  • nest categories
  • archive categories

Relationships between entities must additionally support:

  • tags
  • links
  • related cases
  • related contacts
  • related documents
  • related payments
  • related appointments
  • related tasks

3. Languages and internationalization

Alltag is multilingual from the beginning.

Mandatory first-class UI languages:

German
English
Persian

Requirements:

  • no hard-coded user-facing strings
  • Android resource localization from the first implementation phase
  • full RTL support for Persian
  • full LTR support for German and English
  • layout must survive language switching without redesign
  • icons should carry much of the navigation meaning
  • date/number/currency formatting must respect locale
  • internal database enums/IDs must remain language-neutral
  • exported Markdown may be generated in the currently selected UI language

4. Visual UX / design system

Alltag must be visually rich and not look like a collection of text forms and tables.

Mandatory design direction:

  • icon-rich interface
  • Material 3 / Material Symbols or equivalent vector icons
  • cards
  • status chips
  • badges
  • visual timelines
  • section icons
  • empty-state illustrations/icons
  • priority indicators
  • finance trend cards
  • visually distinct Inbox
  • clear owner/member indicators where relevant
  • compact action buttons
  • accessible spacing and typography
  • dark mode support
  • Persian RTL-aware icon placement

Text-only screens should be avoided unless the content itself is inherently textual.

The Dashboard should communicate state visually before the user reads detail.


5. Main product areas

Alltag
│
├── Household
├── Dashboard
├── Inbox
├── Taxonomy / Areas
├── Cases / Vorgänge
├── Timeline
├── Checkpoints
├── Documents / Letters
├── Appointments
├── Tasks
├── Deadlines
├── Follow-ups
├── Routines
├── Finance
├── Contracts
├── Contacts / Institutions
├── Shared Household Items
│   └── Shopping Lists
├── Search
├── Reports
│   └── Markdown Context Export
├── Backup / Restore
└── Settings

6. Cases / Vorgänge

A Case is the central administrative container.

Examples:

Residence permit
VW Bank
Tax return 2026
Lawyer / criminal proceeding
Thyroid follow-up
Apartment move
University
Insurance claim

A case may contain:

documents[]
appointments[]
tasks[]
deadlines[]
followUps[]
payments[]
contacts[]
checkpoints[]
notes[]
events[]
relations[]

Cases may be related to each other.

A strict tree is not sufficient; use taxonomy + graph-style relations.


7. Unified timeline

Alltag must provide a unified timeline per case/person/context.

Example:

02.08  Letter received
05.08  Email sent
05.08  Follow-up scheduled
19.08  Phone call
22.08  Lawyer replied
23.08  Payment made

Timeline items may originate from different modules but must be queryable as one chronological stream.

Important metadata:

eventId
ownerMemberId
actorMemberId
entityType
entityId
eventType
timestamp
summary
visibilityPolicy

8. Checkpoints

A Checkpoint is a concise, structured state snapshot.

It is not long-form storytelling.

Example:

CHECKPOINT — Lawyer — 14.09.2026

Known:
- Lawyer contacted court.

Waiting for:
- Judge response.

Agreed:
- Lawyer will inform me.

My next action:
- None.

Follow-up:
- 28.09.2026.

Checkpoints may belong to:

  • case
  • appointment
  • document
  • task
  • contact
  • financial event

They are important for Markdown export and continuity.


9. Documents and letters

9.1 Capture modes

The user may choose globally and per document:

TEXT_ONLY
OCR_PLUS_OPTIMIZED_SCAN
OCR_PLUS_ORIGINAL

The app must never force storage of full-resolution images.

Recommended default:

OCR_PLUS_OPTIMIZED_SCAN

for important administrative/legal/medical/financial documents.

TEXT_ONLY remains available for users who care strongly about storage size.


9.2 Scanner UX

Document capture should resemble modern camera translation/scanner experiences.

Expected flow:

Camera
→ page detection
→ auto crop
→ perspective correction
→ rotate if required
→ multi-page capture
→ OCR
→ save to Inbox

Classification is optional at capture time.


9.3 Original vs OCR

OCR is not evidence.

If an original/optimized scan is retained, store separately:

Document
├── source file / optimized scan
├── OCR text
├── structured extracted values
└── user notes

OCR values must not silently become trusted deadlines/payments.

Detection is not confirmation.


9.4 Multiple actions per letter

A document can create many independent actions.

Example:

Document
├── SEND_DOCUMENT
├── PAYMENT
├── REPLY
├── BOOK_APPOINTMENT
└── FOLLOW_UP

Each action has its own state.

The document itself must not use one simple completed boolean.

Suggested action types:

INFORMATION
ACTION_REQUIRED
PAYMENT_REQUIRED
REPLY_REQUIRED
DOCUMENT_REQUIRED
APPOINTMENT_REQUIRED
DEADLINE
FOLLOW_UP
CONTRACT_DECISION
MEDICAL_INFORMATION
REMINDER_WARNING

9.5 Document lifecycle

Initial recommended lifecycle:

NEW
READ
ACTION_REQUIRED
IN_PROGRESS
WAITING
DONE
ARCHIVED

10. Follow-up engine

For outgoing correspondence or contact, Alltag should suggest:

Follow-up in 14 days

The user can:

  • accept
  • change date
  • reject

Example:

Email sent: 14.09.2026
Suggested follow-up: 28.09.2026

If a response arrives and is linked to the outgoing contact, the open follow-up should be resolved automatically where safe.


11. Appointments

Appointments include both future and historical records.

11.1 Before appointment

questions
documents to bring
checklist
location
reminders
related case
related contact

11.2 After appointment

Structured result:

discussed[]
notDiscussed[]
decisions[]
promises[]
documentsReceived[]
nextActions[]
nextAppointment
checkpoint

The goal is exact memory, not narrative prose.


12. Routines and recurrence

Recurrence is first-class.

Examples:

  • gym every day
  • medication schedule
  • physiotherapy every Tuesday
  • rent monthly
  • salary on specific dates

Each occurrence has an independent state:

DONE
SKIPPED
MISSED
CANCELLED

SKIPPED may contain:

  • reason category
  • free text
  • saved reply/template

Example:

Gym — 18:00
SKIPPED
Reason: Recovery day

Do not merge “intentionally skipped” and “forgot/missed”.


13. Finance model

Alltag is a cash-flow forecasting system, not merely an expense tracker.

13.1 Member-aware accounts

All household members may define their financial accounts.

Examples:

Girokonto
Cash
PayPal
Credit card
Savings
Dispo
Other

Account model concept:

accountId
ownerMemberId
householdId
type
name
currency
currentBalance
creditLimit
visibilityPolicy

The Household financial view is an aggregation, not ownership transfer.


13.2 Financial event states

At minimum:

ACTUAL
SCHEDULED
SCENARIO

Also useful confidence level for future money:

CONFIRMED
EXPECTED
POSSIBLE

Example:

  • salary: confirmed
  • tax refund: expected
  • possible bonus: possible

Safe-to-spend must never treat speculative income as guaranteed.


13.3 Recurring finance engine

Must support:

startDate
endDate
frequency
pause
skip occurrence
override amount
amount change from date
future start
finite installment count
balloon payment
manual exception

Example:

Car financing
670 EUR monthly

Sep 2026  PAUSED
Oct 2026  PAUSED
Nov 2026  PAUSED
Dec 2026  670 EUR

This must be modeled cleanly, not as hard-coded exceptions.


13.4 Forecast

At any future point:

projectedBalance(t)
=
current balance
+ confirmed future inflows
- committed future outflows

Important outputs:

Current Balance
Committed Money
Projected Balance
Minimum Future Balance
Reserve
Safe To Spend

13.5 Safe to Spend

Example:

Current balance: 2,400 EUR
Committed:       1,748 EUR
Free:              652 EUR
Minimum reserve:   300 EUR
Safe to spend:     352 EUR

Reserve must be configurable.


13.6 Purchase simulator

A fast scenario tool must be available while shopping.

Example:

Hypothetical purchase:
450 EUR today

Output:

Balance today:       1,180 EUR
Lowest balance:        117 EUR
Lowest point:        01.10.2026

Warning:
Rent coverage becomes unsafe.

The scenario does not change actual accounting until explicitly confirmed.

Possible transition:

SCENARIO → ACTUAL

14. Contracts

Contracts are first-class entities.

Suggested fields:

provider
owner
start date
end date
monthly/periodic cost
minimum duration
notice period
renewal rule
future price changes
documents
related payments
reminders

Examples:

  • car financing
  • insurance
  • mobile phone
  • internet
  • university
  • language course
  • subscriptions

15. Shared household collaboration

Shared household examples:

  • shopping list
  • chores
  • household routines
  • shared reminders
  • household notes

Ownership still applies to every contribution.

Example:

Shopping List

Milk      owner=Soroush
Rice      owner=Bahareh

Bahareh may mark Soroush's Milk as:

BOUGHT

because this is a SHARED_ACTION.

She may not change:

Milk → Whisky

unless she owns that item or explicit collaborative-edit permission is introduced later.


16. Security model

Security is a core architectural feature, not a later UI enhancement.

16.1 Device identity

Member != Device

Example:

Bahareh
├── Samsung Phone
└── Tablet

Permissions belong to the member.

Authentication keys belong to the device.


16.2 First household device

The first device creates:

householdId
household master material
deviceId
device key pair

Sensitive keys must use Android Keystore where appropriate.

The user should not create or memorize an encryption password during normal household setup.


16.3 Pairing a new device

UX:

Existing device:
Add device
→ display short numeric code

New device:
Join household
→ enter numeric code

Recommended UX code:

8 digits
single use
short lifetime
rate limited
home LAN only

The numeric code is not the encryption key.

It only authorizes a secure pairing session.


17. Home-only sync using FRITZ!Box

The FRITZ!Box is not treated as a full application server.

It acts as:

Home Sync Vault / encrypted storage relay

Architecture:

Phone A
  local DB
     │
 encrypted deltas
     ▼
FRITZ!Box / NAS / USB
 encrypted vault
     ▲
 encrypted deltas
     │
Phone B
  local DB

No shared SQLite database over SMB.

Each phone owns its local database.

Sync uses:

change log
encrypted deltas
snapshots
device identity
versioning
conflict handling

18. Shared-data portability policies

Every shared record has a policy.

Core policies:

PRIVATE
HOME_SHARED
PORTABLE_SHARED

Recommended defaults:

Legal        HOME_SHARED
Medical      HOME_SHARED
Finance      HOME_SHARED
Documents    HOME_SHARED

Typical portable data:

Shopping List     PORTABLE_SHARED
Simple household task
Selected routine
Selected note

Only the owner may promote their sensitive data to portable shared access.


19. Home lease security

A critical threat scenario:

A household member leaves after conflict and never reconnects to the home network.

Remote deletion cannot be guaranteed.

Therefore:

Non-owned HOME_SHARED data must not be permanently decryptable outside the home.

Concept:

At home:
trusted vault reachable
+ device authorized
+ membership active
→ short-lived access lease
→ HOME_SHARED data readable

Outside home:
home unavailable
→ lease expires
→ temporary keys purged
→ HOME_SHARED data locked

Encrypted cache may remain physically present, but must not remain independently readable.

The app may lock immediately on network transition where possible and use TTL as a fallback.


20. Leaving a household

This must be a first-class security workflow.

If a member leaves:

Keep on the leaving member's device

records owned by that member
personal documents
personal finance
personal appointments
personal notes
personal tasks
personal contributions

Remove or permanently lock

other members' data
household-only data
foreign document cache
foreign attachments
shared indexes
household authorization material
home-shared decryption material

If the member owns a contribution inside another owner's case, it may be retained as:

Detached Personal Record

with context indicating that the original shared context is no longer available.


20.1 Revocation

When a member is removed:

membership = REVOKED
device authorization revoked
household access epoch/key rotated
future sync denied
foreign cache scheduled for purge

Connecting to the same Wi-Fi is never sufficient authorization.


21. Sync conflicts

Not all conflicts are equal.

Safe auto-merge candidates:

  • comments
  • additive notes
  • shopping additions
  • independent contributions

Manual conflict resolution required for sensitive conflicts such as:

  • financial amount
  • deadline date
  • appointment time
  • legal status
  • payment status
  • ownership-sensitive metadata

Never silently overwrite sensitive concurrent edits.


22. Backup and recovery

Backup is different from sync.

22.1 Local automatic backup

The app should support:

Daily
Weekly
Monthly
Manual only

Recommended default can be weekly.

Example output:

Alltag_Backup_2026-09-14.lob

Store in a user-visible, discoverable directory.

The user must be able to copy the backup to a PC or external storage without understanding internal database structure.


22.2 Backup content

Encrypted container may include:

database
settings
taxonomy
member metadata
attachments according to policy
sync metadata

A raw unencrypted SQLite file is not the intended user backup format.


22.3 Mirror

Optional backup mirroring may later use:

  • household vault
  • member-selected storage
  • PC copy
  • removable storage

Mirror is not required for basic operation.


22.4 Restore acceptance test

Required scenario:

new phone
→ install Alltag
→ choose Restore
→ select backup
→ restore
→ personal data available

Backup/restore must be tested before production release.


23. Markdown context export

Markdown is the primary human/LLM export format.

Supported scopes should include:

Case
Person
Institution
Category
Date range

Modes:

FULL
COMPACT
SINCE_LAST_EXPORT

Suggested structure:

# Case

## Current Status
## Participants
## Timeline
## Documents
## Financial Events
## Appointments
## Open Tasks
## Deadlines
## Checkpoints
## Open Questions

Exports should preserve provenance when useful:

2026-09-14 — Soroush — Payment registered
2026-09-15 — Bahareh — Letter received

LLM/AI is not required to generate a useful export.

Export must be deterministic.


24. Dashboard

The Dashboard must answer two questions:

Today

What do I need to do now?

Overview

What is the state of my life administration?

Suggested visual cards:

Today
- appointments
- tasks
- deadlines

Inbox
- unclassified captures

Waiting
- cases waiting for response

Finance
- safe to spend
- next income
- next large payment
- minimum forecast

Household
- shared tasks
- shopping

Recent
- latest documents/events

Dashboard must be icon-rich and visually scannable.


25. Search

Global search should eventually cover:

OCR text
document titles
notes
contacts
case names
Aktenzeichen/reference numbers
payments
appointments
tasks
tags
checkpoints

26. Recommended Android technology stack

Initial architecture target:

Kotlin
Jetpack Compose
Material 3
Room
Coroutines
Flow
Hilt
WorkManager
DataStore
Android Keystore
CameraX

OCR implementation may use a local/on-device solution, but no mandatory third-party cloud dependency should be introduced for core scanning.


27. Project architecture

Recommended multi-module structure:

app/

core/
  common/
  database/
  security/
  sync/
  ui/
  localization/
  notifications/
  backup/
  testing/

domain/

data/

feature/
  dashboard/
  inbox/
  taxonomy/
  cases/
  documents/
  appointments/
  tasks/
  routines/
  finance/
  household/
  contracts/
  contacts/
  reports/
  search/
  settings/

Avoid circular feature dependencies.

Business rules belong in domain/use-case layers, not Composables.


28. High-level entity inventory

This is an initial domain inventory, not a frozen SQL schema.

Household
Member
Device
Membership
DeviceAuthorization

Category
Tag
EntityTag
Relation

Case
CaseParticipant
TimelineEvent
Checkpoint
Note

Contact
Institution

Document
DocumentPage
OcrContent
DocumentAction
Attachment

Task
Deadline
FollowUp

Appointment
AppointmentChecklistItem
AppointmentOutcome
Routine
RoutineOccurrence

FinancialAccount
FinancialEvent
RecurringSchedule
ScheduleException
InstallmentPlan
Scenario
ReserveRule

Contract

ShoppingList
ShoppingItem

SyncChange
SyncCursor
SyncConflict
KeyEpoch
AccessLease

BackupMetadata

ExportHistory

All final tables must be derived carefully before migrations are frozen.


29. Development quality gates

From the beginning:

ktlint
Detekt
unit tests
Room migration tests
domain tests
security tests where practical

Before each phase is considered complete:

Build passes
Unit tests pass
Lint passes
Detekt passes
Database migrations pass
No known destructive data bug
Checkpoint generated

30. Implementation strategy — minimize number of chats

The user explicitly wants large cumulative phases and as few development chats as reasonably possible.

After initial Android Studio bootstrap, implementation should be delivered in consolidated phases.

Do not split trivial UI work into separate chats unless a build/test failure requires a repair pass.

Target:

Bootstrap + 5 major implementation phases
+ optional repair chats only if actually needed

31. PHASE 00 — Android Studio Bootstrap

Goal

Create the initial Android project and verify the environment before automated cumulative phases begin.

Deliverables

  • Android Studio project created
  • package namespace fixed
  • Git repository optional, but scripts must NOT commit automatically
  • base Gradle build working
  • emulator/device build verified
  • root project path established

Recommended default project root:

C:\Projects\Alltag

This may be overridden later by environment variable.

Checkpoint

PHASE_00_CHECKPOINT.md

32. PHASE 01 — Foundation + Localization + Domain Base

This is intentionally large.

Scope

Android foundation

  • multi-module setup
  • Compose Material 3
  • Hilt
  • Room
  • Coroutines/Flow
  • WorkManager
  • DataStore
  • testing infrastructure
  • ktlint
  • Detekt

Localization

  • German
  • English
  • Persian
  • RTL verification
  • no hard-coded UI strings

Design system

  • icon-rich components
  • cards
  • status chips
  • badges
  • owner indicators
  • empty states
  • typography
  • dark mode

Core identity/domain

  • Household
  • Member
  • Device
  • Membership
  • Owner model
  • permission engine abstractions
  • sharing policy enum

Taxonomy

  • default categories
  • reorder
  • custom category
  • nesting
  • tags

Inbox

  • quick text capture
  • generic unclassified item
  • Inbox ordering
  • basic classify-later workflow

Acceptance criteria

  • app launches
  • all three languages switch correctly
  • Persian layout is RTL
  • sample member/household works locally
  • records have owner metadata
  • permission tests exist
  • Inbox accepts unclassified items
  • project builds cleanly

Checkpoint

PHASE_01_CHECKPOINT.md

33. PHASE 02 — Life Core + Documents + Appointments + Routines

Another intentionally cumulative phase.

Scope

Cases

  • create/edit/archive
  • relations
  • linked contacts
  • linked items

Timeline

  • unified event stream
  • actor/owner provenance

Checkpoints

  • structured state snapshots

Tasks

  • task
  • deadline
  • status
  • priority

Follow-ups

  • default +14 day suggestion
  • manual override
  • resolve on linked response where safe

Contacts/Institutions

  • people
  • organizations
  • roles
  • case links

Documents

  • CameraX capture
  • single/multi-page
  • OCR
  • text-only storage mode
  • optimized scan mode
  • original mode
  • save unclassified to Inbox
  • document actions
  • lifecycle

Appointments

  • future and history
  • pre-appointment questions/checklist
  • post-appointment structured outcome
  • next action
  • next appointment
  • checkpoint

Routines

  • recurrence
  • occurrences
  • done/skipped/missed/cancelled
  • skip reason
  • saved reason templates

Acceptance criteria

A user must be able to:

capture a letter quickly
leave it unclassified
later attach it to a case
create multiple actions from it
schedule a follow-up
record an appointment
write a structured appointment outcome
see everything in the case timeline

Checkpoint

PHASE_02_CHECKPOINT.md

34. PHASE 03 — Finance + Contracts + Household Collaboration

Scope

Financial accounts

  • per-member accounts
  • balance
  • currency
  • optional credit/dispo limit

Income/expense events

  • actual
  • scheduled
  • scenario
  • confirmed/expected/possible

Recurrence

  • start
  • end
  • future start
  • pause
  • skip
  • override
  • amount change
  • finite installments
  • balloon payment

Forecast engine

  • projected balance
  • minimum balance
  • committed amount
  • reserve
  • safe-to-spend

Purchase simulator

  • hypothetical purchase
  • forecast recalculation
  • warning
  • scenario comparison
  • convert scenario to actual

Contracts

  • duration
  • provider
  • price
  • notice period
  • future price change
  • related payments
  • reminders

Shared household

  • shopping lists
  • shopping items
  • shared tasks
  • shared actions
  • ownership preserved

Acceptance criteria

Finance must correctly model examples such as:

monthly car installment
3-month payment pause
future installment restart
salary on known dates
future contract starting next year
safe-to-spend warning

All calculations require domain tests.

Checkpoint

PHASE_03_CHECKPOINT.md

35. PHASE 04 — Home Sync + Security + Pairing + Backup + Household Exit

This phase contains the hardest technical work.

Scope

FRITZ vault discovery/config

  • local network only
  • storage relay
  • no shared SQLite

Pairing

  • first household device
  • additional device
  • short numeric pairing code
  • secure underlying key exchange

Encrypted delta sync

  • change log
  • encrypted payloads
  • per-device cursor
  • snapshots if required
  • retry
  • interrupted sync recovery

Conflict engine

  • additive auto-merge
  • sensitive manual conflict resolution

Security

  • Android Keystore integration
  • membership authorization
  • key epochs
  • revocation
  • home access lease
  • HOME_SHARED lock outside home
  • PORTABLE_SHARED behavior
  • foreign cache protection

Backup

  • daily/weekly/monthly/manual
  • encrypted backup container
  • visible file location
  • retention

Restore

  • restore on new device

Leave household

  • keep owned data
  • purge/lock foreign data
  • revoke sync
  • rotate household access
  • detach owned contributions where necessary

Required adversarial tests

member leaves home during conflict
device never reconnects
foreign HOME_SHARED records become unreadable
portable shopping list remains usable
removed member returns to same Wi-Fi
removed member still cannot sync/decrypt
sync interrupted mid-write
FRITZ unavailable
device reboot
app process killed

Acceptance criteria

No production release before this phase passes.

Checkpoint

PHASE_04_CHECKPOINT.md

36. PHASE 05 — Reports + Dashboard + Search + Hardening + Release Candidate

Scope

Markdown export

  • full
  • compact
  • since last export
  • provenance
  • case/person/institution/category/date range scopes
  • OCR
  • notes
  • cases
  • contacts
  • references
  • finance
  • appointments
  • tags

Dashboard

  • Today
  • Overview
  • Inbox
  • Waiting
  • Finance
  • Household
  • Recent

Notifications

  • deadlines
  • appointments
  • follow-ups
  • routines
  • upcoming payments
  • backup failure
  • sync problems

Hardening

  • Room migration tests
  • large data tests
  • low-storage behavior
  • corrupt backup handling
  • corrupt sync payload handling
  • encryption failure handling
  • accessibility review
  • RTL regression review
  • localization completeness
  • performance
  • battery/background behavior

Release candidate

  • app versioning
  • signed build process documentation
  • final known limitations
  • final architecture checkpoint

Checkpoint

PHASE_05_RELEASE_CHECKPOINT.md

37. POST-MVP — optional

Only after the core is stable.

Candidates:

Android / Samsung home-screen widget
Google/Android Calendar integration
desktop companion
advanced statistics
optional self-hosted server
optional encrypted cloud mirror
advanced on-device classification
more export formats
tablet-optimized layouts

The widget is expected to be an important later feature.

Possible widget content:

today's appointments
urgent task count
next deadline
safe-to-spend
shopping list shortcut
quick capture

38. Mandatory development-chat delivery protocol

This section is extremely important.

After Phase 00, every implementation chat should normally deliver one cumulative executable Python patch file for that phase or repair pass.

The user wants to download the file and execute it without caring which working directory the terminal is currently in.

38.1 File location

Generated patch script is expected to be downloaded to:

%USERPROFILE%\Downloads

Example filename:

Alltag_PHASE_01_FOUNDATION.py

38.2 Execution command from ANY directory

Preferred command:

py "$env:USERPROFILE\Downloads\Alltag_PHASE_01_FOUNDATION.py"

Fallback:

python "$env:USERPROFILE\Downloads\Alltag_PHASE_01_FOUNDATION.py"

The user must not need to cd into the project before running the script.


38.3 Project-root discovery

Every patch script must locate the Alltag project using this order:

1. ALLTAG_ROOT environment variable, if valid
2. C:\Projects\Alltag
3. optional safe fallback discovery if explicitly implemented

If the project cannot be located, stop with a clear error.

Do not silently modify an unrelated directory.


38.4 Script behavior

Each phase script should be:

idempotent where practical
deterministic
self-validating
clear in console output
safe against wrong project root

It should:

  1. verify project root
  2. verify expected previous-phase checkpoint
  3. write/update required files
  4. avoid unrelated changes
  5. run formatting where practical
  6. run targeted tests/build checks where practical
  7. generate/update the phase checkpoint
  8. print exact next commands if a long Gradle task is intentionally left to the user

38.5 No automatic backup or Git commit

Unless the user explicitly asks otherwise:

NO source backup copies
NO ZIP backup
NO automatic git commit
NO automatic git push

The patch script should be designed to be repeatable and safe instead.


38.6 One script per chat whenever possible

Avoid:

Patch 01
Patch 02
Patch 03
Patch 04

for ordinary planned work.

Prefer:

one cumulative phase script

Only create repair scripts if build/test output proves that a repair is actually necessary.

This is intended to minimize the number of chats.


39. Phase checkpoint protocol

Every major phase must generate a Markdown checkpoint inside the project.

Example:

docs/checkpoints/PHASE_03_CHECKPOINT.md

Checkpoint content:

Phase name
Completion date
Implemented scope
Architecture decisions
New modules
Database schema/migrations
Security implications
Localization changes
Tests executed
Build commands
Known limitations
Deferred items
Exact next phase

A new ChatGPT conversation should be able to continue with:

Alltag_MASTER_PLAN.md
+
latest PHASE_xx_CHECKPOINT.md
+
current build/test output if failing

No old chat transcript should be required.


40. Rules for future ChatGPT sessions

When continuing this project:

  1. Treat this file as authoritative unless the user explicitly changes a requirement.
  2. Do not redesign ownership casually.
  3. Do not replace local-first with mandatory cloud.
  4. Do not use a shared SQLite database over SMB.
  5. Do not permanently expose HOME_SHARED foreign data outside home.
  6. Do not make passwords a normal household pairing requirement.
  7. Do not hard-code UI text.
  8. Preserve German/English/Persian support.
  9. Preserve RTL.
  10. Keep the interface icon-rich.
  11. Prefer large cumulative phases.
  12. Deliver one executable Python patch file per development chat when possible.
  13. Scripts must run from Downloads regardless of the user's current terminal directory.
  14. Do not request source re-upload if the required project and checkpoint are already available to the user and the script can operate directly against the local project.
  15. Do not make automatic Git commits unless explicitly requested.
  16. Every completed phase must write a checkpoint.

41. Product threat model — minimum scenarios

The project must be designed against at least these scenarios:

Lost phone
Stolen phone
Household member leaves after conflict
Former member still knows Wi-Fi password
Former member has old encrypted sync files
Guest connects to home Wi-Fi
FRITZ USB storage is stolen
Sync interrupted
Two members edit same sensitive record
Backup copied to a PC
User restores an old backup
App is killed during write
Low disk space
OCR misreads amount/date

Important principle:

A network connection is not authorization.

Important principle:

OCR detection is not confirmation.

Important principle:

Remote deletion cannot be relied upon; cryptographic access control must prevent durable unauthorized readability.


42. Data integrity principles

For sensitive data:

  • do not silently overwrite concurrent edits
  • use stable UUID/ULID-style identifiers
  • maintain creation and update metadata
  • preserve owner provenance
  • prefer soft archive over destructive delete where appropriate
  • destructive deletion must follow ownership rules
  • migrations must be tested
  • sync changes must be replay-safe/idempotent where possible
  • financial calculations must be deterministic and covered by tests

43. Definition of MVP

Alltag MVP is complete when one household with at least two Android devices can:

create a household
pair securely
work offline
capture and OCR a letter
store text-only or image-backed documents
organize Inbox items later
create a case
add multiple actions to a letter
track deadlines and follow-ups
manage appointments and outcomes
manage recurring routines
track member-owned financial accounts
forecast future balance
simulate a purchase
share a shopping list
respect owner permissions
sync only through home FRITZ storage
lock foreign HOME_SHARED data away from home
remove a household member safely
create encrypted local backups
restore from backup
export a complete Markdown case context
use German, English and Persian
use the app comfortably in both LTR and RTL

44. Immediate next step

If starting from scratch:

STEP 1
Create Phase 00 Android Studio project.

STEP 2
Verify:
- Android build
- emulator/device launch
- project root

STEP 3
Provide this MASTER_PLAN and Phase 00 checkpoint to ChatGPT.

STEP 4
Generate one cumulative:
Alltag_PHASE_01_FOUNDATION.py

STEP 5
Run from any directory:

py "$env:USERPROFILE\Downloads\Alltag_PHASE_01_FOUNDATION.py"

Then proceed phase by phase using the latest checkpoint.


45. Final architectural summary

Alltag is built around five fundamental engines:

1. Ownership & Household Engine
2. Life Timeline / Obligation Engine
3. Document & Capture Engine
4. Financial Forecast Engine
5. Home Security & Sync Engine

Everything else is a feature surface over those foundations.

The architecture should optimize for:

privacy
clarity
low cognitive load
offline usability
family collaboration
strong ownership boundaries
recoverability
long-term maintainability

The application must feel simple to the user even though the underlying architecture is intentionally strict.


End of Master Plan

This file should be retained with the project and provided to any future development conversation before implementation continues.