Coder Social home page Coder Social logo

fcchn-blog-backend's Issues

Viết API docs

https://techmaster.vn/posts/34494/danh-gia-cac-api-editor-pho-bien-nhat

Bổ sung module JSDoc để tạo API documents cho project.

  1. Tên module: JSDoc.
  2. Template: Docdash
  3. Edit package.json: thêm dòng "jsdoc": "./node_modules/jsdoc/jsdoc.js -c jsdoc.json" vào scripts.
  4. Thêm file cấu hình cho jsdoc jsdoc.json tại folder root.
  5. To-do: File JavaScript của người nào thì cần sửa lại phần comment theo đúng rules của JSDoc và có các phần tối thiểu bao gồm: ... [cần thảo luận thêm]

Hướng dẫn sử dụng Robo 3T (cũ: Robomongo)

Robo3T (tên cũ: Robomongo) được dùng để xem database MongoDB trên máy.

Trang chủ:

https://robomongo.org/

Đã có nhiều hướng dẫn cài đặt và sử dụng bằng tiếng Việt. Vui lòng xem các bài đưới đây:

Xem các hình chụp sau để thực hiện nhanh việc kiểm tra database MongoDB dự án fcchanoi-blog-backend

Sau khi cài đặt, mở Robo3T, tạo connection đến database trong máy.

Bước 1:

robo 3t - 1 1_003

Bước 2:

mongodb connections_004

Bước 3: Đặt tên cho connection này. Nó sẽ trỏ đến toàn bộ MongoDB trên localhost của ta, kể cả các dự án khác. Lưu ý số cổng MongoDB. Sau đó nhấn Connect.

connection settings_005

mongodb connections_006

Bước 4: Vào xem database của fcchn-blog-backend. Chỉnh sửa nếu muốn.

robo 3t - 1 1_007
robo 3t - 1 1_008

[Todo 2018.01.17] Cập nhật công việc cần làm

Tham dự:

  1. Nguyễn Thế Phụng Long
  2. Vũ Tùng
  3. Nguyễn Thế Tùng
  4. Nguyễn Minh Trung
  5. Khắc Thành

Nội dung thảo luận

  • Tính năng "like" cho post -> Làm giống Medium, tối đa 50 like/ user.
  • Tính năng "like" cho comment -> 0/1.
  • Tách thành 5 bảng: Users, Posts, Comments, và Likes
  • Làm lại bảng mô tả: Resouce, Actions, Routes, HTTP Methods/ Verbs, Description, và Parameters.

Danh sách các công việc cần làm:

  1. Viết lại sample JSON của data model --> Deadline: 21.01.2018 Trung (@ngminhtrung)
  2. Tạo project folder, gitignore, package.json --> Deadline: 23.01.2018 Long (@thelonglqd)
  3. Chuyển bảng trên từ Google Spreadsheet sang markdown --> Deadline: 21.01.2018 Trung (@ngminhtrung)

Website & Node.js Security Checklist

Dear all,

Về bảo mật cho website, mình hiểu có 2 thứ lớn cần lưu tâm:

  1. Bảo mật cho một website nói chung.
  2. Bảo mật cho Node.js nói riêng

Mục 2 có thể bị trùng với mục 1, nhưng sẽ có những thứ khác cần phải quan tâm riêng cho công nghệ Node.js.

Mình đề xuất hướng tiếp cận cho mục này như sau:

  1. Bắt buộc phải làm. Không được bỏ qua vụ này.
  2. Cùng nhau liệt kê các vấn đề của các phần trên, và hiểu xem nếu ứng vào app của ta thì sẽ như thế nào.
  3. Đề ra cách xử lý với mỗi loại nguy cơ.
  4. Tiến hành bịt 1 - 2 lỗ hổng (nếu có) điển hình nếu thời gian cho phép (ví dụ cài thêm module nào đó của Express).
  5. Ghi chép tạo report riêng cho mục này.

3.1.1. Collection "Comments" - Setup Schema cho model

Tham chiếu đến tài liệu chính ở đây.

{
        {
            "content": "Bài này viết tốt quá",
             "authorID": ObjectId("1qrq3522aa6a3233a92141411"),
             "postID":  11,
              createdAt: { type: Date, default: Date.now }

        },
        {
            "content": "Cần bổ sung thêm về ...",
            "authorID": ObjectId("412b1153a2aa6a3233a9132e7"),
            "postID": 141,
              createdAt: { type: Date, default: Date.now }
        }
},

Viết hướng dẫn để cài đặt và chạy (back-end)

Làm thế nào để đóng góp cho app này?

blog-app mở cho tất cả mọi người, và chúng tôi hoan nghênh bất kỳ đóng góp nào. Chúng tôi tin rằng dự án này sẽ hoàn thiện hơn khi nhận được sự quan tâm của các bạn.

SETUP


Danh sách modules cần để chạy fcchn-blog-backend

Những chương trình cần cài trước trong máy:

Tên chương trình Phiên bản
Node.js 8.9.3
MongoDB 3.4.5

Nếu Node.js hoặc MongoDB đã có sẵn trong máy của bạn, hãy chạy câu lệnh sau để kiểm tra phiên bản đã cài đặt:

node -v
mongo --version

Nếu phiên bản Node.js hoặc MongoDB của bạn đang thấp hơn phiên bản yêu cầu trên, bạn cần tiến hành cập nhật.

Fork the project

Bạn cần fork dự án này về repo của bạn.

Cài đặt git

  1. Cài đặt git
  2. Setup một khóa SSH cho Github.

Tiến hành fork fcchn-blog-backend

  1. Vào repo của fcchn-blog-backend tại địa chỉ: https://github.com/ngminhtrung/fcchn-blog-backend
  2. Kéo lên đầu trang, click chuột vào nút "Fork" ở bên tay phải. Xem chi tiết ở đây.
  3. Sau khi repo này được forked, trình duyệt web sẽ đưa bạn đến repo trên account Github của bạn tại địa chỉ [lưu ý thay tên account của bạn]: https://github.com/[tên-account-Github-của-bạn]/fcchn-blog-backend

Clone bản fork về máy local

  1. Mở Terminal/ Command Line/ Bash Shell trong folder nào đó trong máy bạn, chọn folder mà bạn muốn lưu trữ repo fcchn-blog-backedn nói trên, ví dụ: /learningReact
  2. Clone bản fork của fcchn-blog-backend về máy qua câu lệnh:
git clone https://github.com/[tên-account-Github-của-bạn]/fcchn-blog-backend.git

Lưu ý lần nữa: nhớ đổi "tên-account-Github-của-bạn" trong đường dẫn trên với username Github của bạn.

Cài đặt Upstream

  1. Chuyển đến thư mục chứa fcchn-blog-backend (ví dụ bằng câu lệnh cd fcchn-blog-backend)
  2. Thêm một tham chiếu từ xa đến repo chính thức của fcchn-blog-backend:
$ git remote add upstream https://github.com/ngminhtrung/fcchn-blog-backend.git

Lưu ý: từ upstream có thể thay đổi bằng bất kỳ từ nào khác theo ý bạn. Chủ yếu bạn cần nhớ từ khóa này để dùng sau này, khi cần cập nhật mã nguồn từ repo chính thức của fcchn-blog-backend.

Maintain bản fork của bạn

Bây giờ bạn đã có 1 bản fork, sẽ có vài việc cần làm để giúp cho bản fork này được cập nhật.

Rebase từ upstream

Hãy thực hiện việc sau trước khi tạo 1 branch mới để Pull Request:

  1. Đảm bảo rằng bạn đang ở nhánh develop:
git status
// On branch develope
// Your branch is up-to-date with 'origin/develop'

Nếu đang ở nhánh khác, hãy xử lý các files còn đang dang dở, commits, rồi chuyển sang nhánh develop:

git checkout develop

Thực hiện 1 pull có rebase đối với repo "upstream" (chính là repo gốc của fcchn-blog-backend). Lưu ý: nếu bạn đã từng thay từ "upstream" bằng cái tên khác ở bước bên trên, thì ở đây cũng phải đổi "upstream" thành từ mà bạn đã đặt.

git pull --rebase upstream develop

Việc này sẽ giúp lôi mọi thay đổi từ nhánh develop của repo chính thức về repo của bạn (mà không tạo thêm commit trong repo trên máy).

  1. (Tùy chọn) Force push những thay đổi trên nhánh develop trên repo trên máy đến bản fork online trên Github
git push origin develop --force

Thao tác này sẽ ghi đè nhánh develope trên bản fork của bạn (trên Github).

Tạo nhánh mới

Trước khi tiến hành công việc, bạn sẽ cần tạo 1 nhánh mới liên quan cụ thể đến issue/ tính năng mà bạn đang nhắm đến. Mọi code của bạn sẽ được đẩy vào nhánh này.

Đặt tên cho nhánh

Định dạng tên nhánh:

  • Khi fix bug: fix/xxx
  • Khi liên quan đến tính năng: feature/xxx

trong đó xxx là mô tả "cực" ngắn về thay đổi hoặc tính năng mà bạn đang thêm vào. Ví dụ, nếu bạn định fix bug liên quan đến tính năng log-in bằng email, hãy đặt tên nhánh là fix/email-login.

Thêm nhánh vào repo trên máy

Tạo một nhánh mới trên máy và chuyển đến nhánh đó bằng lệnh:

git checkout -b [tên_nhánh_mới_của_bạn]

sau đó đẩy lên Github

$ git push origin [tên_nhánh_mới_của_bạn]

Nếu cần tra thêm cách xử lý với nhánh, hãy xem tại đây.

Thiết lập cơ chế "linting"

Bạn cần có ESLint được cài vào editor của mình, ESLint sẽ giúp phát hiện bất kỳ đoạn code nào không tuân thủ với quy định về viết code của fcchn-blog-backend. Các quy định được dựa trên Airbnb JavaScript Style Guide.

Xin đừng bỏ qua bất kỳ vấn đề nào do ESLint chỉ ra, bởi quy định về viết code được sinh ra để đảm bảo chúng ta luôn có một code base sạch sẽ và sáng sủa.

Set-up fcchn-blog-backend

Một khi bạn đã fork fcchn-blog-backend về máy, trước khi chạy chương trình, bạn cần cài đặt tất cả các dependencies qua lệnh:

npm install

Sau đó bạn cần khởi động MongoDB, thêm dữ liệu cho database, sau đó khởi động chương trình:

# Bật mongo server ở một terminal riêng:
# Nếu dùng macOS:
mongod

# Nếu dùng Windows, bạn cần phải chỉ rõ đường dẫn đến file thực thi mongod
# Đường dẫn dưới đây chỉ là mẫu, hãy thay 3.4 bằng phiên bản thực tế cài trên máy bạn:
"C:\Program Files\MongoDB\Server\3.4\bin\mongod"

# Khởi động fcchn-blog-backend
# Lệnh sau sẽ thêm dữ liệu vào database trong lần cài đặt đầu tiên
# Và lệnh này chỉ cần chạy 1 lần duy nhấ
npm run only-once

# Khởi động ứng dụng
npm start

Bây giờ, hãy mở trình duyệt lên, gõ vào thanh địa chỉ http://localhost:3000. Nếu ứng dụng chạy, thì nghĩa là mọi thứ đã ngon lành. Còn không, bạn có thể tạo issue trong repo chính thức của fcchn-blog-backend để hỏi.

Test ứng dụng

Khi bạn đã sẵn sàng để chia sẻ code mới thêm vào, bạn cần test lại ứng dụng với:

npm test

và đảm bảo mọi tests phải được pass.

Bản quyền

Một khi đã đóng góp vào blog-app, bạn đồng ý rằng code của bạn sẽ có bản quyền theo nhóm MIT.

feat(data-model): Like và Unlike

Hiện mình đang nghĩ like và unline sẽ để là true hoặc false.

@tungnt-580 : Với like, Nếu để giống như clap của Medium thì phải là number. Nếu phức tạp hơn giống Facebook thì lại là array.

Long: Nếu thêm unline vào thì lại khác. Nếu có unlike, thì like: [{user: ‘A’, user: ‘B’}], số lượng like lấy bằng like.length, mỗi lần click vào nút like/unlike, thì tìm username, có thì là unlike (xoá bỏ phần tử đó trong mảng), mà không có thì là like (thêm user đó vào mảng) 😄

Setup logger

  • Setup logger for project
  • Log must be piped to files, file name must include timestamp for ease of tracking
  • Log daily.
  • Study on what is best practice for logger destination (separated folder for each environment or inside projects folder)

[3rd party library] Lodash

Long: Làm việc với object và mảng, thì mọi người dùng thư viện này phổ biến này. dự án nào về JS cũng sẽ có

https://lodash.com/

PS: Note riêng thành 1 issue để sau này dễ tập hợp lại xem thư viện này dùng chỗ nào, cho việc gì. Nếu không có nó thì sao.

[Todo 2018.02.09] Danh sách công việc cần làm

Participants


  1. Nhóm 1: Long
  2. Nhóm 2: Nguyễn Thanh Tùng - Vũ Tùng
  3. Nhóm 3: Thành - Trung

TODO


1. Write Schema, Routes, and Controller for CRUD tasks:

1.1. Collection "Users" (Long). Done on 2018.02.07

  • Schema set-up
  • Create
  • Read
  • Update
  • Delete

1.2. Collection "Post" (Vũ Tùng - Nguyễn Tùng). Done on 2018.02.07

  • Schema set-up
  • Create
  • Read
  • Update
  • Delete

1.3. Collection "Comments" (Trung). Done on 2018.02.07

  • Schema set-up
  • Create
  • Read
  • Update
  • Delete

1.4. Collection "Likes" (Thành)

  • Schema set-up
  • Create
  • Read
  • Update
  • Delete

1.2 Viết test cho Users

2. Setup logger (Nguyễn Tùng). Done on 2018.02.07

  • Setup logger for project
  • Log must be piped to files, file name must include timestamp for ease of tracking
  • Log daily.
  • Study on what is best practice for logger destination (separated folder for each environment or inside projects folder)

3. Write API Docs

  • Users
  • Posts
  • Comments
  • Likes

4. Setup nodes.js environment

  • Development
  • Testing
  • Production

5. Setup naive test

  • Manual test by POSTMAN
  • Export and upload POSTMAN test collection

6. Setup automation test

  • Create test case
  • Database population
  • Setup test specification with Mocha, Chai and Chai-http

7. Deploy the product

  • Populate database with data
  • Deploy to heroku

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.