incr/README.md

4.6 KiB

📈 incr

A minimalist investment tracker for VWCE shares with milestone-driven progress

Track your portfolio growth with visual progress indicators and milestone reinforcement

License: GPL v3 Docker Laravel React


IntroductionFeaturesTech StackGetting StartedDevelopmentContributingLicense


Introduction

Incr is a minimalist, one-page investment tracking application designed specifically for VWCE (Vanguard FTSE All-World UCITS ETF) shareholders. It combines the satisfaction of visual progress tracking with practical portfolio management, featuring a distinctive LED-style digital display and milestone-based goal setting.

The application emphasizes simplicity and focus, providing just what you need to track your investment journey without overwhelming complexity.

Features

  • LED-style display: Large red digital counter showing current share count
  • Progress tracking: Visual progress bar toward configurable milestones
  • Purchase management: Add and track share purchases with historical data
  • Financial insights: Portfolio value and withdrawal estimates
  • Milestone cycling: Track progress toward multiple investment goals (1500→3000→4500→6000)

Tech Stack

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

Getting Started

Quick Start (Production)

Docker

Create a docker-compose.yml file:

services:
  app:
    image: codeberg.org/lvl0/incr:0.1.14
    container_name: incr-app
    restart: unless-stopped
    working_dir: /var/www/html
    environment:
      - APP_ENV=production
      - APP_DEBUG=false
      - DB_CONNECTION=mysql
      - DB_HOST=db
      - DB_PORT=3306
      - DB_DATABASE=incr
      - DB_USERNAME=incr_user
      - DB_PASSWORD=incr_password
    volumes:
      - ./storage:/var/www/html/storage
      - ./public:/var/www/html/public
    ports:
      - "80:80"
    depends_on:
      - db
    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=incr_password
      - MYSQL_ROOT_PASSWORD=root_password
    volumes:
      - db_data:/var/lib/mysql
    ports:
      - "3306:3306"
    networks:
      - incr-network

networks:
  incr-network:
    driver: bridge

volumes:
  db_data:
    driver: local

Then run:

docker compose up -d

The application will be available at http://localhost.

Default credentials: You'll need to register a new account on first visit.

Development

Local Development Setup

For local development with Laravel Sail:

# Install Laravel Sail
composer install
sail artisan sail:install

# Start development environment
sail up -d

# Install frontend dependencies and build assets
npm install
npm run dev

# Run migrations
sail artisan migrate

The development server will be available at http://localhost with hot reload enabled.

Project Structure

  • app/ - Laravel backend (controllers, models, services)
  • resources/js/ - React frontend components and pages
  • docker/ - Production Docker configuration
  • database/migrations/ - Database schema definitions

Contributing

We welcome contributions to incr! Whether you're reporting bugs, suggesting features, or submitting pull requests, your input helps make this project better.

How to Contribute

  1. Fork the repository
  2. Create a 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

Bug Reports

If you find a bug, please create an issue with:

  • A clear description of the problem
  • Steps to reproduce the issue
  • Expected vs actual behavior
  • Your environment details

License

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