-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #25 from nspalo/development
BWA-Dev-8-Weather-App-CI-And-Documentation
- Loading branch information
Showing
16 changed files
with
212 additions
and
55 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,63 @@ | ||
name: Weather App CI | ||
|
||
on: | ||
push: | ||
branches: [ "master", "development" ] | ||
pull_request: | ||
branches: [ "master", "development" ] | ||
|
||
jobs: | ||
|
||
build: | ||
runs-on: ubuntu-latest | ||
|
||
steps: | ||
- uses: actions/checkout@v3 | ||
|
||
- name: Docker Login | ||
env: | ||
DOCKER_USER: ${{ secrets.DOCKER_USER }} | ||
DOCKER_KEY: ${{ secrets.DOCKER_KEY }} | ||
run: | | ||
docker login -u $DOCKER_USER -p $DOCKER_KEY | ||
# Script Permissions | ||
- name: Setting up Permissions | ||
run: | | ||
chmod +x -R ./scripts/*.sh | ||
mkdir -p ./storage/logs/ ./bootstrap/cache/ | ||
chmod 777 ./storage/ ./bootstrap/cache -R | ||
# Docker Images | ||
- name: Building the Docker Images | ||
run: ./scripts/build.sh | ||
|
||
# Docker Containers | ||
- name: Start Docker Containers | ||
run: ./scripts/up.sh -d | ||
|
||
# Composer | ||
- name: Run Composer | ||
run: | | ||
./scripts/composer.sh install | ||
./scripts/composer.sh dump-autoload | ||
# NPM | ||
- name: Run NPM | ||
run: | | ||
./scripts/run.sh npm install | ||
./scripts/run.sh npm run build | ||
# Code Quality Check | ||
- name: Run PhpStan | ||
run: ./scripts/composer.sh run phpstan | ||
|
||
- name: Run Easy Coding Sandards | ||
run: ./scripts/composer.sh run ecs-all | ||
|
||
- name: Run Automated Test with PhpUnit | ||
run: ./scripts/composer.sh run phpunit | ||
|
||
# Teardown | ||
- name: Stop container and remove images | ||
run: ./scripts/down.sh -v |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,138 @@ | ||
# Bizmates Ph Weather App Coding Exam | ||
![Weather APP BUILD](https://github.com/nspalo/bizmates-weather-app-exam/actions/workflows/weather-app-ci-build.yml/badge.svg) | ||
|
||
A simple weather forecasting application built with Laravel that can display weather update from Japan as a coding exam for Bizmates Ph | ||
|
||
---- | ||
|
||
# About the Weather App | ||
- Is a simple web application built with laravel that can search a for a given location's coordinates and get the weather update and forecast. | ||
- Uses Geoapify geocoding Api to get the geolocation and Open Weather Map Api to get weather data | ||
- This project observes: | ||
- PSR Coding Standards | ||
- Object-Oriented Principles / DRY / KISS | ||
- SOLID Principles / Clean Code | ||
- Automated coding standard checking using PhpStan & Easy Coding Standard | ||
- Automated testing using PhpUnit | ||
|
||
![Weather App](https://github.com/nspalo/bizmates-weather-app-exam/blob/feature/BWA-9-weather-app-readme/docker/documents/weather-app-sample-image.jpg) | ||
|
||
## Web Stack | ||
- Docker | ||
- NginX stable-alpine | ||
- PHP 8.1 fpm-alpine | ||
- Composer 2.6.1 | ||
- Node 20.6-alpine | ||
- Laravel 9 | ||
- Bootstrap 5 | ||
|
||
### Pre-requisite | ||
- Docker | ||
- Geoapify Account | ||
- Generate API Key | ||
- Open Weather Map Account | ||
- Generate API Key | ||
- Configure the API Keys in the `.env` file | ||
- `See: <ProjectDir>/src/.env` | ||
- For more info, check `<ProjectDir>/src/config/services.php` | ||
|
||
## Set Up Procedure | ||
### Step 1: Service containers - Building, Starting, and Stopping | ||
``` | ||
// Building the services/containers | ||
> ./scripts/build.sh | ||
// Starting the services/containers | ||
// - optionally add the -d (detach) flag to run in the background | ||
> ./scripts/up.sh -d | ||
// Or do a one-liner command for the build and start process | ||
> ./scripts/up.sh -d --build | ||
// Stoping the services/containers | ||
// - To stop a specific service add the continer name | ||
> ./scripts/stop.sh <_ContainerName_> | ||
// Tear down routine | ||
// - optionally add the -v to remove the images | ||
> ./scripts/down.sh -v | ||
``` | ||
|
||
### Step 2: Packages and Dependencies | ||
``` | ||
// Running composer install | ||
> ./scripts/composer.sh install | ||
> ./scripts/composer.sh dump-autoload | ||
// Running NPM | ||
> ./scripts/run.sh npm install | ||
> ./scripts/run.sh npm run build | ||
// Copying Laravel .env file | ||
> ./scripts/composer.sh run post-root-package-install | ||
// Generating Key | ||
> ./scripts/artisan.sh key:generate | ||
``` | ||
|
||
### Step 3: Accessing the site | ||
Hit the browser at `localhost:8080` | ||
|
||
### API Endpoint | ||
`localhost:8080/api/weather-update?location=Some-Location` | ||
|
||
where `?location=` is query string for the location to check for weather update/forecast | ||
|
||
|
||
---- | ||
|
||
## Code Quality and Testing | ||
``` | ||
// Running PhpStan | ||
> ./scripts/composer.sh run phpstan | ||
// Running Easy Coding Standards for the entire project | ||
./scripts/composer.sh run ecs-all | ||
// Running Easy Coding Standards for App or Test ONLY | ||
./scripts/composer.sh run ecs-app | ||
./scripts/composer.sh run ecs-test | ||
// Running Auto-Fix for ecs | ||
./scripts/composer.sh run ecs-fix-app | ||
./scripts/composer.sh run ecs-fix-test | ||
// Running Automated Test with PhpUnit | ||
./scripts/composer.sh run phpunit | ||
``` | ||
|
||
---- | ||
|
||
## BizmatesPh Coding Exam Requirements | ||
### Background | ||
- This page aims to provide travel information of Japan for foreign tourists visiting Japan for the first time. | ||
|
||
### Tech Stack | ||
- PHP (version 8+ preferred) | ||
- Framework Laravel (any version) | ||
- HTML5, CSS3, Javascript ES5/ES6 or any JS Library preferred (VueJS is a plus) | ||
- Responsive Design (Desktop and Mobile) | ||
- API Endpoints | ||
- Automated Testing | ||
|
||
### Submission method | ||
- Provide a github repository once finished | ||
- Development should be within 4 - 5days | ||
|
||
### API Service | ||
- Open Weather Map's Daily API | ||
- Foursquare Search Venue API | ||
|
||
### Code Quality | ||
- PSR Coding Standards 1,2,4 & 12 | ||
- Object-Oriented Principles | ||
Clean Code & SOLID Principles | ||
- Google JavaScript Style Guide | ||
- Google HTML/CSS Style Guide |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters