TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA CÔNG
NGHỆ PHẦN MỀM
BÁO CÁO THỰC TẬP
NESTJS TRONG LẬP TRÌNH WEB
Cơng ty thực tập : Công ty TNHH DESIGNVELOPER
Người phụ trách :Lý Thị Kim Hằng–Đinh Sơn Hải
Thực tập sinh
: Trần Huy Win- 18521686
TP. Hồ Chí Minh, tháng 06 năm 2022
LỜI MỞ ĐẦU
Lời đầu tiên em xin chân thành cảm ơn đến Công ty TNHH Designveloper đã tạo điều
kiện cho em được thực tập tại cơng ty để có thể tìm hiểu và thực hành trực tiếp trên các
cơng cụ và phần mềm của công ty cũng như là quá trình tham gia học hỏi tìm hiểu sâu về
cách hoạt động phần mềm.
Designveloper là công ty phát triển phần mềm và ứng dụng hàng đầu tại Thành phố Hồ
Chí Minh, Việt Nam, được thành lập vào năm 2013 từ một tập thể trẻ và đầy nhiệt huyết
các lập trình viên web, mobile; chuyên viên thiết kế UI/UX và các chuyên gia VOIP.
Sau 1 tháng thực tập tại công ty, em đã được huấn luyện, trải nghiệm với các phương
pháp làm việc mới mẻ cùng với những kiến thức đã học trên ghế nhà trường, từ đó biết
được cách thức hoạt động của cơng ty, có thêm nhiều kinh nghiệm trong công việc.
LỜI CẢM ƠN
Trân trọng gửi lời cảm ơn công ty TNHH Designveloper (DSV) đã tạo điều kiện cho
em có cơ hội được thực tập tại công ty.
Chỉ trong một thời gian ngắn, nhưng nhờ sự chỉ dẫn nhiệt tình của của các anh chị, em
đã tiếp thu được những kiến thức quan trọng để có thể làm được một sản phẩm phần mềm
mang lại giá trị cho công ty. Chân thành cảm ơn các anh chị đã bỏ ra nhiều thời gian,cơng
sức để hướng dẫn chúng em hồn thành đợt thực tập này.
Em xin chân thành cảm ơn chị Lý Thị Kim Hằng - Project manager, anh Đinh Sơn Hải –
team leader cùng tồn thể các anh chị tại cơng ty đã giúp đỡ, hỗ trợ em trong suốt 4 tuần
thực tập vừa qua.
NHẬN XÉT CỦA KHOA
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
..........................................................................................................................................
MỤC LỤC
Chương 1. Giới thiệu về công ty thực tập ........................................................................ 6
1.1.
Giới thiệu công ty Designveloper ..................................................................... 6
1.2.
Sản phẩm của công ty ....................................................................................... 6
1.2.1. LuminPDF................................................... Error! Bookmark not defined.
1.2.2. Swell & Switchboard .................................................................................... 6
1.2.3. Walrus Education .......................................................................................... 6
1.2.4. Joyn’it ........................................................................................................... 7
1.2.5. Bonux ............................................................................................................ 7
Chương 2. Nội dung thực tập ............................................................................................ 8
2.1.
Tìm hiểu NodeJS............................................................................................... 8
2.2.
Khi nào nên sử dụng NodeJS ............................................................................ 8
2.3.
Tìm hiểu Gatsby ................................................................................................ 8
2.3 Thời gian thực tập ................................................................................................. 9
Chương 3. Chi tiết về Project ......................................................................................... 10
3.1.
Nội dung chi tiết project ................................................................................. 10
3.2 Kết quả đạt được. ............................................................................................... 12
3.2.1. Kiến thức tích luỹ ....................................................................................... 12
3.2.2. Sản phẩm thực tế ........................................................................................ 13
Tài liệu tham khảo ........................................................................................................... 15
Tổng kết .......................................................................................................................... 16
CHƯƠNG 1. GIỚI THIỆU VỀ CÔNG TY THỰC TẬP
1.1.
Giới thiệu công ty Designveloper
Designveloper là công ty phát triển phần mềm và ứng dụng hàng đầu tại Thành phố Hồ
Chí Minh, Việt Nam, được thành lập vào năm 2013 từ một tập thể trẻ và đầy nhiệt huyết
các lập trình viên web, mobile; chuyên viên thiết kế UI/UX và các chuyên gia VOIP.
Hiện tại Desigveloper có 2 cơ sở với quy mơ hơn 100 nhân viên. Văn phịng thứ nhất
toạ lạc tại 14, Đường số 39, Phường Bình An, Quận 2, TP.Thủ Đức. Văn phòng thứ 2 tại
50/4 Quang Trung, Phường 10, Quận Gị Vấp, TP. Hồ Chí Minh.
1.2. Sản phẩm của công ty
1.2.1.
HRM
HRM là một trang web giúp đỡ các cơng ty IT trong q trình quản lý nhân sự, project
của công ty. Gồm một số chức năng như xin nghỉ phép, tạo dự án, quản lý dự án, quản lý
nhân viên trong công ty. Hiện tại HRM đang trong quá trình sử dụng một số module như
quản lý nhân viên và tương lai còn nhiều chức năng khác nữa, HRM đang được chính
cơng ty DSV sử dụng.
1.2.2.
Swell & Switchboard
Swell & Switchboard là một nền tảng quản lý doanh nghiệp trong ngành công nghiệp
năng lượng mặt trời. Đến nay, nền tảng này đang được áp dụng và đánh giá rất cao trong
việc quản lý quy trình làm việc hàng ngày của khách hàng. Với thành tựu này,
Designveloper đang phát triển nâng cao mơ hình của sản phẩm để đạt độ phủ sóng ra tồn
thế giới.
1.2.3.
Walrus Education
Walrus là một nền tảng để kết nối sinh viên, giáo viên và trường học. Công nghệ React,
React Native và Nodejs đã được sử dụng để phát triển các ứng dụng web và mobile cho
nền tảng này.
1.2.4.
Joyn’it
Nền tảng Joyn’it cung cấp các dịch vụ dành riêng cho cộng đồng để tạo sự kiện dễ dàng
và thông báo cho thành viên các sự kiện sắp diễn ra
1.2.5.
Bonux
Bonux là một dự án xây dựng ví tiền điện tử với các tính năng lưu trữ, quản lý và thực
hiện giao dịch cho người sử dụng. Thiết kế giao diện UI-UX và một số kỹ thuật khác đã
được áp dụng vào quá trình phát triển dự án.
CHƯƠNG 2. NỘI DUNG THỰC TẬP
2.1.
Tìm hiểu NodeJS
• Nodejs là một nền tảng (Platform) phát triển độc lập được xây dựng ở trên
Javascript Runtime của Chrome mà chúng ta có thể xây dựng được các ứng dụng
mạng một cách nhanh chóng và dễ dàng mở rộng.
• Nodejs được xây dựng và phát triển từ năm 2009, bảo trợ bởi công ty Joyent, trụ
sở tại California, Hoa Kỳ.
• Phần Core bên dưới của Nodejs được viết hầu hết bằng C++ nên cho tốc độ xử lý
và hiệu năng khá cao.
• Nodejs tạo ra được các ứng dụng có tốc độ xử lý nhanh, realtime thời gian thực.
• Nodejs áp dụng cho các sản phẩm có lượng truy cập lớn, cần mở rộng nhanh, cần
đổi mới công nghệ, hoặc tạo ra các dự án Startup nhanh nhất có thể.
2.2.
Khi nào nên sử dụng NodeJS
Là một nền tảng phát triển ứng dụng mạnh mẽ, Nodejs có thể thỏa mãn mọi nhu cầu lập
trình, phát triển ứng dụng. Các chuyên gia trong lĩnh vực lập trình, cơng nghệ khun
dùng Nodejs khi phát triển các ứng dụng như Websocket server, Fast File Upload Client,
Ad Server, Cloud Services, RESTful API, Any Real-time Data Application,...
• Websocket server: Các máy chủ web socket như là Online Chat, Game Server…
• Fast File Upload Client: là các chương trình upload file tốc độ cao.
• RESTful API: đây là những ứng dụng mà được sử dụng cho các ứng dụng khác
thông qua API.
• Any Real-time Data Application: bất kỳ một ứng dụng nào có yêu cầu về tốc
độ thời gian thực. Micro Services: Ý tưởng của micro services là chia nhỏ một
ứng dụng lớn thành các dịch vụ nhỏ và kết nối chúng lại với nhau. Nodejs có thể
làm tốt điều này.
2.3.
Tìm hiểu NestJs
Nest (NestJS) là một khn khổ để xây dựng các ứng dụng phía máy chủ Node.js hiệu
quả, có thể mở rộng . Nó sử dụng JavaScript tiến bộ, được xây dựng và hỗ trợ đầy
đủ TypeScript (nhưng vẫn cho phép các nhà phát triển viết mã bằng JavaScript thuần túy)
và kết hợp các yếu tố của OOP (Lập trình hướng đối tượng), FP (Lập trình chức năng) và
FRP (Lập trình phản ứng chức năng).
.
• Hỗ trợ: NestJs hỗ trợ cả 2 ngôn ngữ typescript, javascript
• Design pattern: xuyên suốt NestJS là Dependency Injection, và cú pháp của
NestJS rất giống Angular. Nên nếu bạn đã có kiến thức về Angular thì việc bắt
đầu với NesJS sẽ khá dễ dàng.
• Module Hỗ trợ: NestJS có rất nhiều module hỗ trợ bạn, từ việc hot reload,
logger cho đến GraphQL, Websocket rồi cqrs pattern, microservices,... Bạn chỉ
cần NestJS để làm tất cả mọi thứ.
• Microservices: Module microservices của NestJS hỗ trợ đủ loại kết nối:
RabbitMQ, gRPC, Kafka, Redis,... đây là một trong những điều mình rất thích,
mình chỉ cần tập trung vào code cho phần business, còn infra thì NestJS đã
implement sẵn chỉ việc dùng.
• Documents: tài liệu trên trang chủ của NestJs rất là rõ ràng, dễ đọc, làm cho
những người học nodejs dễ tiếp cận.
• Unit Test: NestJs còn cho chúng ta dễ dàng viết unit test cho những dự án lớn
cần những unit test này.
2.3 Thời gian thực tập
Thời gian thực tập ở công ty
•
Từ thứ 2 đến thứ 6 trừ thời gian học trên trường
•
Sáng từ 9h – 12h
•
Chiều từ 13h – 18h
CHƯƠNG 3. CHI TIẾT VỀ PROJECT
3.1. Nội dung chi tiết project
Xây dựng Website HRM dùng để quản lý nhân sự, dự án trong công ty. Giúp cho
bộ phận HR, PM, dễ dàng quản lý nhân sự, dự án hơn.
STT
1
2
3
Tuần
Tuần 1
Tuần 2
Tuần 3
Nội dung thực tập
•
Giới thiệu cơng ty, tham gia buổi chào hỏi, làm
quen với anh chị trong cơng ty.
•
Cài đặt một số phần mềm sử dụng trong công ty,
cũng như trong cơng việc
•
Tìm hiểu NodeJS, NestJs trong lập trình web.
•
Các lệnh git hay dùng.
•
Tìm hiểu các module có sẵn cấu trúc source code.
•
Đọc tìm hiểu các module sẽ làm.
•
Tìm hiểu graphQL, Postgre.
•
Sửa 1 bug tồn đọng như icon của email.
•
Xây dựng chức năng về quản lý dự án như thêm
member vào dự án, đổi role, membership của
member, lưu lịch sử thay đổi role của member đó.
4
Tuần 4
•
Sửa chức năng do thay đổi yêu cầu. Chức năng
xin nghỉ phép.
•
Xây dựng lại source code do viết chung nhiều thứ
vào 1 file và khó tái sử dụng
3.2 Kết quả đạt được.
3.2.1.
Kiến thức tích luỹ
• Kỹ năng cơng nghệ
o Tìm hiểu được các cơng nghệ mới, cơng việc ở môi trường thực tế.
o Quen được với nghiệp vụ công ty và dần dần đã tham gia vào các dự án
mang tính ưu tiên của team. Được tham gia giúp sức của mình để đóng
góp cho team. Va chạm nhiều hơn các vấn đề thực tế và hoàn thành nó.
Được tìm hiểu nhiều thơng tin và kiến thức cho mình.
• Kỹ năng mềm:
o Kỹ năng tìm kiếm thơng tin.
o Kỹ năng lên kế hoạch làm việc.
o Kỹ năng giải quyết vấn đề.
o Kỹ năng giao tiếp tương tác với leader và sếp.
o Kỹ năng làm việc theo nhóm và làm việc độc lập.
o Kỹ năng biết lắng nghe và học tập những lời phê bình.
o Kỹ năng tổ chức công việc và quản lý thời gian.
o Kỹ năng làm việc theo deadline.
o Kỹ năng viết báo cáo công việc hàng ngày.
o Tự tin và năng động trong công việc.
• Các kết quả khác:
o Rèn luyện tinh thần tự giác, đúng giờ, đúng quy định nơi công sở.
o Rèn luyện tính cẩn thận, tỉ mỉ trong từng nhiệm vụ được giao.
o Hiểu rõ được quy trình làm việc và các quy tắc bảo mật khi làm việc.
3.2.2.
Sản phẩm thực tế
Chức năng xin nghỉ phép:
Trước khi đổi: khi loại nghỉ phép là unpaid thì phải xin nghỉ trước vài ngày thì mới
được nghỉ.
Sau thay đổi:
-
Mỗi loại nghỉ phép đều có 1 danh sách nghỉ bao nhiêu ngày thì phải xin nghỉ
trước đó bấy nhiêu ngày.
Ví dụ: unpaid: nghỉ 1 ngày phải xin nghỉ trước 1 ngày.
Nghỉ 3 ngày phải xin nghỉ trước 5 ngày.
-
Nhân viên thuộc group HRM sẽ không bị giới hạn bởi quy luật trên.
Chức năng lưu lịch sử thay đổi nhân viên:
Khi người dùng bị thay đổi role, membership của mình thì sẽ được lưu lại và sẽ được
show ra cho người dùng lịch sử thay đổi đó.
TÀI LIỆU THAM KHẢO
1. Thông tin công ty: />2. NodeJS: />3. HRM: />4. NestJs: />
TỔNG KẾT
Như vậy, chỉ trong vòng một tháng ngắn ngủi, nhóm đã kịp tìm hiểu và hồn thành
nhiệm vụ, bàn giao cho khách hang trang web hoàn chỉnh để tham dự hội nghị. Cũng
trong 1 tháng qua, bản than em cũng đã tiếp thu được một số kiến thức quan trọng trong
quá trình làm việc với nhứng người anh chị dày dặn kinh nghiệm.
Chân thành cảm ơn sự giúp đỡ của các anh chị team HRM, sự nỗ lực của nhóm HRM
đã giúp đỡ em hồn thành cơng việc này.