BrewDog Beer Finder is a web application designed for beer enthusiasts to explore and discover a diverse collection of craft beers. The application leverages the BrewDog Punk API to provide detailed information about various beers, including their names, taglines, brewing details, and flavor profiles.
-
Beer Catalog: Access an extensive catalog of craft beers, each accompanied by a rich set of details, such as alcohol by volume (ABV), International Bitterness Units (IBU), and food pairings.
-
Search and Filter: Utilise a robust search and filter functionality to find specific beers based on parameters like beer ID, name, or specific characteristics.
-
User Authentication: Enjoy a personalised experience by creating an account and logging in.
-
Exception Handling: The app is equipped with robust error handling to gracefully manage exceptions, ensuring a smooth user experience even in case of unexpected issues.
-
Integration with External APIs: Seamlessly integrate with external APIs, such as the BrewDog Punk API, to fetch real-time data about a vast selection of craft beers.
-
User-Friendly Interface: Benefit from an intuitive and user-friendly interface designed to enhance the beer exploration experience. The clean layout and straightforward navigation make it easy for users to discover new and exciting brews.
Before you begin, make sure you have the following installed on your machine:
- Composer
- Node.js and npm
- DBngin for local database management
- PHP 8.2
Follow these steps to set up and run the BrewDog Beer Finder application locally:
-
Clone the Repository:
git clone https://github.com/dom-king/brewdog-beer-finder.git
-
Install PHP Dependencies:
cd brewdog-beer-finder composer install
-
Install JavaScript Dependencies:
npm install
Update Environment Variables:
Create a copy of the .env.example file and save it as .env. Update the .env file with your local database details (DB_DATABASE, DB_USERNAME, DB_PASSWORD).
- I used a Macbook so I set up DBngin for local set up
-
Run the Application:
php artisan serve npm run dev
-
Run Migrations and Seed the Database:
php artisan migrate php artisan db:seed
-
Standard PHPUnit Tests:
php artisan test
-
CodeSniffer:
vendor/bin/phpcs
-
Lint JavaScript:
npm run lint
Contributions are welcome! If you find any issues or have suggestions for improvements, feel free to open an issue or submit a pull request.
- Artisan commands to handle the API requests and store the data in the DB
- Job queues to handle the data and keep it up to date
- Extend the search functionality - Builder Sieve pattern for filtering easily
- Component testing - Jest or Storybook for UI design Components
- Dockerise the application