Skip to content

Latest commit

 

History

History
114 lines (74 loc) · 6.65 KB

README.md

File metadata and controls

114 lines (74 loc) · 6.65 KB

IngredientRecipeFinder

This is a project for "Advanced Softwaretechnique" where a fixed website with vegan recipes is scraped and depending ingredients are extracted. You can search by a (list of) ingredient(s) to find matching recipes. Let's reduce some food waste! It is using the recipes from Bianca Zapatka (https://biancazapatka.com/de/), whom provides really good, easy and vegan recipes on her website/blog.

installing dependencies: pip install -r requirements.txt

crawl data: sh start.sh

start the program (default english recipes): python src/main/python/main.py for german option add: -l de

1. Git

usage of GitHub for the whole project time

See commit history here

2. UML

UML Diagramm created with Planttext (Class, Component and User Diagrams for the project with Edlich's Fund)

PNGs and Planttext-Files

3. DDD

Creation with Miro of Event Storming file and resulting Diagrams and DDD

PDF-file with Event Storming, Diagram and DDD

4. Metrices

Creation of SonarCloud account and connecting to repository (with advanced settings) for metric badges:

Maintainability Rating Bugs Duplicated Lines (%) Reliability Rating Quality Gate Status Technical Debt Lines of Code

5. Clean Code Dev

Adding clen code developemnt for improved usage and readabilty as well as for better maintance of code.

A)

parameter and return types

docstrings

explanatory variable names

throw exception with context

one assert per test

B)

Creation of a Cheat Sheet for upcoming projects

Cheat Sheet

6. Build

Usage of Pybuilder to build Project and have the ability to install and import as a package for usage in other projects

with Pybuilder: find files here

7. UnitTests

Writing UnitTests to keep correctness and desired functionality of algortihm

! tests will be executed automatically with every push to respository -> with github actions (see 8.) → find tests here

run tests manually with: python3 -m unittest -v src/unittest/python/ingredientfinder_tests.py

8. Continuous Delivery

Adding Github Action Test exectuion on every push to verify correctness of algorithm

GitHub Action - Test

9. IDE

Adding most favorite shortcuts here and create own to allow faster developemnt without lifting hands from keyboard

Pycharm

own Shortcut:

  • option + r (run)

build-in:

  • cmd + f (find)
  • cmd + r (replace)
  • option + c/v/x (copy/paste/cut)
  • cmd + / (comment (out))
  • shift + ctrl + d (start debugger)

10. DSL

Usage of DSL like 'HTML' and 'regex'

extraction of information from HTML content

extraction of words with regex

11. Functional Programming

Apply functional programming for it's understanding and adding a class for Recipe as learned in Prog. I for java

only final data structures

(mostly) side effect free functions

use closures / anonymous functions

the use of higher-order functions/functions as parameters and return values