/PrintABrick

Web catalogue of LEGO® parts for 3D printing

Primary LanguagePHPGNU General Public License v2.0GPL-2.0

PrintABrick

Web catalogue of LEGO® parts for 3D printing

A Symfony project

Install

System requirements

  • PHP needs to be a minimum version of PHP 7.0
  • PHP Extensions
    • FTP
    • SOAP
    • GD
    • PDO
    • Zip
  • date.timezone setting set in php.ini

You can check if your system meets requirements by running $ bin/symfony_requirements

For full requirements see Symfony 3.3 docs.

Required

  • Elasticsearch >= 5

    Instructions for installing and deploying Elasticsearch may be found here.

  • POV-Ray source.

  • stl2pov source.

  • ADMesh

  • LDView OSMesa >= 4.2.1 source.

Installing

Back-end

  1. Make sure your system meets the application requirements
  2. Install dependencies via Composer, $ composer install

Front-end

  1. Install dependencies via npm, $ npm install
  2. Install bower dependencies via bower, $ bower install
  3. Compile assets by running Gulp, $ gulp default [--env production]

Initialization

Setup database
  1. Set application parameters in app/config/parameters.yml
  2. Generate an empty database by running command (if it does not yet exist) $ bin/console doctrine:database:create
  3. Create database tables/schema by running command$ bin/console doctrine:schema:create
  4. Load database fixtures $ bin/console doctrine:fixtures:load
Load data

You can load initial application data by running command $ bin/console app:init

This command consists of multiple subcommands that can be called separately:

  1. Load LDraw models into database by running commad $ bin/console app:load:ldraw [--ldraw=PATH] [--all] [--file=FILE] [--update]
  2. Load Rebrickable data into database by running command $ bin/console app:load:rebrickable
  3. Load relations between LDraw models and Rebrickable parts by running command $ bin/console app:load:relations
  4. Download images of models from rebrickable.com $ bin/console app:load:images [--color=INT] [--rebrickable] [--missing]
  5. Populate Elastisearch index $ bin/console fos:elastica:populate
Adding part relation

Relations between LDraw models and Rebrickable parts are matched automatically by identical (or similar) id/name when executing command $ bin/console app:load:relation.

Unmatched relations can be specified by adding relation of IDs to app/Resources/relations/part_model.yml

Testing

The test database must be created before the first test runs. You can create new one by running:

  1. Generate an empty database by running command (if it does not yet exist) $ bin/console doctrine:database:create --env=test
  2. Create database tables/schema by running command$ bin/console doctrine:schema:create --env=test

You can run complete system tests by $ phpunit. These should cover the main system functions and the functionality of calling the third-party programs that are required are needed to seamlessly retrieve the necessary application data.