A simple Flask app where users can collect Brick sets, view details, and manage their own collection.
You can try the website here: https://brick-tracker.fly.dev
There is an example account:
- Username: test
- Password: 1234
- User registration & login (Flask-Login)
- Add / edit / delete brick sets and brands (admin only)
- Users can collect and manage their sets
Here are a some preview shots of the web app.
Once logged in, users see some statistics showing the total number of sets they own and the overall piece count.
The sample.db has been pre-loaded with data, so you don't need to set up your own database. It has some brick brands and sets added and a user with an editor role. The example sets are sourced from Rebrickable's Free LEGO Catalog Database.
- Username: test
- Password: 1234
- Python + Flask + SQLAlchemy
- PostgreSQL (SQLite fallback)
- HTML with Jinja2 templates
- Bootstrap5 with the Freelancer theme
- RESTful API (Flask-RESTful)
-
Clone this repo
git clone https://github.com/RobertLippai/brickset_tracker.git cd brickset-tracker -
Create a virtual environment & install dependencies:
python -m venv venv source venv/bin/activate pip install -r requirements.txt -
Configure environment variables
-
Copy the example file:
cp .env.example .env
-
Fill in the variables inside .env file.
-
If you’re using PostgreSQL, make sure your DB is set up and the URI is correct. If no SQLALCHEMY_DATABASE_URI is provided, the app will automatically use a local SQLite database!
- Run the app
flask run
- Add searching by tags
- Add proper input validation and visible error messages for forms
- Redesign editor page
- Create editor page for adding tags
- Add favicon
- Create 404 page
- Replace Flask-Login with JWT
- Create a standalone frontend
🎯 Goal: Transform the app into a proper REST API backend by using JWT and moving all frontend logic to a separate app.
-
Mourizal Zativa -- bricks_1.jpeg: Link
-
Xavi Cabrera -- bricks_2.jpeg: Link
Note: The LEGO sets, as well as those from other brands like Lumibricks (Previously Funwhole) and Pantasy, shown in the screenshots are used for illustrative purposes only. They are not part of the app's functionality. This project is intended to showcase my work, and no copyright infringement is intended.