TTDN 19522218 Trần Quốc Thắng SE501 N11 PMCL docx ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA CÔNG NGHỆ PHẦN MỀM THỰC TẬP TỐT NGHIỆP ĐỀ TÀI Xây dựng Server với Nodejs NestJ[.]
ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA CÔNG NGHỆ PHẦN MỀM THỰC TẬP TỐT NGHIỆP ĐỀ TÀI: Xây dựng Server với Nodejs - NestJs Công ty thực tập: TNHH Playground Lớp: SE501.N11.PMCL Sinh viên thực hiện: Trần Quốc Thắng – 19522218 TP Hồ Chí Minh, ngày 15 tháng 11 năm 2022 Trần Quốc Thắng Thực tập tốt nghiệp NHẬN XÉT (Của giảng viên) Trần Quốc Thắng Thực tập tốt nghiệp MỤC LỤC MỤC LỤC LỜI NÓI ĐẦU LỜI CẢM ƠN Chương 1: Giới thiệu công ty thực tập Giới thiệu công ty Playground Sản phẩm công ty 6 Chương 2: Nội dung thực tập 2.1 Hướng dẫn quy tắc làm việc nhóm quy định cơng ty 2.1.1 Tìm hiểu Nestjs framework liên quan 2.1 Thực project 2.1 Lịch làm việc 7 8 Chương 3: Chi tiết project Giới thiệu PoolsMall 1.1 Giới thiệu 1.2 Chi tiết ứng dụng 1.3 Một số giao diện 1.3.1 Một sơ hình giao diện hệ thống hình giao diện swagger 1.3.2 Màn hình terminal deploy ứng dụng thơng qua pm2 1.3.3 Màn hình Order Product 1.3.4 Màn hình giao hàng Thực 9 9 10 11 13 14 15 16 TÀI LIỆU THAM KHẢO 16 Trần Quốc Thắng Thực tập tốt nghiệp LỜI NĨI ĐẦU Ngày nay, ngành cơng nghiệp phát triển ứng dụng web phận thiếu ngành công nghiệp phần mềm Với tốc độ phát triển vô mạnh mẽ, ngành phát triển ứng dụng web nhân tố kích thích phát triển công nghệ thông tin giới, phần cứng phần mềm Cùng với xu phát triển giới, Việt Nam ngoại lệ Ngành công nghiệp phát triển web non trẻ Việt Nam phát triển mạnh mẽ, để hòa nhập với công ty hàng đầu xây dựng tảng web giới Bên cạnh phát triển web ngành nghề tiếp cận người dùng cách nhanh chóng ta thấy mạng xã hội hay website bán hàng trực tuyến thịnh hành giới lẫn Việt Nam Sau ba năm học tập trường, mong muốn có thêm kinh nghiệm thực tế, muốn tìm hiểu, bổ sung kiến thức mơi trường chun nghiệp, em có dự định thực tập học kì Vì vậy, em định chọn Công Ty TNHH Playground - môi trường lý tưởng, đại, chuyên nghiệp - nơi giúp em thực dự định Trần Quốc Thắng Thực tập tốt nghiệp LỜI CẢM ƠN Em xin chân thành cảm ơn ban giám hiệu quý thầy cô trường Đại học Công nghệ thông tin cung cấp bồi dưỡng cho em kiến thức suốt năm ngồi giảng đường đại học, để từ em có tảng áp dụng vào đợt thực tập cách hiệu Em xin gửi lời cảm ơn quý Công Ty TNHH Playground tạo điều kiện cho em thực tập công ty cung cấp, bổ sung cho em kiến thức mà em cịn thiếu sót Q cơng ty hỗ trợ em nhiều suốt thời gian thực tập vừa qua, dạy em kỹ cần thiết, truyền đạt cho em kinh nghiệm mà anh chị trải qua trình làm việc, trao đổi với khách hàng, tác phong tinh thần trách nhiệm trước công việc giao, suy nghĩ tích cực Các anh chị tạo cho em nhiều điều kiện để ứng dụng kiến thức học vào thực tế để xây dựng dự án thực tiễn từ lúc ban đầu, nâng cao trình độ, tốc độ lập trình trí thức thêm bậc Em xin chân thành cảm ơn Vì kiến thức thân hạn chế lần va chạm tiếp xúc với thực tế, áp dụng lý thuyết vào cơng việc nên thân cịn bỡ ngỡ lúng túng, khơng tránh khỏi thiếu sót, mong q Thầy (Cơ) đóng góp ý kiến để em hồn thiện Em xin chân thành cảm ơn! Trần Quốc Thắng TP Hồ Chí Minh, ngày 25 tháng 12 năm 2022 Trần Quốc Thắng Thực tập tốt nghiệp Chương 1: Giới thiệu công ty thực tập Giới thiệu công ty Playground Tên công ty: TNHH Playground Địa chỉ: Mai Chi Tho Street, District 2, Ho Chi Minh City Email: contact@playgroundvina.com Sản phẩm công ty Playground cung cấp sản phẩm dịch vụ liên quan đến lĩnh vực blockchain, NFT Đặc biệt phải kể đến sản phẩm công nghệ Game, Sàn Swap, DAO, Marketplace, … Trần Quốc Thắng Thực tập tốt nghiệp Chương 2: Nội dung thực tập Đợt thực tập ứng dụng mơ hình làm việc Scrum sinh viên thực tập đào tạo lập trình web sử dụng Nodejs React, đồng thời rèn luyện kỹ mềm làm việc nhóm theo Scrum, thuyết trình, giao tiếp, sử dụng công cụ quản lý công việc Trello Tại cơng ty, sinh viên có hội học tập, khám phá làm việc môi trường startup động Ở Playground thực tập sinh có hội học hỏi cơng nghệ blockchain áp dụng product công ty Từ đó, thực tập sinh hiểu biết ứng dụng blockchain phù hợp với mục đích Ngồi việc học cơng nghệ sinh viên cịn hướng dẫn kỹ mềm làm việc teamwork, cách sử dụng git mơ hình hố liệu Tìm hiểu công ty kỹ công ty Thời gian : ngày Nội dung : Giới thiệu công ty, cách tổ chức công ty Được nghe người phụ trách giới thiệu công ty, trình thành lập phát triên (như nhắc đến trên), quy trình làm việc từ cao xuống thấp, cách thức tổ chức cơng ty Ngồi ra, thực tập sinh giới thiệu cách thức làm việc công ty thời gian làm, quy định cần phải tuân thủ, cách sử dụng email công việc… Kết : Hiểu thêm cơng ty, q trình thành lập phát triển Có thêm kỹ việc sử dụng email cơng việc, làm việc có kế hoạch, có kỷ luật, có trách nhiệm Trần Quốc Thắng Thực tập tốt nghiệp Nghiên cứu kỹ thuật 2.1 Các công cụ làm việc Thời gian : ngày Nội dung : Tìm hiểu cơng cụ sử dụng trình làm việc Trong thời gian này, supervisor hướng dẫn thực tập sinh tìm hiểu cơng cụ giúp ích cho cơng việc sau Một số phần mềm số Gitlab - sử dụng làm việc nhóm, VScode - editor để xây dựng ứng dụng Thực : Thực hành sử dụng phần mềm nêu Kết : Lập trình sử dụng cơng cụ miễn phí, giúp dễ dàng kết hợp cơng cụ với nhau, so với việc dung IDE 2.2 Tìm hiểu ngơn ngữ Typescript Thời gian : ngày (1 tuần) Nội dung : Ôn tập kiến thức javascript bản, javascript ES6 ( arrow functions, async, await, promise, … ) training kỹ thuật typescript, khác typescript javascript, sử dụng typescript với framework Express để xây dựng phát triển server Thực : - Tham gia đầy đủ buổi training công ty - Làm thực hành, kiểm tra kiến thức học Kết : - Nâng cao kỹ lập trình với ngơn ngữ typescript - Có kiến thức quan trọng cho việc lập trình server sau - Ngồi biết thêm số quy tắc việc viết code cho chuẩn, dễ đọc, dễ hiểu Trần Quốc Thắng 2.3 Thực tập tốt nghiệp Tìm hiểu RESTful API Framework NestJS Thờ gian: ngày (2 tuần) Nội dung: Các kiến thức RESTfulAPI NestJS - Cơ RESTful API RESTful API tiêu chuẩn dùng việc thiết kế API cho ứng dụng web (thiết kế Web services) để tiện cho việc quản lý resource Nó trọng vào tài nguyên hệ thống (tệp văn bản, ảnh, âm thanh, video, liệu động…), bao gồm trạng thái tài nguyên định dạng truyền tải qua HTTP - Framework NestJS NestJS là framework xây dựng tảng của Nodejs Nó cung cấp tính mạnh mẽ để phát triển web mobile NestJs hỗ trợ method HTTP midleware tạo API vô mạnh mẽ dễ sử dụng.… Thực : - Tham gia đầy đủ buổi trainning - Tự đọc thêm tài liệu, nghiên cứu thêm library, luyện tập thêm cách cài đặt, sử dụng library Kết : - Làm quen, hiểu kiến trúc thành phần NodeJS, NestJS - 2.4 Thành thạo việc cài đặt, config sử dụng thư viện cần dùng cho project Tìm hiểu MongoDB Nội dung : Các kỹ thuật mongodb Trần Quốc Thắng Thực tập tốt nghiệp - Định nghĩa MongoDB: MongoDB sở liệu mã nguồn mở sở liệu NoSQL(*) hàng đầu, hàng triệu người sử dụng MongoDB viết C++ Ngoài ra, MongoDB sở liệu đa tảng, hoạt động khái niệm Collection Document, cung cấp hiệu suất cao, tính khả dụng cao khả mở rộng dễ dàng - Sử dụng thư viện mongoose hỗ trợ thao tác với mongodb Mongoose thư viện JavaScript cho phép bạn định nghĩa schema với liệu định kiểu rõ ràng Khi schema định nghĩa, Mongoose cho phép bạn tạo Model dựa schema cụ thể Model Mongoose sau ánh xạ tới MongoDB document thơng qua định nghĩa schema Model Thực : - Tham gia đầy đủ buổi training Xây dựng model api thực thi transaction model Kết quả: - Đã xây dựng model hệ thống, thực thi transaction model thông qua API Thực project Sau thời gian tuần tiếp cận với javascript dạy tận tình thơng quan buổi seminar tiếp cận với dự án thực tế Các anh giúp em nhận hướng phát triển mơi trường thích hợp với thân server-side Trong thời gian tuần em đóng góp kiến thức để giúp anh tiếp tục hồn thành dự án PoolsMall với vị trí back-end Trần Quốc Thắng Lịch làm việc Anh Tân Mức độ hoàn thành 100% Anh Tân 100% Anh Tân 100% Anh Tân 100% Anh Tân 100% - Xây dựng service xác thực người dùng theo Anh Tân chế token 100% - Xây dựng chức xác thực KYC Anh Tân người dùng Các api liên quan đến thông tin người dùng Set up server AWS EC2 Anh Tân Tìm hiểu PM2, Nginx config ecosystem file pm2 Phân tích chức hệ thống theo nhu Anh Tân cầu anh Nguyễn Vĩnh Khiêm Xây dựng model ứng dụng Xây dựng API Viết document Swageer 100% Tuần Công việc - - - - - trở Thực tập tốt nghiệp - Tìm hiểu cơng ty, cách tổ chức công ty Làm quen với công cụ làm việc công ty Học cách trao đổi, làm việc qua email Học tập ôn lại kiến thức cũ, nắm học Tìm hiểu, ơn tập Typescript, NodeJS, NestJS Tìm hiểu MongoDB, sử dụng thư viện mongoose để làm việc với mongoDB Cấu trúc source code Tìm hiểu, nắm bắt thơng tin dự án Tìm hiểu quy trình ứng dụng PoolsMall chuẩn bị triển khai Thực chức đăng nhập, đăng kí, xác thực thông qua email Xây dựng model tổng quan authencation Người hướng dẫn Nhận xét người hướng dẫn 100% 100% 10 Trần Quốc Thắng Thực tập tốt nghiệp Chương 3: Chi tiết project Theo quy chế thực tập sinh, trích dẫn: Điều 5: Bảo mật thơng tin - Phần a.Thông tin khách hàng: … Bảo mật thông tin khách hàng ( họ tên, địa chỉ, điện thoại, sản phẩm, doanh thu, liệu, …) - Phần b.Thông tin công ty: … Đảm bảo an tồn thơng tin sản phẩm, dự án giai đoạn kế hoạch, phát triển sản phẩm chưa phép công bố Nên phần mô tả giới hạn trình thực tập Giới thiệu PoolsMall 1.1 Giới thiệu PoolsMall ứng dụng thương mại điện tử theo hình thức B2C kết hợp với mall từ đối tác sở hữu công ty Ứng dụng cho phép người dùng giao dịch trực tiếp thông qua ứng dụng kiểm duyệt sản phẩm từ cửa hàng chuyên gia kiểm định nhằm đem lại sản phẩm an toàn với người mua người bán 1.2 Chi tiết ứng dụng Ứng dụng xây dựng ReactJs, server sử dụng NodeJS với mục đích tiết kiệm chi phí phát triển ứng dụng Các công nghệ sử dụng dự án: - Mongoose: Mongoose framework JavaScript thường sử dụng ứng dụng Node.js với database MongoDB - Jsonwebtoken: JSON Web Token (JWT) tiêu chuẩn mở (RFC 7519) định nghĩa cách thức truyền tin an toàn thành viên đối tượng JSON Thông tin xác thực đánh dấu tin cậy nhờ vào “chữ ký” Phần chữ ký JWT mã hóa lại HMAC RSA 11 Trần Quốc Thắng Thực tập tốt nghiệp - Web3: thư viện cung cấp hàm để tương tác với blockchain - Nodemailer mô-đun dành cho ứng dụng Node.js phép gửi email dễ dàng bánh Dự án bắt đầu trở lại vào năm 2010 khơng có tùy chọn lành mạnh để gửi email, ngày giải pháp mà hầu hết người dùng Node.js chuyển sang theo mặc định - Swagger-ui-express: Swagger UI tool cho phép - từ developers end users - hình dung tương tác với tài nguyên API dự án Tool tự động generates API documents từ file config Swagger, với nhìn trực quan việc triển khai trở nên dễ dàng cho phía client - PM2: pm2 là trình quản lý process (tiến trình) dành cho ứng dụng Nodejs Nó viết Nodejs Shell PM2 tích hợp cân tải (load balancer) Bạn giữ cho process server sống reload/restart với zero downtime - Nginx: phần mềm web server mã nguồn mở nỗi tiếng Ban đầu dùng để phục vụ web HTTP Tuy nhiên, ngày dùng làm reverse proxy, HTTP load balancer email proxy IMAP, POP3, SMTP 12 Trần Quốc Thắng Thực tập tốt nghiệp 1.3 Một số giao diện 1.3.1 Một sô hình giao diện hệ thống hình giao diện swagger 13 Trần Quốc Thắng Thực tập tốt nghiệp 14 Trần Quốc Thắng 1.3.2 Thực tập tốt nghiệp Màn hình terminal deploy ứng dụng thơng qua pm2 Màn hình login vào server Màn hình log thơng tin ứng dụng chạy 15 Trần Quốc Thắng 1.3.3 Thực tập tốt nghiệp Màn hình Order Product Màn hình order product 16 Trần Quốc Thắng Thực tập tốt nghiệp Màn hình tốn order 1.3.4 Màn hình giao hàng Màn hình giao hàng 17 Trần Quốc Thắng Thực tập tốt nghiệp Thực thành viên team fresher Playground: - Trần Quốc Thắng Hoàng Quốc Vương Hoàng Ngọc Hiếu Nguyễn Văn Vũ Và giúp đỡ tận tình team trainer Playground TÀI LIỆU THAM KHẢO Mongodb https://mongodb.com Packages https://npmjs.com Typescript https://www.typescriptlang.org/ https://topdev.vn/blog/hoc-typescript-trong-30-phut/ https://viblo.asia/p/tim-hieu-typescript-va-kien-thuc-co-ban-PmeRQpnyGoB pm2 https://pm2.keymetrics.io/ nginx https://www.nginx.com/ 18 Trần Quốc Thắng Thực tập tốt nghiệp TỔNG KẾT Sau tháng thực tập công ty, em học nhiều đều, không kiến thức riêng lập trình mà cịn quy chuẩn làm việc cơng ty, để biết doanh nghiệp làm việc nào, phối hợp nhân lực Hơn nữa, em tiếp thu kinh nghiệp quý báu từ anh chị đồng nghiệp, góp phần giúp em hồn thiện kiến thức, kỹ đạt số thành cơng định q trình thực tập cơng ty Về tư tưởng thân, em biết để trở thành lập trình viên, lập trình viên khác giải vấn đề, nghề nghiệp làm tương lai, định hướng nghề nghiệp 19 ... https://www.typescriptlang.org/ https://topdev.vn/blog/hoc-typescript-trong-30-phut/ https://viblo.asia/p/tim-hieu-typescript-va-kien-thuc-co-ban-PmeRQpnyGoB pm2 https://pm2.keymetrics.io/ nginx https://www.nginx.com/... Nguyễn Vĩnh Khiêm Xây dựng model ứng dụng Xây dựng API Viết document Swageer 100% Tuần Công việc - - - - - trở Thực tập tốt nghiệp - Tìm hiểu cơng ty, cách tổ chức công ty Làm quen với công cụ làm... định - Swagger-ui-express: Swagger UI tool cho phép - từ developers end users - hình dung tương tác với tài nguyên API dự án Tool tự động generates API documents từ file config Swagger, với nhìn