Skip to content

Just a Bisl of Babish - Babish's recipes in a native mobile app (Backend Django App)

License

Notifications You must be signed in to change notification settings

jmast02/bisl__backend

 
 

Repository files navigation

bisl logo

Bisl

Bisl is an app for exploring the recipes created by Andrew Rea, aka Oliver Babish, through his Youtube channel, Binging with Babish

Motivation

Often when cooking, it is difficult to look up recipes on the web or YouTube. This project was created to help fans of Binging with Babish have quick and native access to all of the Binging recipes right on their phone while cooking.

Furthermore, social features for saving and sharing recipes with friends would be nice to have.

Thus Bisl was born.

Oh, and the name Bisl comes from the Yiddish word that mean, "a little bit of something, a tiny piece"

Build status

CircleCI Codacy grade Codacy coverage

Code style

This project strictly follows Python PEP8 and Django coding standards. In addition, industry best practices are followed closely. Read more about best practices and processes in the project docs

Screenshots

To be added

Tech/framework used

Built with

Continuous Integration and Deployment

bisl logo

General Design (work in progress)

The general design of this app consists of several components; the Django app (standard models, views, forms, and templates), then the API using Django REST Framework, and finally the Flutter app which consumes the API

Each component has different requirements so each one will be addressed on its own here and will include related user stories.

The Django App

The general design of the Django app is primarily as a web interface for admins to add content. The app is strictly a read-only consumer of data that Admins create, as it applies to core data.

Outside of core data (recipes from Binging with Babish), users can favorite (star), comment, share, and upload photos of their attempts of recipes to the app. This will all happen in the Flutter app, so will rely on the API having the capabilities to provide these actions to users.

Django web app user stories
  • As an admin, I can create/update/delete recipes in the app/API
  • As an admin, I can moderate comments
  • As an admin, I can moderate images
  • As an admin, I can PM users
  • As an admin, I can make announcements

From the user stories, you can see that the majority of interactions with the Django webapp are performed by admins, not standard users.

The API

The API needs to allow for the desired user actions, as well as handle authentication for the Flutter app, and API requests. To handle authentication, the Django app needs to act as an Oauth2 provider.

API based user stories
  • As a user, I can create an account and log in
  • As a user, I can comment on recipes
  • As a user, I can share recipes
  • As a user, I can upload photos of recipes
  • As a user, I can mark recipes as favorites
  • As a user, I can see what recipes I have starred
  • As a user I can create and modify my account

The user stories for the API must be heard in the context of API requests. These are not UIs that users will see in the API themselves, but the API needs to provide the functionality for a UI to satisfy the stories

The Flutter app

The Flutter app will be where users interact with Bisl. Flutter is cross-platform, so this applies to both iPhone and Android users. The Django web interface, for non-admins, will direct users to download the native app for their desired platform.

Flutter based user stories
  • As a user, I can create an account and log in
  • As a user, I can comment on recipes
  • As a user, I can share recipes
  • As a user, I can upload photos of recipes
  • As a user, I can mark recipes as favorites
  • As a user, I can see what recipes I have starred
  • As a user I can create and modify my account

The user stories here are the same as the API stories, but they apply here in the context of the native app, UI, and actions. Users will consume data from, and produce data for the APIs.

Installation

To run Bisl locally, pull the project and use the following docker-compose commands:

$ docker-compose up bisl

That will build the project from the Dockerfile, run migrations, and start the local web server. You can then access the project on host http://0.0.0.0 and port 8009:

http://0.0.0.0:8009/

API Reference

To be added

Tests

Tests can be run through docker-compose, like the project itself:

$ docker-compose run --rm bisl pytest

Contribute

Contributions are always welcome! Please read the contributing guideline first.

GitHub contributors

Credits

Built by Jesse Michelsen, Jmast, Clem

License

GNU General Public License v3.0

GNU GPLv3 © Jesse Michelsen

About

Just a Bisl of Babish - Babish's recipes in a native mobile app (Backend Django App)

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • CSS 82.7%
  • Python 15.0%
  • HTML 1.9%
  • Dockerfile 0.4%