Warracker - Warranty Tracker 0.9.9.5-Beta

Warracker is an open-source warranty tracker application designed to help you effortlessly keep track of product warranties, expiration dates, and related documentation. Warracker is a web-based application that provides a centralized system for managing all your product warranties. Key features include: Tracking product warranties in one central location. Adding warranty details, including purchase dates and duration. Uploading and storing warranty documentation and receipts. Providing visual indicators for active, expiring soon, and expired warranties. Searching through your warranty collection. Warranty Management: Add, edit, and delete warranty information. Document Storage: Upload and securely store receipts and warranty documentation. Status Tracking: Visual indicators for warranty status (active, expiring soon, expired). Search: Easily find warranties by product name. Responsive Design: A seamless experience on both desktop and mobile devices.

Tags self-hosted warranty bookkeeping flask python javascript postgresql
License Affero GPLv3
State beta

Recent Releases

0.9.9.5-Beta07 May 2025 18:21 minor feature: Changed Header Branding Improvement: The Warracker title in the header of the Status, Settings, and About pages is now a clickable link to index.html, enhancing navigation and consistency. Affected files: frontend/status.html, frontend/settings-new.html, frontend/about.html Tag Dropdown Styling Cleanup: Removed all background and text colors from the tags dropdown in both dark and light modes for a cleaner, more uniform appearance. Affected files: frontend/style.css, frontend/script.js, plus any related tag-dropdown CSS/JS Docker Base Image Upgrade: Updated the Dockerfile to use Python 3.12 on Debian 12 (Bookworm) as the base image, improving compatibility and security. Affected file: Dockerfile
0.9.9.4-Beta05 May 2025 01:25 minor feature: ### Added * **Admin/User Tag Separation** * Admin-only and User-only tags with backend enforcement (`is_admin_tag`). * Role-based filtering across all tag-related endpoints. * DB migration: `009_add_admin_flag_to_tags.sql`. * **Version Checker** * About page now checks for the latest GitHub release and indicates update status. * **Mobile Home Screen Icon Support** * Added Apple touch icon and web app manifest for Android/iOS home screen support. * **Optional Vendor Field for Warranties** * Vendor info can be added/edited, shown in UI, and included in search. * DB migration: `017_add_vendor_to_warranties.sql`. * **Serial Number Search** * Search now matches serial numbers in addition to names, notes, and tags. * **CSV Import: Vendor Field** * Support for importing vendor via CSV with header `Vendor`. * **Date Format Customization** * Users can choose from 6 display formats for warranty dates. Persisted across sessions and tabs. * **IPv6 Support** * Nginx now listens on both IPv4 and IPv6 (`listen :: :80;`). * **Cloudflare Compatibility** * Added `data-cfasync="false"` to ensure script loading behind Cloudflare. * **New API Endpoint: `/api/timezones`** * Structured list of timezones grouped by region. --- ### Changed * **Theme Persistence Overhaul** * Unified theme preference using a single `localStorage` key: `darkMode`. * Removed all prefixed or redundant keys and logic. * Ensured early loading of `theme-loader.js` across all HTML files. * Reliable persistence across sessions and pages. * **Migration System Refactor** * Improved reliability and removed obsolete files. * **Warranty Visibility Logic** * Admins now only see their own warranties. * Fixed leakage of user warranties across roles. --- ### Fixed * **Tag Visibility** * Corrected reversed visibility logic between Admins and Users. * **Date Handling (Off-by-One Errors)** https://github.com/sassanix/Warracker/releases
0.9.9.3-Beta30 Apr 2025 23:14 minor feature: ### Added - **Document Deletion in Edit Warranty** - Users can now delete uploaded documents (Invoice/Receipt and Product Manual) when editing warranties. - "Delete Invoice" and "Delete Manual" buttons are shown if documents exist; deletion is processed on save. - Backend and database handle storage removal and clearing document references. - _Files: `backend/app.py`, `frontend/index.html`, `frontend/script.js`_ - **Notes for Warranties** - Users can add, view, and edit freeform notes for each warranty. - Notes are available during add/edit flows and viewable from the warranty card. - Notes support multi-line text, are searchable and filterable. - Backend and database updates include migrations and API enhancements. - Full UI support for light and dark themes. - _Files: `backend/app.py`, `backend/migrations/014_add_notes_to_warranties.sql`, `frontend/index.html`, `frontend/script.js`, `frontend/style.css`_ - **Currency Symbol Customization** - Users can choose their preferred currency symbol ( , , , , , or custom) from Settings. - Selected symbol now appears next to purchase prices. - _Files: `backend/app.py`, `backend/migrations/006_add_currency_symbol_column.py`, `frontend/settings-new.html`, `frontend/settings-new.js`, `frontend/index.html`, `frontend/script.js`, `frontend/style.css`_ - **Password Reset Functionality** - Secure, token-based password reset workflow now available. - "Forgot Password?" link added to the login page. - Email-based reset flow implemented with dedicated frontend pages. - Backend handles tokens, email sending, and password updates. - _Files: `backend/app.py`, `frontend/login.html`, `frontend/reset-password-request.html`, `frontend/reset-password.html`, `backend/migrations/003_add_users_table.sql`_ ### Changed - **Status Page Table** - Removed "Actions" column from "Recently Expired or Expiring Soon" table for a cleaner layout. - Updated tables to use dynamic column widths, eliminatin
0.9.9.2-Beta21 Apr 2025 14:17 minor feature: Summary of Updates Added Fractional Warranty Years: Supports decimal values (e.g., 1.5) across backend, frontend, and CSV import/export. Accurate validation and expiration calculations. UI now accepts and displays fractional years. CSV Import Button: New Import button added (CSV format only). CSV schema includes fields like ProductName, PurchaseDate, WarrantyYears, and optional metadata. Changed Theme Handling: Unified dark mode handling via single localStorage key (darkMode). Centralized logic eliminates flash issues on page load. Modal UX: "Add Warranty" modal now closes only via the 'X' button, not on backdrop click. Fixed Wizard Navigation: Tabs update correctly; fixed TypeError and ReferenceError issues. Header Layout: Standardized header across desktop and mobile layouts. Mobile headers fixed for proper alignment and style isolation. Dark/Light Mode Persistence: Theme changes now persist consistently across pages. User Menu: Dropdown issues fixed; toggle logic centralized for reliability. JavaScript Stability: Resolved various JS errors (variable scope, order, and checks). API Integration: Corrected parsing of /api/statistics response structure. Removed Settings Gear Icon: Removed from header across all main pages for a cleaner UI. Known Issues for Next Release Username toggles inconsistently between display name and username. List and table views need refinement. Let me know if you want a visual diff or changelog-style breakdown.
0.9.9.1-Beta14 Apr 2025 02:28 minor feature: Hi everyone! Thank you all for downloading, and trying out Warracker. I'm realising this update, with many of your added input, as always, let me know what you think, and what you'd like me to fix, or add in the future releases. Thanks everyone for your support! Sassanix Added About Page: Added a new "About" page accessible via /about.html (frontend/about.html). Displays application version, links to GitHub repository, releases, author profile, license (AGPL-3.0), and issue tracker. UI: Added an "About" link to the user menu dropdown in the header, appearing after "Settings" (frontend/index.html, frontend/status.html, frontend/settings-new.html). UI/UX: Refactored the "Add New Warranty" form into a modal dialog (#addWarrantyModal) triggered by a button click, instead of being always visible on the main page (frontend/index.html, frontend/script.js, frontend/style.css). The modal is initially hidden and displayed using JavaScript. Added event listeners to show/hide the modal on button click, close button click, and backdrop click. Implemented resetAddWarrantyWizard function to clear the form, reset tabs, tags, and file inputs when the modal is closed or submitted successfully. Modified form submission (submitForm) to close and reset the modal upon success. UI: Moved the "Add New Warranty" button (#showAddWarrantyBtn) from the top of the main content area into the header of the "Your Warranties" panel (.panel-header) for better context (frontend/index.html). Layout: Adjusted the .warranties-panel CSS to span the full width (grid-column: 1 / -1;) after the form was moved out of the main grid flow (frontend/style.css). Layout: Updated .panel-header CSS to use Flexbox for aligning the title (h2) to the left and action buttons (.panel-header-actions containing Add Warranty and Refresh buttons) to the right (frontend/style.css). Layout: Removed the border-bottom style from the .panel-header / .warranti
0.9.9.0-Beta06 Apr 2025 17:33 minor feature: Fixed Tag Management: Resolved issues with adding and deleting tags. Backend: Added the missing DELETE /api/tags/ API endpoint (backend/app.py) to handle tag deletion requests, including removing associations from the warranty_tags table. Frontend: Corrected the deleteTag function (frontend/script.js) to use the DELETE method and the correct API endpoint. Frontend: Improved UI feedback for tag operations: The tag list in the "Manage Tags" modal now updates immediately after adding or deleting a tag (renderExistingTags). The tag input fields in the modal are cleared after successfully adding a tag. The tag filter dropdown on the main page updates after adding or deleting tags (populateTagFilter). Selected tags display in the add/edit warranty forms update correctly after a tag is deleted (renderSelectedTags, renderEditSelectedTags). Added loading spinners and improved toast notifications/error messages for tag creation and deletion. Added Lifetime Warranty Support Added lifetime warranty option for both new and existing warranties Implemented database migration to add is_lifetime column to warranties table Added lifetime warranty checkbox in add/edit warranty forms Modified warranty display to show "Lifetime" instead of expiration date for lifetime warranties Enhanced warranty status handling to properly manage lifetime warranties Updated statistics and expiring notifications to exclude lifetime warranties Added dynamic form behaviour to hide warranty years input when lifetime is selected Changed Backend API Modified warranty-related endpoints to handle lifetime warranty flag Updated warranty validation to make warranty years optional for lifetime warranties Enhanced warranty processing to handle lifetime warranties differently in statistics Modified expiring warranty notif
0.9.8.9-Beta03 Apr 2025 14:31 minor feature: Added Settings Page: Added a new display section within the "Account Settings" card (settings-new.html) to show the current user's First Name, Last Name, and Email. Changed Settings Page: The new user information display now updates instantly when the user saves changes to their profile (First/Last Name) without requiring a page refresh (settings-new.js). Backend API: Modified the /api/auth/user GET endpoint (backend/app.py) to query the database and return the full user profile, including first_name and last_name, instead of just the basic information available from the authentication token. This ensures the settings page can display the complete, up-to-date user details. Styling: Added optional CSS rules (settings-styles.css) to style the new user information display area on the settings page.
0.9.8.4-Beta28 Mar 2025 15:16 minor feature: Fixed database migration system issues Resolved issue with missing user_preferences table causing notification preference errors Enhanced migration system to support both SQL and Python-based migrations Added idempotent execution of SQL migrations with existence checks Created improved migration tracking to prevent duplicate migration attempts Updated Docker configuration for proper migration script execution
0.05.1-beta03 Mar 2025 21:35 minor feature: Double edit buttons, now there is only one edit button. Added a status page, can access /test.html to see if everything is working properly