Skip to content

guendev/foodmix-type

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

77 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FoodMix

Api công thức nấu ăn, sử dụng Typescript. Hỗ trợ RestFul và Graphql

Tính Năng

  • Nodejs, NOSQL, VueJS, Graphql
  • Tailwind + Font Awesome 5
  • Đăng nhập, Đăng ký, Xác thực, Khôi phục
  • Thông tin món ăn: Nguyên liệu, Cách làm, Đánh giá
  • Tính khẩu phần ăn
  • Bình luận Facebook, Lượt xem
  • Tải chậm hình ảnh, Canvas, Tương thích mọi thiết bị
  • Tìm kiếm, bộ lọc
  • Cài đặt tài khoản
  • Trang cá nhân
  • Studio upload

Cài Đặt server

.env

Bạn cần thiết lập các biến môi trường trước khi sử dụng. Các file .env nằm ở src/environment/env lần lượt là development.env production.env test.env Example: .env

Storage - 🚧 - BunnyCDN

Chúng tôi sủ dụng BunnyCDN làm máy chủ lưu trữ. Lý do: Review

BUNNY_STORAGE_NAME=
BUNNY_STORAGE_SERVER=
BUNNY_ACCESS_KEY=
CDN_DOMAIN=
  • Để bảo mật tài nguyên vui lòng đặt SECURE_ENABLE = 1
  • Xem thêm: How to sign URLs

Sử dụng

Phân giải API

Chúng tôi sử dụng Wrapper để bao bọc các yêu cầu. Để tiện cho trình bài chúng tôi sẽ gọi restful là API.

  • Bộ core xử lý API và Graphql là một.
  • Chỉ khác nhau định dạng trả về. Riêng graphql chỉ trả về status code là 200.
  • Tuy vậy nếu yêu cầu grap gặp lỗi chúng tôi sẽ trả về kèm theo mã lỗi.

Bảng so sánh giữa API và Graphql

Graphql API Nơi Xuất Hiện
OK 200 Thành Công
BAD_REQUEST 400 Lỗi Form
UNAUTHORIZED 401 Đăng Nhập
FORBIDDEN 403 Phân Quyền
NOT_FOUND 404 Không Thấy
  • BAD_REQUEST có thể bao gồm: thiếu dữ liệu, không chính xác.
  • UNAUTHORIZED xảy ra khi truy cập vào 1 request yêu cầu đăng nhập.
  • FORBIDDEN xảy ra khi người đăng nhập không đủ quyền yêu cầu request.
  • NOT_FOUND xảy ra khi truy cập vào 1 tài nguyên không tồn tại.

Thông báo

Chúng tôi hỗ trợ Notify qua API và Realtime.

Restful API

Mọi Response trả về đều có format:

interface IResponseJson {
    code: number
    data: any
    msg?: string
}
  • Tuỳ vào code tả về. Bạn có thể handle tự động thông báo. Hiện tại nếu thông báo từ server chúng tôi sẽ trả về code = 1. Bạn có thể xem thêm tại NotifyResponse.
  • Cách này chỉ phù hợp với một client duy nhất. Không thể đồng bộ thông báo trên mọi tài khoản.

Realtime

Chúng tôi sử dụng Subscription để tạo ra các đăng ký thông báo trên mỗi tài khoản.

type Notify {
    user: String! # _id
    error: Boolean
    msg: String!
}
  • Bạn có thể subscription notify để lấy thông báo. Chúng sẽ tự động phát hiện user hiện tại.
  • Thông báo sẽ đồng bộ trên mọi thiết bị đăng nhập cùng một tài khoản.

Development

Môi trường phát triển hoặc test

# Cài đặt npm
npm run dev

# Setup các biến môi trường *.env

# Khởi chạy project
npm run dev

Watermark - 🚧

Để thay đổi watermark, hãy gi đè các file tại src/environment/watermark

Quảng Cáo - 🚧

  • Để thay đổi mã quảng cáo, hãy gi đè các file tại src/environment/ads

Vì lý do chính sách. Bạn có thể tắt quảng cáo trên những trang mình muốn.

Studio: FoodMix - Studio - 🚧

  • Giao diện đăng công thức
  • Bật tắt quảng cáo
  • Chapter thumbnail, chapter scheduler
  • Cắt/Nén ảnh tự động lên CDN mỗi khi create/update/delete
  • Phân quyền, bảo mật

Scrapper Tool

Liên Hệ [email protected] nếu bạn cần giúp đỡ.

Sao Lưu

Maintaining even a small mongodb application in production requires regular backups of remotely stored data. MongoDB gives you three ways to acomplish it. In this post I'm using monogodump command for creating a backup and mongorestore for recreating the data. The purpose of this writing is to provide a simple way of periodic database dumps from a remote server to a Dropbox cloud storage.

Remember that for using mongodump you have to have a mongod process running.

Dumping a database

Suppose that you want make a backup of your books database.

To create a dump use mongodump -d books -o <destination_folder> which will result in a book folder containing bson files with all collections. For backup purposes we will compress it all to one file: tar -zcvf books.tar.gz books/.

Dropbox uploader

To send the backup of the database to your Drobpox cloud storage install dropbox uploader script on the remote server:

First, download the script:

curl "https://raw.githubusercontent.com/andreafabrizi/Dropbox-Uploader/master/dropbox_uploader.sh" -o dropbox_uploader.sh

Change the permissions:

chmod +x dropbox_uploader.sh

Launch the setup process:

./dropbox_uploader.sh

The script will guide you through all necessary steps to connect the remote machine with your Dropbox account. During the installation process you will be asked to navigate to your Dropbox web page, create an application and providing app key and app secret for the download script.

After a successfull installation you can try out the connection uploading the books:

/root/downloads/dropbox_uploader.sh upload books.tar.gz /

The ending slash means that the file will be uploaded to the root directory of your Dropbox application.

The complete script for creating an archive and uploading, let's name it mongodb_upload.sh:

#!/usr/bin/env bash

#Get current date
NOW="$(date +'%d-%m-%Y_%H-%M')"

# Settings:

# Path to a temporary directory
DIR=~/mongodb_dump/

# Path to the target dropbox directory
TARGET_DIR=/

# Path do dropbox_uploader.sh file
UPLOADER_SCRIPT=/root/scripts/dropbox_uploader.sh

# Name of the database
DB_NAME=books

function mongodb_dump
{
  # Name of the compressed file
  FILE="${DIR}${DB_NAME}_${NOW}.tar.gz"

  # Dump the database
  mongodump -d $DB_NAME -o $DIR

  # Compress
  tar -zcvf $FILE $DIR$DB_NAME

  # Remove the temporary database dump directory
  rm -fr $DB_NAME

  # Upload the file
  $UPLOADER_SCRIPT upload $FILE $TARGET_DIR

  # Remove the file
  rm $FILE
}

mongodb_dump

After running the script navigate to your Dropbox Applications folder and look for a folder named after the application you created during the installation process. The books.tar.gz file should be there already.

Setting a cronjob

You can have the script executed periodically by seting a cron job. To edit the crontab file responsible for registering new cron tasks run: crontab -e. To perform an action at 01.45 am add this line: 45 01 * * * <path to the script>/mongo_upload.sh Save the file and check the list of your cron tasks: crontab -l More about crontab: http://v1.corenominal.org/howto-setup-a-crontab-file/

Restoring a backup - 🚧

To restore the data uncompress the file and run: mongorestore --drop -d <database-name> <directory-of-dumped-backup>

License

About

Cộng đồng ẩm thực việt

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published