PersonalFinanceAnalyzer is a Streamlit web application for personal finance tracking. The current implementation on the login branch provides a working registration and login flow backed by the existing users table in db/schema.sql.
The application is being built incrementally around the documented user stories and acceptance criteria. Current auth functionality includes:
- user registration
- login with email and password
- duplicate-email rejection
- logout and return to the homepage/dashboard entry state
- confirmation email delivery hook via SMTP configuration
Architecture and stack decisions are documented in:
Install dependencies with Poetry:
poetry installIf you need to refresh the database environment, start the included Postgres service:
docker compose up -d db-devStart the Streamlit app:
poetry run streamlit run main.pyThe app will open a login/register page. Use the register tab to create a new account and the login tab to sign in.
Health endpoint (for monitors like UpTimeRobot):
http://localhost:8502/health
Run the test suite:
poetry run pytestRun formatting and lint checks:
poetry run ruff format --check .
poetry run ruff check .Registration flow:
- Open the app.
- Go to the Register tab.
- Enter an email and password.
- Submit the form.
- If SMTP is configured, a confirmation email is sent. Otherwise, the app logs a preview and shows a warning.
Login flow:
- Open the app.
- Go to the Login tab.
- Enter the registered email and password.
- Submit the form.
- On success, you are redirected to the dashboard view.
Example confirmation message:
Welcome to PersonalFinanceAnalyzer, user@example.com! Your account has been created successfully. You can now log in and access your dashboard.
Implemented in this branch:
- user stories and acceptance criteria for authentication
- architecture decision record and tech stack record
- unit, integration, and end-to-end style tests for auth logic
- logging setup
- GitHub CI, Dependabot, and code security scanning workflow files
- PostgreSQL schema in
db/schema.sql - login, registration, and logout behavior in the Streamlit app
Still requires manual GitHub/environment setup:
- main branch protection rules
- required PR reviews and code review policy
- GitHub Project backlog/sprint board
- production deployment target and uptime monitoring
- confirmation email SMTP configuration