{"repo":"Quenary/cardholder_pwa","free":true,"listed":false,"github":"https://github.com/Quenary/cardholder_pwa","clone":"git clone https://github.com/Quenary/cardholder_pwa.git","description":"Cardholder PWA is a self-hosted app for your loyalty and discount cards","language":"TypeScript","stars":56,"topics":[],"license":"MIT","category":"self-hosted-apps","readme_excerpt":"Cardholder PWA is a self-hosted app for your loyalty and discount cards - 🇬🇧 English - 🇷🇺 Русский Demo - Demo #1 - Demo #2 It's powered by free providers and can be suspended, which will lead to a long initial load - up to a minute, according to their notes. Main features: - PWA - you can install it on device from browser and use even offline (read-only) - Multi-user support - Easy to self-host - Open-source Core - Angular for frontend - Python with FastAPI and SQLAlchemy for backend Supported codes - TL;DR these are the main 2D (e.g. QR) and 1D (e.g. barcode) types. - App relies on: - zxing-js/browser and quagga2 for scanning codes. - bwip-js for displaying codes. - Supported codes: - Types of zxing-js - Types of quagga2 - Types of bwip-js - You can enter value and type of the code manually - bwip-js will display the code, if it is supported. - I noticed that zxing has a hard time detecting light codes on dark backgrounds. Maybe other scanners are affected by this as well. Preparation - Environment variables are not required, but you can still define some. There is .env.example containing list of vars with description. I’d recommend setting up at least SMTP to enable password recovery. - For PWA and video-stream code scanner functionality you need HTTPS access. I use a separate Nginx with Let's Encrypt certificate. Deploy - Using docker - Using docker-compose Account roles - The first registered account (after deployment or migration from version 0.0.13) will be assigned","default_branch":null,"files":null,"tree":[],"storefront":"/r/Quenary","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/Quenary/cardholder_pwa/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}