🐺 Simple ERP Application Skeleton In Symfony 3.3.9.
Current version: 1.0.0
In order to run this app do the following:
- Get the application code and install php dependencies and node packages.
git clone https://github.com/Clivern/LWT.git lwt
cd lwt
composer install
# You can ignore node packages installation if you will not edit CSS & JS Files
npm install
- Open
app/config/parameters.yml
and insert your MySQL database credentials. Let's say it will be look like this:
parameters:
database_host: 127.0.0.1
database_port: null
database_name: homestead
database_user: homestead
database_password: secret
mailer_transport: smtp
mailer_host: 127.0.0.1
mailer_user: null
mailer_password: null
secret: ThisTokenIsNotSoSecretChangeIt
- Run the following command to build database tables
php bin/console doctrine:schema:update --force
- Run the following command to seed our database with one user and default configs
php bin/console doctrine:fixtures:load
- We are ready to run our application
php bin/console server:run
Open your browser and access the http://127.0.0.1:8000
Please Note That You can login with clivern/clivern
As we already imported that user in previous steps.
Please note that vagrant
need a provider in order to run the VM
. In this project, I use VirtualBox
as provider.
After you have vagrant
and VirtualBox
up and running, do the following steps:
- Get the application code and install php dependencies and node packages.
git clone https://github.com/Clivern/LWT.git lwt
cd lwt
composer install
# You can ignore node packages installation if you will not edit CSS & JS Files
npm install
vagrant up
- Open
app/config/parameters.yml
and insert your MySQL database credentials. Let's say it will be look like this (Also look atapp/config/parameters.yml.vagrant
):
parameters:
database_host: 127.0.0.1
database_port: null
database_name: homestead
database_user: homestead
database_password: secret
mailer_transport: smtp
mailer_host: 127.0.0.1
mailer_user: null
mailer_password: null
secret: ThisTokenIsNotSoSecretChangeIt
- After Vagrant build and provision your machine, login into this machine to do some configs (build database tables and seed our database).
vagrant ssh
cd lwt
php bin/console doctrine:schema:update --force
php bin/console doctrine:fixtures:load
-
Open your browser and access the
http://192.168.10.10
. -
Vagrant use
192.168.10.10
as project IP, so we need to redirect all requests coming tolwt.com
to that IP. So add the following to your/etc/hosts
file.
192.168.10.10 lwt.com
- To Stop vagrant machine, run the following
vagrant halt
Please feel free to check Homestead.yaml
file in case you need to customize your vagrant machine.
- Get the application code and node packages.
git clone https://github.com/Clivern/LWT.git lwt
cd lwt
# You can ignore node packages installation if you will not edit CSS & JS Files
npm install
- Then run our docker containers
docker-compose build
docker-compose up -d
- Then install our php dependencies with composer.
docker exec -it lwt_php bash -c "composer install && chown -R www-data /www/var"
- Open
app/config/parameters.yml
and insert your MySQL database credentials. Let's say it will be look like this (Also look atapp/config/parameters.yml.docker
):
parameters:
database_host: lwt_mysql
database_port: 3306
database_name: homestead
database_user: homestead
database_password: secret
mailer_transport: smtp
mailer_host: 127.0.0.1
mailer_user: null
mailer_password: null
secret: ThisTokenIsNotSoSecretChangeIt
- Access our PHP container to build database tables and seed these tables
docker exec -it lwt_php bash
php bin/console doctrine:schema:update --force
php bin/console doctrine:fixtures:load
-
Open your browser and access the
http://127.0.0.1:8001/
. -
Also you can add
http://lwt.dev
to your/etc/hosts
file.
127.0.0.1:8001 lwt.dev
- To Check our containers, use the following command:
docker-compose ps
- To stop our containers
docker-compose down
Please check these docs to manage docker as a non-root user. because if it runs with the root user, you will have to use sudo ...
in all previous commands.
In case you have A LAMP environment on your machine, Please follow the following steps:
- Get the application code and install php dependencies and node packages.
git clone https://github.com/Clivern/LWT.git lwt
cd lwt
composer install
# You can ignore node packages installation if you will not edit CSS & JS Files
npm install
- Open
app/config/parameters.yml
and insert your MySQL database credentials. Let's say it will be look like this:
parameters:
database_host: 127.0.0.1
database_port: null
database_name: homestead
database_user: homestead
database_password: secret
mailer_transport: smtp
mailer_host: 127.0.0.1
mailer_user: null
mailer_password: null
secret: ThisTokenIsNotSoSecretChangeIt
- Run the following command to build database tables
php bin/console doctrine:schema:update --force
- Run the following command to seed our database with one user and default configs
php bin/console doctrine:fixtures:load
- You need to create a virtual host for this project and have it always running.
<VirtualHost *:80>
ServerAdmin admin@lwt.com
ServerName lwt.com
ServerAlias www.lwt.com
DocumentRoot /var/www/lwt/web
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<Directory /var/www/lwt/web>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
</VirtualHost>
- Please don't forgot to add the suitable folder permissions for example
sudo chown -R clivern:www-data lwt
sudo chown -R 775 lwt
Also Don't forget to add lwt.com on your hosts file
127.0.1.6 lwt.com
Now when we visit lwt.com
it should work!
Application has a REST API to be used by frontend so you can use these APIs to build Single Page Application or even consume these APIs from other application or service.
-
To get your API Key, Login to your profile
clivern/clivern
and you can find your API Key in profile page. -
To create a server:
curl --request POST --url http://lwt.com/api/v1/server --header 'X-AUTH-TOKEN: api_token_here' --data 'name=R234&brand=HP&asset_id=123&price=200.35'
- To get your servers:
curl --request GET --url http://lwt.com/api/v1/server --header 'X-AUTH-TOKEN: api_token_here'
- To get server with id:
curl --request GET --url http://lwt.com/api/v1/server/{server_id} --header 'X-AUTH-TOKEN: api_token_here'
- To delete server with id:
curl --request DELETE --url http://lwt.com/api/v1/server/{server_id} --header 'X-AUTH-TOKEN: api_token_here'
- To get Server Rams:
curl --request GET --url http://lwt.com/api/v1/server/{server_id}/ram --header 'X-AUTH-TOKEN: api_token_here'
- To get Server Ram:
curl --request GET --url http://lwt.com/api/v1/server/{server_id}/ram/{ram_id} --header 'X-AUTH-TOKEN: api_token_here'
- To create Server Ram:
curl --request POST --url http://lwt.com/api/v1/server/{server_id}/ram --header 'X-AUTH-TOKEN: api_token_here' --data 'type=DDR3&size=2'
- To delete Server Ram:
curl --request DELETE --url http://lwt.com/api/v1/server/{server_id}/ram/{ram_id} --header 'X-AUTH-TOKEN: api_token_here'
- To get current refresh token:
curl --request GET --url http://lwt.com/api/v1/refresh_token --header 'X-AUTH-TOKEN: api_token_here'
- To Get your new API token in case it is expired:
curl --request POST --url http://lwt.com/api/v1/api_token --header 'X-AUTH-TOKEN: api_token_here' --data 'refresh_token=sgshdhd..'
In order to run and deploy this application on production server, Please do the following during installation.
- Check your server requirements.
php bin/symfony_requirements
- Install/Update your vendors and It is required to provide your database credentials.
composer install --no-dev --optimize-autoloader
- Clear your Symfony Cache
php bin/console cache:clear --env=prod --no-debug --no-warmup
php bin/console cache:warmup --env=prod
- Build your database tables and do seeding.
php bin/console doctrine:schema:update --force
php bin/console doctrine:fixtures:load
- In case you work with LAMP Server, you will need to configure your apache virtual host.
<VirtualHost *:80>
ServerAdmin admin@lwt.com
ServerName lwt.com
ServerAlias www.lwt.com
DocumentRoot /var/www/lwt/web
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<Directory /var/www/lwt/web>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
</VirtualHost>
- Please don't forgot to add the suitable folder permissions for example
sudo chown -R clivern:www-data lwt
sudo chown -R 775 lwt
For More Info, Please check symfony docs
- If the npm install command fails or hangs, Do the following.
sudo ln -s /usr/bin/nodejs /usr/bin/node
- To compile changes performed to JS or CSS code in
resources/assets/
dir, run the following command:
npm run dev
To run test cases & get test coverage reports run the following command in app root
./vendor/bin/simple-phpunit --coverage-text=./coverage.txt --coverage-html ./coverage
or to view the coverage report
./vendor/bin/simple-phpunit --coverage-text --coverage-html ./coverage
Please note that, you need xdebug
in order to get coverage reports.
Version 1.0.0:
Initial Release.
© 2017, Clivern. Released under the MIT License.
LWT is authored and maintained by @clivern.