Taenerys / BookHub

Final Project - MLH Production Engineering track (Summer 2021)

Home Page:https://book-hub.tech

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Book Hub GIF

By Anh Pham, Emily Xinyi, Kweku Aboagye and Dakshina Palasamudrum.

Deployed Project Link: https://book-hub.tech

License


Book Hub πŸ“š

A place where we can add and track our book notes for our reading journey.

Table of Contents πŸ—ΊοΈ

Inspiration 🧠

Book Hub aims to build a space where you can save your book reviews and track how many books you have been reading.

What it does πŸ€”

  • Single Platform for you to save your books and book notes
  • Easy to track your reading journey (i.e how many books have you read?)
  • Fully functional for you to make your Book Hub your own!
  • Easy to filter books by tags!

How to use Book Hub? πŸ‘

Create an account or log in πŸ’“

Screen Shot 2021-08-20 at 11 18 15 AM

Browse existing entries πŸ’“

Create new entries πŸ’“

Click on "start writing" on the top right corner to recommend a new book!

Screen Shot 2021-08-20 at 11 20 05 AM

Enter your book details here...

image

Books are uploaded on a catalog!

Screen Shot 2021-08-20 at 10 37 16 AM

After you click "submit" this page will show up to confirm a successful upload Screen Shot 2021-08-20 at 11 23 39 AM

How we built it πŸ’ͺ

Flask HTML5 CSS JS Python Docker SQLite3 AWS

  • Frontend: Flask, HTML, CSS, JS
  • Backend: Python
  • Design: Figma, Hand + Paper
  • Database: SQLite3
  • Web Hosting: AWS EC2
  • Container: Docker
  • CI/CD Workflow: Github Actions
  • Monitoring: cAdvisor, Prometheus, Grafana
  • Version Control: Git and GitHub
  • Reverse Proxy: NGINX

Architecture πŸ™

We aim to have a highly modularized architecture, where every service has its own container and is independent from the others.

BookHub has 6 containers for 6 services:

  • web: client code / front end
  • db: database (SQLite3)
  • nginx: reverse proxy
  • cadvisor: monitoring tool 1
  • prometheus: monitoring tool 2
  • grafana: monitoring tool 3

architecture

CI/CD Workflow πŸ§ͺ

Book Hub also has a full Continuous Integrationn and Delivery System.

ci-cd

Challenges we ran into πŸ₯Ί

  • One major problem that we have is time: a lot of our team members have many commitments outside of the fellowship, therefore finding time to sync up was difficult for all of us.
  • AWS instance often hanging very slowly, causing us having to debug in a lot of ways: rebooting the AWS instance, checking top, changing the instance type from t2.micro to t2.small
  • While collaborating together and working in parallel, there were often git conflicts which were difficult to merge.
  • All of us are not masters at front end development, so we ran into quite a lot of issues with CSS.

Accomplishments that we're proud of πŸ₯°

  • Despite the time commitment issues, we were able to create a final deliverable at the end and learnt a lot in the process.
  • We built a project from scratch, starting from coming up with an idea, designing, executing things until we were able to deploy it and employed testing, CI/CD and monitoring tools in a span of three weeks.
  • We have a great teamwork - unexpected things happen, but no one is blamed and we keep moving forward and working together to find a solution.
  • We built off of the feedbacks we received from our Pod Leader and our Pod mates for the past weeks. We demonstrated great Git best practices throughout the process (Project Board, Issues, Pull Requests, README.md, Code Review, etc.)
  • Resolved a lot of git merge conflicts!
  • We made a great README.md that we are very proud of!

What we learned πŸ’‘

  • Learnt more ways of using Flask for a full-fledged project.
  • Acting as a Project Manager: deciding the direction of the project, assigning tasks, holding meetings, taking notes, being encouraging, etc.
  • Using Production Engineering skills we learnt in the MLH's PE Fellowship in a real world project from start to finish.
  • Debugging on Linux, especially on an AWS EC2 instance.
  • Good GitHub practices.
  • Good collaboration between teammates.
  • Never afraid to ask questions / for help.

What's next for Book Hub 🀫

  • Implement Update Book feature
  • Increase test coverage of the whole project (current number: 37%)
  • Improve filtering books by tags
  • Add likes/comments for each book notes
  • Improve authentication (i.e implement Forget Password)

Contributing Guidelines πŸ› οΈ

See CONTRIBUTING.md.

GitHub Repository Structure 🧱

S.No. Branch Name Purpose
1. main contains the frontend, backend related code and documentation

Setup ⏰

  • Fork and Clone the repo using
$ git clone https://github.com/Taenerys/BookHub.git
$ cd BookHub
  • Make sure you have python3 and pip installed

Create and activate virtual environment using virtualenv

$ python -m venv python3-virtualenv
$ source python3-virtualenv/bin/activate

Use the package manager pip to install all dependencies

pip install -r requirements.txt
  • Run the Flask server using
$ export FLASK_ENV=development
$ flask run

MLH Fellowship - Production Engineering Track ( Summer 2021) ⭐

This is a final project made by MLH Production Engineering Fellows (Summer 2021) - Pod 3.3.3 Reliable Rhinos.

MLH Final Project

Team πŸ§‘β€πŸ€β€πŸ§‘

"It is the long history of humankind (and animal kind, too) that those who learned to collaborate and improvise most effectively have prevailed." (Charles Darwin)

S.No. Name GitHub Username:octocat:
1. Anh Pham @Taenerys
2. Emily Chen @EmilyXinyi
3. Dakshina Palasamudrum @dakshinabp
4. Kweku Aboagye @Kweku007


Contributors ✨

Thanks goes to these wonderful people (emoji key):

Anh Pham
Anh Pham

πŸ’» 🎨
Kweku Aboagye
Kweku Aboagye

πŸ’» 🎨
Emily Xinyi
Emily Xinyi

πŸ’» 🎨
Dakshina Palasamudrum
Dakshina Palasamudrum

πŸ’» 🎨

This project follows the all-contributors specification. Contributions of any kind welcome!

ForTheBadge uses-git ForTheBadge uses-html ForTheBadge uses-css ForTheBadge uses-js forthebadge forthebadge forthebadge

forthebadge ForTheBadge built-by-developers ForTheBadge built-with-love


About

Final Project - MLH Production Engineering track (Summer 2021)

https://book-hub.tech

License:MIT License


Languages

Language:HTML 48.6%Language:Python 40.6%Language:CSS 8.4%Language:JavaScript 0.9%Language:Shell 0.8%Language:Dockerfile 0.7%