Computer Science and Software Engineering Capstone Presentations
Fall Quarter
December 18, 2020
Weiquan Huang "Designing
a Photo-Sharing API Application" (Individual Project - Student Defined) Faculty Advisor: Dr. Nancy Kool |
Abstract For my autumn 2020 capstone project, I designed and
built a photo-sharing API using Java, Spring, and MySQL. In addition, I
developed an Angular client application to communicate and exchange data with
the API. In the course of this project, I implemented the following
photo-sharing application features: user registration, logging in and out
with password encryption, posting pictures, giving a like and commenting on
the picture, accessing profile, and account management. In addition, this
application includes a security feature created using JSON Web Token. This feature
protects users' account, resource, and privacy. To start this project, the
first step was to plan and analyze the requirements of the application, e.g.,
posting pictures, accessing profile, and account management. This information
was used to plan the basic project approach and to conduct product
feasibility. The next step was to create a domain model diagram using UML
(unified modeling language) in order to better understand the model
relationships. I then mapped them into the MySQL database using the JPA (Java
Persistence API). Next, I started the programming code to implement the API
following the defined requirements and application architecture using Java
and Spring framework. In addition, I added JWT (JSON Web Token)
Authentication & Authorization to secure API. After that, I used the
Angular web application framework to build a client application to talk to
the API. Finally, the application was tested using unit test on POSTMAN
website. It met the defined requirements and features. Throughout the course
of this project, I learned much about database configuration, Java Spring
framework, and Angular web application framework. The further significance of
this project was that I was able to experience the whole process of
full-stack development while developing a real-world application. |
|
Updated December 16, 2020