An open API service indexing awesome lists of open source software.

https://github.com/sassanix/Warracker

An open-source web application to manage product warranties, track expiration dates, and store related documents.
https://github.com/sassanix/Warracker

beta css database docker flask html javascript nginx open-source postgresql python self-hosted warranty-management warranty-tracker web-application

Last synced: 5 days ago
JSON representation

An open-source web application to manage product warranties, track expiration dates, and store related documents.

Awesome Lists containing this project

README

        



![420682616-b65106d3-2c3c-4f6c-a4b7-4ec6e010e5b8](https://github.com/user-attachments/assets/cb373fe8-b4d2-47ac-bf7b-060289e6e17c)


![GitHub issues](https://img.shields.io/github/issues/sassanix/Warracker)
![GitHub license](https://img.shields.io/github/license/sassanix/Warracker)
![GitHub last commit](https://img.shields.io/github/last-commit/sassanix/Warracker)
![GitHub release](https://img.shields.io/github/v/release/sassanix/Warracker)
![GitHub contributors](https://img.shields.io/github/contributors/sassanix/Warracker)

[![Dependencies Status](https://img.shields.io/badge/dependencies-up%20to%20date-brightgreen.svg)](https://github.com/denser-org/denser-retriever/pulls?utf8=%E2%9C%93&q=is%3Apr%20author%3Aapp%2Fdependabot)
![Maintenance](https://img.shields.io/badge/Maintained-Actively-green)

#

# πŸ›‘οΈ 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.
* **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](https://github.com/user-attachments/assets/a89d1c86-a70c-488f-920a-d0c5ff2a5009)

![image](https://github.com/user-attachments/assets/af34a7e4-5475-486c-acaa-2cbc65a14600)

**Status Dashboard**

![image](https://github.com/user-attachments/assets/42bcf2b1-46fa-4136-abfa-bed747fa08e9)

## ✨ 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
- [email protected]
- 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](https://github.com/sassanix/Warracker/tree/main/Docker)

## πŸ“ 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.

## πŸ’» Development

### Local Development Environment

1. Clone the repository.
2. Make your changes.
3. Build and run with Docker Compose:

```bash
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) - **Planned**
* 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](LICENSE) file for details.

## πŸ™ Acknowledgements

* Flask
* PostgreSQL
* Docker

## ⭐ Star History




Star History Chart