Mulligan

所属分类:Bootstrap
开发工具:Java
文件大小:564KB
下载次数:0
上传日期:2023-04-26 00:09:00
上 传 者sh-1993
说明:  Mulligan是一个以高尔夫为中心的社交媒体应用程序。这个社交媒体平台为高尔夫球手提供了机会...
(Mulligan is a social media application centered around golf. This social media platform gives golfers the opportunity to connect with other golfers where they share with each other all things golf.)

文件列表:
.DS_Store (6148, 2023-04-26)
.mvn (0, 2023-04-26)
.mvn\wrapper (0, 2023-04-26)
.mvn\wrapper\maven-wrapper.jar (58727, 2023-04-26)
.mvn\wrapper\maven-wrapper.properties (233, 2023-04-26)
Javadoc (0, 2023-04-26)
Javadoc\allclasses-index.html (7957, 2023-04-26)
Javadoc\allpackages-index.html (3532, 2023-04-26)
Javadoc\com (0, 2023-04-26)
Javadoc\com\gcu (0, 2023-04-26)
Javadoc\com\gcu\MulliganApplication.html (10851, 2023-04-26)
Javadoc\com\gcu\SecurityConfig.html (17088, 2023-04-26)
Javadoc\com\gcu\SpringConfig.html (7941, 2023-04-26)
Javadoc\com\gcu\business (0, 2023-04-26)
Javadoc\com\gcu\business\PostBusinessService.html (19591, 2023-04-26)
Javadoc\com\gcu\business\UserBusinessService.html (24687, 2023-04-26)
Javadoc\com\gcu\business\class-use (0, 2023-04-26)
Javadoc\com\gcu\business\class-use\PostBusinessService.html (2701, 2023-04-26)
Javadoc\com\gcu\business\class-use\UserBusinessService.html (2701, 2023-04-26)
Javadoc\com\gcu\business\package-summary.html (4928, 2023-04-26)
Javadoc\com\gcu\business\package-tree.html (3549, 2023-04-26)
Javadoc\com\gcu\business\package-use.html (2491, 2023-04-26)
Javadoc\com\gcu\business\tests (0, 2023-04-26)
Javadoc\com\gcu\business\tests\package-summary.html (3304, 2023-04-26)
Javadoc\com\gcu\business\tests\package-tree.html (2608, 2023-04-26)
Javadoc\com\gcu\business\tests\package-use.html (2551, 2023-04-26)
Javadoc\com\gcu\class-use (0, 2023-04-26)
Javadoc\com\gcu\class-use\MulliganApplication.html (2617, 2023-04-26)
Javadoc\com\gcu\class-use\SecurityConfig.html (2587, 2023-04-26)
Javadoc\com\gcu\class-use\SpringConfig.html (2575, 2023-04-26)
Javadoc\com\gcu\controller (0, 2023-04-26)
Javadoc\com\gcu\controller\AccountController.html (17193, 2023-04-26)
Javadoc\com\gcu\controller\HomeController.html (13044, 2023-04-26)
Javadoc\com\gcu\controller\LoginController.html (13129, 2023-04-26)
Javadoc\com\gcu\controller\PostController.html (18779, 2023-04-26)
Javadoc\com\gcu\controller\RegisterController.html (13239, 2023-04-26)
Javadoc\com\gcu\controller\class-use (0, 2023-04-26)
Javadoc\com\gcu\controller\class-use\AccountController.html (2701, 2023-04-26)
... ...

# Mulligan ### “Connecting golfers around the world!”

Mulligan is a social media application centered around golf. This social media platform gives golfers the opportunity to connect with other golfers where they share with each other all things golf. They will have the ability to check-in to their favorite golf courses, compare handicaps with friends, and share highlights from their last round of golf.

Mulligan fills a gap in the golf industry and is designed to bring the golf community together to one place, a space for just golf. This application will have similar features that many other social media applications are fitted with, but will also contain some features that are unique to golf. Some of these features include the ability to make posts to your timeline, see other users’ posts, comment on posts, and view other user’s profile pages. By giving users the ability to connect on a personal level with golfers around them, Mulligan aims to bring those people together within the golf community.

Mulligan also provides golf clubs and golf leagues a way to communicate with their members. For example, a golf league could create its own page on this site and post all the news/events of that league to this site as way to communicate with members. Mulligan’s goal is to reach all corners of the social aspect in the golf community to provide golfers with those connections. ## Technologies image ## Logical System Architecture

This diagram shows the design of the logical solution of this project. A primary focus of this project is to design it in N-tier architecture, so each tier of the project, and the details of that layer, are displayed in this diagram. To summarize, the project will consist of a client layer, presentation layer, business layer, data access layer, and a data persistence layer. Each of these layers can access ONLY the layer directly above and below itself. Within each container of this diagram are the logical operations of its respective layer. image ## Physical System Architecture This diagram portrays the physical design of this application. This application will be hosted in AWS and uses the services EC2, Elastic Beanstalk, and RDS. Elastic Beanstalk will automatically create EC2 instances to scale out for the demand necessary for the application. The application will be run within each EC2 instance that Elastic Beanstalk creates. Elastic Beanstalk also connects with a MySQL database in RDS for all data transfers that happen within the app.
image ## Detailed Technical Design ### General Technical Approach

Mulligan is a Spring Boot web application developed in the Spring framework using N-layer and Model, View, Controller architecture. The back-end portion of the application will be written with the Java programming language, whereas the front-end of Mulligan will be designed with Adobe XD and implemented using Thymeleaf, HTML, and CSS. The application’s data will persist in a MySQL database. All code will be managed in a GitHub repository so that code changes can be easily documented and tracked throughout the project’s timeline. All project documentation, user stories, and tasks will be managed using project management tools such as Jira, Confluence, and Microsoft Office (Excel/Word). ### Key Technical Design Decisions

This application will be created in using the Spring framework. It will be designed in N-layer architecture and use a Model, View, Controller structure. This design structure was chosen because the app is mainly a create, read, update, delete (CRUD) application so the N-layer/MVC structure is an optimal solution.

The presentation layer will consist of all the viewable aspects of the application such as where users can view posts and account information. The business layer will hold all the logical actions for features such as logging in, registering, and making posts. The data access layer is responsible for reading data from the database to the business layer so that actions can be executed. This would include validating login credentials and editing posts. The data persistence layer is the database itself. All data for posts and user information will persist in the database/database persistence layer. The data will exist in a relational database using MySQL so that data can be organized in a structured format. This will make CRUD operations much simpler across the application.

Along with N-layer architecture, this application will also utilize Model, View, Controller (MVC) architecture. The models will be the container for all logic that relates to the application’s data. In this case, the user and post models. The controllers are responsible for handling all user requests and business logic of the application. This would include processing logins, registers, and making posts. Lastly, views will oversee all UI logic, including page navigation, text boxes, and buttons across the application. ## Database Design The MySQL database, titled MulliganDB, will consist of two tables. Each table corresponds to its associated model in the application. For this instance, the user table corresponds with the User Model and the post table corresponds with the Post Model. Each table contains the variables from the models (including data size/type requirements) so all data from the models can persist in the database. The two tables are associated via foreign key that references the userId number associated with the user that created each post. image ## DevOps ### AWS Cloud ## [mulliganapp-env.eba-m7fztdmk.us-east-1.elasticbeanstalk.com/](http://mulliganapp-env.eba-m7fztdmk.us-east-1.elasticbeanstalk.com/)

Mulligan is hosted in the AWS cloud using Elastic Beanstalk. Using Elastic Beanstalk makes managing the deliveries and updates to this application much easier as AWS will handle all the details for load balancing, capacity provisioning, scaling and health monitoring of this application. The MySQL database is set up through AWS RDS so that data created, read, updated, or deleted within the application is reflected and persists within the hosted database. ### Build Pipeline

Mulligan is also managed through AWS CodePipeline, AWS's service for build pipelines. This service is directly integrated with the GitHub repository and automates the deployement process whenever changes are made to the branch set up to be deployed. This tool enables this application to feature continuous integration and continuous delivery (CI/CD) making the updates to the infrastructure of this application very reliable and fast. Each time a change is made to the branch integrated with CodePipeline, the service will automatically build, test, and redeploy the application on AWS Elastic Beanstalk, allowing AWS to do virtually all of the work for me. ### Logging

Logging exists at each controller class within the Mulligan application. For each method within the controllers, logs will be taken at at the entrance and exit of each methods. The log will contain the URL associated with that method, including any parameters inside that URL so that the logs will show exacatly what is going on when the application is in use. By doing this, it makes it much easier to understand how the flow of the application works and where a potential issue may have risen. ### SLF4J & Log4j

Logging was implemented using Simple Logging Facade for Java (SLF4J). Using this logging API gives the application the ability to also use the logging framework Log4j. SLF4J serves as the abstraction layer for the logging in the application, while Log4j does that actual logging. ### Monitoring Uptime

Monitoring the uptime of this application is key to mananging the production environment. For this, Mulligan uses Uptime Robot to continuously monitor whether this application is currently up or down. Uptime Robot is configured to scan the index page of the application hosted on AWS every 5 minutes to test the application status. If Uptime Robot detects that the application is down, I will immediately recieve an email telling me the application is down. This monitorign will help me in any situation where the application might unexpectedly go down and gives me the opportunity to correct the problem in a timely manner. ## Functional Requirements

Login Requirements | Sub-Features | Actor | Description | Outcome | In Scope? | Completed? | |:-----------------:|:-----------:|:----------------------------------------------------------------------------------------------------:|:-----------------------------------------------------------------------------------------------:|:---------:|:----------:| | Login Form | As a user | I would like to login into my account | so that I can gain access to my account and the app | yes | yes | | Username Input | As a user | I would like a text box to enter my username | so I can submit the form with the correct data | yes | yes | | Username Error | As a system | I would like to display an error message if the username doesn't fit the requirements | so that the user will know they entered invalid data | yes | yes | | Password Input | As a user | I would like a text box to enter my password | so that I can submit the form with the correct data | yes | yes | | Password Error | As a system | I would like to display an error message if the password is incorrect | so that the user will know they entered invalid data or data not associated with that account | yes | yes | | Submit | As a user | I would like a clickable button | so that I can submit the form with the correct data | yes | yes | | Registration Link | As a user | I would like a clickable button to redirect me to the registration page if I don't have an account | so that I can create an account and sign in | yes | yes | | Forgot Password | As a user | I would like a clickable button that I can click to recover my account | so that I can log back in to my account when I forget my password | no | no | | Sessions | As a system | I would like a session to start once a user is logged in | so that they have access to the correct pages of the app | yes | yes | | Remember Me | As a user | I would like a remember me check box on the login page | so that I will not have to login everytime I use the app | no | yes | | Remember Me | As a system | I would like to remmeber a user's session if they check the remember me checkbox | so that they will not have to login everytime they use the app | no | yes |
Register Requirements | Sub-Feature | Actor | Description | Outcome | In Scope? | Completed? | |:------------------------:|:-----------:|:--------------------------------------------------------------------------------------------------------:|:--------------------------------------------------------:|:---------:|:----------:| | Register Form | As a user | I would like to register into my account | so that I can have an account for the app | yes | yes | | Username Input | As a user | I would like a text box to enter my username | so I can submit the form with the correct data | yes | yes | | Username Data Req. | As a system | I would like to require the username is only letters and numbers and is between 2-36 characters | so the entered data is in the correct format | yes | yes | | Username Error Message | As a system | I would like to display an error message if the username doesn't fit the requirements | so that the user will know they entered invalid data | yes | yes | | Password Input | As a user | I would like a text box to enter my password | so that I can submit the form with the correct data | yes | yes | | Password Data Req. | As a system | I would like to require the password to be between 2-254 characters | so the entered data is in the correct format | yes | yes | | Password Error | As a system | I would like to display an error message if the password does not fit the requirements | so that the user will know they entered invalid data | yes | yes | | GHIN input | As a user | I would like a text box to enter my GHIN number | so my GHIN account can be connected to my profile | no | no | | GHIN data Req. | As a system | I would like to require the GHIN number to be in the correct GHIN number format | so the entered data is in the correct format | no | no | | GHIN optional | As a system | I would like the GHIN number input to be optional for the user | so the user is not required to use GHIN | no | no | | GHIN Error | As a system | I would like an error message to be displayed if the input does not fit the GHIN format | so the user will know they entered invalid data | no | no | | Submit | As a user | I would like a clickable button | so that I can submit the register form | yes | yes | | Login Link | As a user | I would like a clickable button to redierct me to the login page if I already have an account | so that I can log in to my account | yes | yes | | Home Course input | As a user | I would like a text box to enter my home golf course | so my my home course will be shown on my account page | yes | yes | | Home Course data Req. | As a system | I would like to require the home course inout to be between 2-254 characters | so the entered data is in the correct format | yes | yes | | Home Course Error | As a system | I would like an error message to be displayed if the input does not fit the home course requirement | so the user will know they entered invalid data | yes | yes | | Name input | As a user | I would like a text box to enter my full name | so my my name will be shown on my account page | yes | yes | | Name data Req. | As a system | I would like to require the name inout to be between 2-72 characters | so the entered data is in the correct format | yes | yes | | Name Error | As a system | I would like an error message to be displayed if the input does not fit the name requirement | so the user will know they entered invalid data | yes | yes | | Email input | As a user | I would like a text box to enter my email | so my my email will be shown on my account page | yes | yes | | Email data Req. | As a system | I would like to require the name inout to be a valid email address | so the entered data is in the correct format | yes | yes | | Email Error | As a system | I would like an error message to be displayed if the input does not fit the email requirement | so the user will know they entered invalid data | yes | yes | | Handicap Index input | As a user | I would like a text box to enter my handicap index | so my my handicap index will be shown on my account page | yes | yes | | Handicap Index data Req. | As a system | I would like to require the name inout to be a double | so the entered data is in the correct format | yes | yes | | Handicap Index Error | As a system | I would like an error message to be displayed if the input does not fit the handicap index requirement | so the user will know they entered invalid data | yes | yes |
Home Requirements | Sub-Feature | Actor | Description | Outcome | In Scope? | Completed? | |:-------------:|:-----------:|:------------------------------------------------------------------------:|:--------------------------------------------------------------:|:---------:|:----------:| | Home Page | As a user | I would like a home page | so I can view posts and other content | yes | yes | | Search Users | As a user | I would like to search for other users | so that I can see their accounts and send them friend requests | yes | yes | | Search Posts | As a user | I would like to search the app for posts | so that I can see all posts that contain what I search | yes | yes | | Search Bar | As a user | I would like a search bar | so that I c ... ...

近期下载者

相关文件


收藏者