sassanix ba2342f579 Notes,Doc Deletion, Currency, Password Reset
For more details on this update, please check the changelogs.
2025-04-27 17:14:02 -03:00
2025-04-21 09:58:28 -03:00
2025-03-01 22:39:48 -04:00
2025-04-13 23:12:03 -03:00
2025-03-03 09:13:34 -04:00
2025-04-13 23:12:03 -03:00
2025-04-21 17:16:07 -03:00

420682616-b65106d3-2c3c-4f6c-a4b7-4ec6e010e5b8

GitHub issues GitHub license GitHub last commit GitHub release GitHub contributors

Dependencies Status Maintenance

🛡️ Warracker

Warracker is an open-source warranty tracker application designed to help you effortlessly keep track of product warranties, expiration dates, and related documentation.

🌟 Overview

Warracker is a web-based application that provides a centralized system for managing all your product warranties. Key features include:

  • Centralized Warranty Management: Track all product warranties in one place.
  • Detailed Records: Store key warranty information like purchase date and duration.
  • Document Storage: Upload and securely store warranty documentation and receipts.
  • Proactive Alerts: Get visual notifications for active, expiring (customizable from 1 to 365 days), and expired warranties.
  • Quick Search: Easily find specific warranties within your collection.
  • Secure Access: User authentication and support for multiple users.
  • System Status: Real-time system status page.
  • Data Export: Export warranty data to CSV format.
  • Data Import: Import warranty data in CSV format.
  • Email notifications: Stay informed about expiring warranties with email reminders, based on your preference delivered daily, weekly, or monthly.
  • Tagging: Add tags to help categorize and group warranties.

📸 Screenshots

Home Page

image

image

Status Dashboard

image

Features

  • 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 or tags.
  • Tag: Group your warranties by using multiple tags.
  • Responsive Design: A seamless experience on both desktop and mobile devices.

🛠️ Technology Stack

  • Frontend: HTML, CSS, JavaScript
  • Backend: Python with Flask
  • Database: PostgreSQL
  • Containerization: Docker and Docker Compose
  • Web Server: Nginx

🚀 Setup

Prerequisites

  • Docker and Docker Compose installed on your system.
  • Git (for cloning the repository).

Fresh Installation 🆕

  1. Clone the repository:
    git clone https://github.com/sassanix/Warracker.git
    
  2. Navigate to the project directory:
    cd Warracker
    
  3. Start the application using Docker:
    docker compose up
    

Updating from a Previous Version ⬆️

  1. Pull the latest changes:

    git pull origin main
    
  2. Rebuild and restart the containers:

    docker compose down
    docker compose up --build
    
  3. Access the Application:

    Open your browser and navigate to http://localhost:8005.

🐋 Pull Docker

  services:
  warracker:
    image: ghcr.io/sassanix/warracker/main:latest
    ports:
      - "8005:80"
    volumes:
      - warracker_uploads:/data/uploads
    environment:
      - DB_HOST=warrackerdb
      - DB_NAME=warranty_db
      - DB_USER=warranty_user
      - DB_PASSWORD=${DB_PASSWORD:-warranty_password}
      - SMTP_HOST=smtp.email.com
      - SMTP_PORT=465
      - SMTP_USERNAME=youremail@email.com
      - SMTP_PASSWORD=password
    depends_on:
      warrackerdb:
        condition: service_healthy
    restart: unless-stopped
  
  warrackerdb:
    image: postgres:15-alpine
    volumes:
      - postgres_data:/var/lib/postgresql/data
    environment:
      - POSTGRES_DB=warranty_db
      - POSTGRES_USER=warranty_user
      - POSTGRES_PASSWORD=${DB_PASSWORD:-warranty_password}
    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 please go here

📝 Usage

Adding a Warranty

  1. Fill in the product details on the left panel.
  2. Enter the purchase date and warranty duration.
  3. Optionally upload receipt/documentation.
  4. 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.

📦 Product Information Entry Requirements for 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.
WarrantyYears Whole Number (1, 3, 10) Yes, unless IsLifetime is TRUE Must be between 1 and 100 if provided.
IsLifetime TRUE or FALSE (case-insensitive) No (Optional) If omitted, defaults to FALSE.
PurchasePrice Number (199.99, 50) No (Optional) Cannot be negative if provided.
SerialNumber Text (SN123, SN123,SN456) No (Optional) For multiple values, separate with commas.
ProductURL Text (URL format) No (Optional) Full URL to product page (optional field). https://producturl.com
Tags Text (tag1,tag2) No (Optional) Use comma-separated values for multiple tags.

💻 Development

Local Development Environment

  1. Clone the repository.

  2. Make your changes.

  3. Build and run with Docker Compose:

    docker-compose build
    docker-compose up -d
    

Project Structure

warracker/
├── backend/             # Python Flask backend
│   ├── app.py           # Main application logic
│   ├── requirements.txt # Python dependencies
│   └── init.sql         # Database initialization
├── frontend/            # Web frontend
│   ├── index.html
│   ├── script.js
│   └── style.css
├── docker-compose.yml   # Docker configuration
├── Dockerfile           # Container definition
└── nginx.conf           # Web server configuration

🗺️ Roadmap

  • User Authentication - Completed
  • Settings Page - Completed
  • Status Page - Completed
  • Customizing Reminders to any day needed - Completed
  • Email Reminders for Expiring Warranties - Completed
  • Warranty Categories/Grouping through tags - Completed
  • Warranty Data Import (CSV) - Completed
  • Improved Search and Filtering - Planned
  • Warranty claim tracking - Planned
  • Calendar Integration - Planned

🛠️ Troubleshooting

Common Issues

  • Connection Refused Error: Ensure all containers are running (docker-compose ps). Verify the backend is correctly connected to the database.
  • Database Errors: If schema issues arise, double-check that the database initialization script (init.sql) matches the expected schema in app.py.

🤝 Contributing

Contributions are welcome! We encourage you to submit a Pull Request.

  1. Fork the repository.
  2. Create your feature branch (git checkout -b feature/amazing-feature).
  3. Commit your changes (git commit -m 'Add some amazing feature').
  4. Push to the branch (git push origin feature/amazing-feature).
  5. Open a Pull Request.

📜 License

This project is licensed under the GNU Affero General Public License v3.0 - see the LICENSE file for details.

🙏 Acknowledgements

  • Flask
  • PostgreSQL
  • Docker

Star History

Star History Chart
Description
An open-source web application to manage product warranties, track expiration dates, and store related documents.
Readme AGPL-3.0 24 MiB
Languages
JavaScript 45.6%
Python 25.2%
HTML 18.4%
CSS 10.3%
Dockerfile 0.3%
Other 0.2%