A web application for organizing and tracking LEGO sets, parts, and minifigures.
Go to file
2024-12-27 22:51:29 +01:00
archive Added archive folder and moved unused files 2024-06-29 16:03:05 +02:00
static More CSS fix 2024-03-04 09:24:13 -05:00
templates Fic Wishlist Page Title 2024-12-27 15:02:24 +01:00
.env.sample Fixed hardcoded url 2024-06-29 17:38:52 +02:00
.gitignore updated gitignore 2024-06-29 16:10:44 +02:00
app.py Added test if retired sets not existing 2024-12-27 11:06:43 +01:00
compose.yaml Changed name 2024-12-26 20:27:17 +01:00
database.py Added download of color csv 2024-04-26 16:42:40 +02:00
db.py Working on wishlist 2024-12-26 20:05:34 +01:00
dl.sh Added script to easier download instructions 2024-11-20 22:04:45 +01:00
Dockerfile Added Gunicorn Docker server (fixed #7) 2024-06-18 17:41:15 +02:00
downloadRB.py Working on retirement date on wishlist 2024-12-27 09:46:54 +01:00
lego.sh Added download of color csv 2024-04-26 16:42:40 +02:00
LICENSE Initial commit 2024-02-28 19:58:47 +01:00
README.md Updated readme for prebuild image. Fixes #20 2024-12-27 22:51:29 +01:00
requirements.txt Added python requirements.txt 2024-06-19 17:11:44 +02:00

BrickTracker

A web application for organizing and tracking LEGO sets, parts, and minifigures. Uses the Rebrickable API to fetch LEGO data and allows users to track missing pieces and collection status.

Screenshots at the end of the readme!

Features

  • Track multiple LEGO sets with their parts and minifigures
  • Mark sets as checked/collected
  • Track missing pieces
  • View parts inventory across sets
  • View minifigures across sets
  • Automatic updates for LEGO data (themes, colors, sets)
  • Wishlist to keep track of what to buy

Prerequisites

  • Docker
  • Docker Compose
  • Rebrickable API key (from Rebrickable)

Setup

  1. Clone the repository:
git clone https://gitea.baerentsen.space/FrederikBaerentsen/BrickTracker.git
cd BrickTracker
mkdir static/{sets,instructions,parts,minifigs}
  1. Create a .env file with your configuration:
REBRICKABLE_API_KEY=your_api_key_here
DOMAIN_NAME=https://your.domain.com

If using locally, set DOMAIN_NAME to http://localhost:3333.

  1. Deploy with Docker Compose:
docker compose up -d
  1. Access the web interface at http://localhost:3333

  2. The database is created, csv files are downloaded and you will be redirected to the /create page for inputting a set number.

Setup using pre-build Docker image

  1. Setup folders and files:
mkdir BrickTracker
cd BrickTracker
mkdir -p static/{sets,instructions,parts,minifigs}
touch app.db
  1. Create Docker Compose file:
services:
  bricktracker:
    container_name: BrickTracker
    restart: unless-stopped
    image: gitea.baerentsen.space/frederikbaerentsen/bricktracker:latest
    ports:
      - "3333:3333"
    volumes:
      - ./.env:/app/.env
      - ./static/parts:/app/static/parts
      - ./static/instructions:/app/static/instructions
      - ./static/sets:/app/static/sets
      - ./static/minifigs:/app/static/minifigs
      - ./app.db:/app/app.db
    environment:
      - REBRICKABLE_API_KEY=your_api_key_here
      - DOMAIN_NAME=https://your.domain.com

If using locally, set DOMAIN_NAME to http://localhost:3333.

  1. Deploy with Docker Compose:
docker compose up -d
  1. Access the web interface at http://localhost:3333

  2. The database is created, csv files are downloaded and you will be redirected to the /create page for inputting a set number.

  3. csv files are downloaded inside the container. If you delete the container, go to /config and redownload them again.

Usage

Adding Sets

  1. Go to the Create page
  2. Enter a LEGO set number (e.g., "42115")
  3. Wait for the set to be downloaded and processed

Managing Sets

  • Mark sets as checked/collected using the checkboxes
  • Track missing pieces by entering quantities in the parts table
    • Note, the checkbox for missing pieces is updated automatically, if the set has missing pieces. It cannot be manually checked off.
  • View all missing pieces across sets in the Missing page
  • View complete parts inventory in the Parts page
  • View all minifigures in the Minifigures page

Instructions

Instructions can be added to the static/instructions folder. Instructions must be named:

  • SetNumber.pdf: 10312-1.pdf or 7001-1.pdf. Sets with multiple versions (eg. collectible minifigures use -1, -2 etc) like 71039-1.pdf and 71039-2.pdf.
  • SetNumber-pdf_number.pdf: 10294-1-1.pdf, 10294-1-2.pdf and 10294-1-3.pdf for all three PDFs of the 10294-1 set.

Instructions are not automatically downloaded!

Docker Configuration

The application uses two main configuration files:

docker-compose.yml

services:
  bricktracker:
    container_name: BrickTracker
    restart: unless-stopped
    build: .
    ports:
      - "3333:3333"
    volumes:
      - .:/app
    env_file:
      - .env

Dockerfile

FROM python:slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
RUN bash lego.sh
CMD ["gunicorn","--bind","0.0.0.0:3333","app:app","--worker-class","eventlet"]

Development

The application is built with:

  • Flask (Python web framework)
  • SQLite (Database)
  • Socket.IO (Real-time updates)
  • Rebrickable API (LEGO data)

Key files:

  • app.py: Main application code
  • db.py: Database operations
  • downloadRB.py: Rebrickable data download utilities

Notes

  • The application stores images locally in the static directory
  • Database is stored in app.db (SQLite)
  • LEGO data is cached in CSV files from Rebrickable
  • Images are downloaded from Rebrickable when entering a set and then stored locally.
  • The code is AS-IS! I am not a professional programmer and this has been a hobby projects for a long time. Don't expect anything neat!

Screenshots

Front page

Search your inventory and sort by theme, year, parts, id, name or sort by missing pieces. If you download instructions as PDF, add them to a specific folder and they show up under each set

Inventory

Filter by color, quantity, name. Add if a piece is missing. Press images to show them. Filter by only missing pieces. Minifigures and their parts are listed at the end.

Missing pieces

List of all your missing pieces, with links to bricklink and rebrickable.

All parts

List of all parts in your inventory.

Minifigures

List of all minifigures in your inventory and quantity.

Multiple sets

Each set is given a unique ID, such that you can have multiple copies of a set with different pieces missing in each copy. Sets can also easily be deleted from the inventory.

Add set

Sets are added from rebrickable using your own API key. Set numbers are checked against sets.csv from rebrickable and can be updated from the config page. When a set is added, all images from rebrickable are downloaded and stored locally, so if multiple sets contains the same part/color, only one image is downloaded and stored. This also make no calls to rebrickable when just browsing and using the site. Only time rebrickable to used it when up adding a new set.

Wishlist

Sets are added from rebrickable and again checked against sets.csv. If you can't add a brand new set, consider updating your data from the /config page. Press the delete button to remove a set. Known Issue: If multiple sets of the same number is added, they will all be deleted.