How mattwalker75/junk_tracker works
Junk Tracker is a self-hosted personal tracker for splurges, activity, weight, and goals, with optional multi-user sign-in and network access. A person opens the web app, views Home or navigates to Calendar and Goals, and uses sheets to record or edit entries; the client sends API requests to the server, which coordinates user, goal, and log services backed by SQLite. Settings cover personal preferences, appearance, users, and network access. Some server routes and UI implementations were not excerpted, so their detailed internal links are omitted.
Main entry points: App.tsx App shell · app.ts HTTP API · api.ts HTTP client · Home.tsx Home dashboard
Components 25
Tracker interface
- App shell
web/src/App.tsx - Home dashboard
web/src/components/Home.tsx - Calendar
web/src/components/CalendarPage.tsx - Day detail
web/src/components/DaySheet.tsx - Splurge logging
web/src/components/LogSheet.tsx - Activity logging
web/src/components/ActivitySheet.tsx - Weigh-ins
web/src/components/WeighSheet.tsx - Goals interface
web/src/components/GoalsPage.tsx - Home goal note
web/src/components/GoalNote.tsx - Settings
web/src/settings/SettingsPage.tsx - Sign-in interface
web/src/components/AuthScreen.tsx
Client foundations
- Hash router
web/src/lib/route.ts - HTTP client
web/src/lib/api.ts - Log statistics
web/src/lib/stats.ts - Date utilities
web/src/lib/dates.ts - Sheet actions
web/src/lib/actions.tsx - Shared data types
shared/types.ts
Server services
- HTTP API
server/src/app.ts - App configuration
server/src/config.ts - Request security
server/src/security.ts - User management
server/src/users.ts - Goal service
server/src/goals.ts - Tracking log service
server/src/log.ts
Persistent data
- SQLite database
server/src/db.ts
Other components
- Tracker user
Connections 34
- Tracker user → App shell: uses
README.md - App shell → Hash router: reads routes
web/src/App.tsx - App shell → Home dashboard: renders
web/src/App.tsx - App shell → Calendar: renders
web/src/App.tsx - App shell → Goals interface: renders
web/src/App.tsx - App shell → Settings: renders
web/src/App.tsx - App shell → Sign-in interface: renders
web/src/App.tsx - App shell → Day detail: opens
web/src/App.tsx - App shell → Splurge logging: opens
web/src/App.tsx - App shell → Activity logging: opens
web/src/App.tsx - App shell → Weigh-ins: opens
web/src/App.tsx - Home dashboard → Home goal note: renders
web/src/components/Home.tsx - Home dashboard → Log statistics: calculates metrics
web/src/components/Home.tsx - Calendar → Log statistics: calculates totals
web/src/components/CalendarPage.tsx - Home dashboard → HTTP client: requests data
web/src/components/Home.tsx - Calendar → HTTP client: requests data
web/src/components/CalendarPage.tsx - Goals interface → HTTP client: updates goals
web/src/components/GoalsPage.tsx - Splurge logging → HTTP client: sends entries
web/src/components/LogSheet.tsx - Activity logging → HTTP client: sends entries
web/src/components/ActivitySheet.tsx - Weigh-ins → HTTP client: sends weigh-ins
web/src/components/WeighSheet.tsx - Day detail → HTTP client: requests day data
web/src/components/DaySheet.tsx - Log statistics → Date utilities: uses calendar arithmetic
web/src/lib/stats.ts - App shell → Sheet actions: provides actions
web/src/App.tsx - HTTP client → HTTP API: calls endpoints
web/src/lib/api.ts - HTTP API → SQLite database: opens
server/src/app.ts - HTTP API → User management: dispatches user operations
server/src/app.ts - HTTP API → Goal service: dispatches goal operations
server/src/app.ts - HTTP API → Tracking log service: dispatches log operations
server/src/app.ts - HTTP API → App configuration: reads settings
server/src/app.ts - HTTP API → Request security: guards requests
server/src/app.ts - Tracking log service → Goal service: uses goal service
server/src/log.ts - Tracking log service → User management: uses user service
server/src/log.ts - HTTP API → Shared data types: uses shared types
server/src/app.ts - HTTP client → Shared data types: types API data
web/src/lib/api.ts