incr/README.md

2.9 KiB

incr

A minimalist counter with milestone-driven progress

Track anything you accumulate — with visual progress and milestone reinforcement

License: GPL v3 Laravel React

About

incr is a minimalist, self-hosted tracking app. Pick something you want to accumulate — shares, books, workouts, anything — log your progress, and watch milestones fall.

It features a distinctive LED-style digital display, configurable milestones, and optional price tracking.

Features

  • LED-style display — large red digital counter
  • Milestone tracking — set targets, cycle through them as you progress
  • Purchase logging — add entries with date and optional price
  • Price tracking — optional; log a current price to see portfolio value and P/L
  • Self-hosted — your data stays on your server

Tech Stack

  • Backend: Laravel 12 (PHP 8.3+) with MySQL
  • Frontend: React 19 + TypeScript with Inertia.js
  • Styling: Tailwind CSS 4 with shadcn/ui components
  • Deployment: Docker / Podman with multi-stage builds

Self-hosting

# docker-compose.yml
services:
  app:
    image: forge.lvl0.xyz/lvl0/incr:latest
    container_name: incr-app
    restart: unless-stopped
    environment:
      - APP_ENV=production
      - APP_DEBUG=false
      - APP_KEY=base64:YOUR_APP_KEY_HERE
      - DB_CONNECTION=mysql
      - DB_HOST=db
      - DB_PORT=3306
      - DB_DATABASE=incr
      - DB_USERNAME=incr_user
      - DB_PASSWORD=change_me
    ports:
      - "5001:80"
    depends_on:
      db:
        condition: service_healthy
    networks:
      - incr-network

  db:
    image: mysql:8.0
    container_name: incr-db
    restart: unless-stopped
    environment:
      - MYSQL_DATABASE=incr
      - MYSQL_USER=incr_user
      - MYSQL_PASSWORD=change_me
      - MYSQL_ROOT_PASSWORD=change_me_root
    volumes:
      - db_data:/var/lib/mysql
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "incr_user", "-pchange_me"]
      timeout: 10s
      retries: 10
      interval: 10s
      start_period: 10s
    networks:
      - incr-network

networks:
  incr-network:
    driver: bridge

volumes:
  db_data:

Generate an app key with: php artisan key:generate --show

The app will be available at http://localhost:5001.

Development

Requires Nix. Enter the dev shell:

nix-shell
dev-up

Available commands inside the shell: dev-up, dev-down, dev-rebuild, dev-logs, dev-shell, dev-artisan, dev-composer.

License

GNU General Public License v3.0 — see LICENSE.