Warracker
π‘οΈ Warracker is an open source, self-hostable warranty tracker to monitor expirations, store receipts, files. You own the data, your rules!
Install / Use
/learn @sassanix/WarrackerREADME
πOverview
Warracker is a web-based application that simplifies the management of product warranties. It allows users to organize warranty information, monitor expiration dates, and securely store related documents.
π Key Features
| Feature | Description | | -------------------------------- | -------------------------------------------------------------------------------------------------------- | | ποΈ Centralized Management | Track all your product warranties in one place | | π§Ύ Detailed Records | Store purchase dates, durations, notes, and product photos with thumbnail previews | | π Document Storage | Upload receipts, invoices, and manuals securely | | π Warranty Claims | Manage warranty claims end-to-end with statuses, dates, resolutions, and full lifecycle visibility | | π Proactive Alerts | Get alerts for upcoming expirations via email or 100+ push services (Discord, Slack, etc.) using Apprise | | π Quick Search and Filter | Search by product name, serial number, vendor, tags, and more with real-time filtering | | #οΈβ£ Multiple Serial Numbers | Add and manage multiple serial numbers per product | | π Global Warranty View | Authenticated users can view global warranty data with role-based permissions | | π₯ Multi-User Support | Manage multiple accounts with admin controls and global access toggles | | π€ Data Export/Import | Import/export warranty data via CSV | | βοΈ Customizable Settings | Configure currency, date formats, notification timing, and branding | | π Internationalization Support | Support for multiple currencies and date formats tailored to regional preferences, enabling a seamless global user experience | | π·οΈ Tagging | Organize warranties using custom tags | | π¦ Archiving | Archive expired or unused warranties for better organization, while keeping records accessible when needed | | π Password Reset | Token-based, secure account recovery system | | π OIDC SSO | Single sign-on with providers like Google, GitHub, and Keycloak | | π Status Dashboard | Visual analytics and stats with charts, tables, and global/user views | | π± Responsive UI | Mobile-friendly interface with admin tools and improved UX | | π¦ Paperless-ngx Integration | Store/manage documents directly in Paperless-ngx with file-level control | | π Localization Support | Full multilingual UI with 20 languages, RTL support, instant language switching, and native name display |
Project Status
Warracker is in active development. The essential features are reliable and ready for everyday use. Development is ongoing, with regular updates and improvements.
- β Stable core for tracking, notification , and managing warranty documents, files
- β Full support for self-hosted deployments
- βοΈ Advanced enhancements are still being worked on
- βοΈ Your feedback and bug reports help shape the future of the app
πΈScreenshots
Home Page
<img width="1214" height="928" alt="image" src="https://github.com/user-attachments/assets/0c13e416-42ea-4378-ae50-7addee435e00" /> <img width="1208" height="927" alt="image" src="https://github.com/user-attachments/assets/4c5fdd5d-ff43-427d-82a5-45121dd21373" />Status Dashboard
<img width="1167" height="1140" alt="image" src="https://github.com/user-attachments/assets/fca09073-7c34-4165-ad5c-86a03618ec87" />π οΈTechnology Stack
- Frontend: HTML, CSS, JavaScript
- Backend: Python with Flask
- Database: PostgreSQL
- Containerization: Docker and Docker Compose
- Web Server: Nginx
πΊοΈRoadmap
- β User Authentication
- β Settings Page
- β Status Page
- β Customizable Reminders
- β Email Notifications
- β Warranty Categories via Tags
- β CSV Import/Export
- β OIDC SSO Functionality
- β Advanced User/Admin Controls
- β Paperless-ngx integration
- β Localization Support
- β Warranty Claim Tracking
- β Audit trail
- [ ] Calendar Integration
πSetup
Prerequisites
- Docker and Docker Compose installed on your system.
πPull Docker
services:
warracker:
image: ghcr.io/sassanix/warracker/main:latest
ports:
- "8005:80"
volumes:
- warracker_uploads:/data/uploads
env_file:
- .env
depends_on:
warrackerdb:
condition: service_healthy
restart: unless-stopped
warrackerdb:
image: postgres:15-alpine
volumes:
- postgres_data:/var/lib/postgresql/data
env_file:
- .env
restart: unless-stopped
healthcheck:
test: ["CMD-SHELL", "pg_isready -U $$POSTGRES_USER -d $$POSTGRES_DB"]
interval: 5s
timeout: 5s
retries: 5
volumes:
postgres_data:
warracker_uploads:
To get the docker compose file with environemts and .env example for warracker and the warrackerdb please go here
π Usage
Accounts & Roles
- The first account created in the system will automatically become the Admin account.
- The Admin can manage other users, assign roles, and has full system permissions.
- Regular users can only manage their own warranties unless granted additional privileges by the Admin.
Adding a Warranty
- Fill in the product details by clicking on Add Warranty.
- Enter the purchase date and warranty duration.
- Optionally upload receipt/documentation.
- Click the Add Warranty button.
Managing Warranties
- Use the search box to filter warranties.
- Click the edit icon to modify warranty details.
- Click the delete icon to remove a warranty.
Click on Data > Import
| Field Name | Format / Example | Required? | Notes |
|----------------|-------------------------------------------|--------------------------------------------------------|-----------------------------------------------------------------------|
| ProductName | Text | β
Yes | Provide the name of the product. |
| PurchaseDate | Date (YYYY-MM-DD, e.g., 2024-05-21) | β
Yes | Use ISO format only. |
| WarrantyDurationYears | Whole Number (0, 1, 5) | β
Yes, if IsLifetime is FALSE and Months/Days are 0/blank. At least one duration field (Years, Months, Days) must be non-zero if not lifetime. | Represents the years part of the warranty. Can be combined with Months and Days. |
| WarrantyDurationMonths | Whole Number (0, 6, 18) | β
Yes, if IsLifetime is FALSE and Years/Days are 0/blank. At least one duration field (Years, Months, Days) must be non-zero if not lifetime. | Represents the months part of the warranty. Can be combined with Years and Days. Max 11 if Years also provided. |
| WarrantyDurationDays | Whole Number (0, 15, 90) | β
Yes, if IsLifetime is FALSE and Years/Months are 0/blank. At least one duration field (Years, Months, Days) must be non-zero if not lifetime. | Represents the days part of the warranty. Can be combined with Years and Months. Max 29/30 if Months also provided. |
| ExpirationDate | Date (YYYY-MM-DD, e.g., 2031-10-08) | β No (Optional) | Use this if duration fields are 0 and IsLifetime is FALSE. |
| IsLifetime | TRUE or FALSE (case-insensitive) | β No (Optional)
