![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 - 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](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