Create a portfolio app using Java and Spring Boot

Introduction

Since August 2020, I have been learning mainly about creating web applications using Java and Spring Boot. From what I learned in that process, I created an app with simple functions as a portfolio, so I have summarized the functions, production procedures, and issues for that application.

Although it is incomplete as a function that has not been implemented yet and a function including usability,

・ Produced by the deadline of production and release within 2020 ・ Anyway, release once

Since we placed the highest priority on, we have released it once.

Production period

The production period is from 11/22 to 12/15 AWS learning, until deployment is completed 12/16 ~ 12/30

Overall, it takes about 5 weeks to publish.

Deliverables

"Ticket sharing management system" between indie bands and live houses

TicketManagerTool

GitHub https://github.com/KeitaUenishi/TicketManagerTool.git

Production background

Although it is a portfolio, I wanted to create something that could actually be used, and something that could actually solve the problem from my own experience.

I have been in a band until I was 27 years old, and I have appeared and hosted various events centered on live performances at live houses. When performing at a relatively small event, the customers who come to the event are basically in the form of "layaway".

・ Contact the band directly instead of the live house, tell them the name and number of tickets, and reserve the ticket. ・ The band manages the reserve list ・ Fill in the visitor list on the day and submit it

It has become a flow, It was common for customers to tell their name at the entrance on the day based on the list, settle the payment, and enter.

The big problem with this mechanism was that I felt it.

・ The total number of visitors cannot be read until the day of the event. Each band appearing in the event manages their own tickets, and they contact a considerable number of customers as they engage in daily activities to attract customers. Therefore, in order to accurately grasp the number of visitors, it was necessary to manage the constantly changing number on a daily basis, which was troublesome. Due to the time and effort, it was often the case that the visit forecast was basically known only on the day of the event.

・ In some cases, the live house will be contacted directly, and they will be managed by the live house. As a result, management such as cancellation must be distributed and close contact must be made, which is troublesome.

From such points, I thought that these problems could be solved if there was an application that could easily add, edit, and delete the visitor list on the Web.

Also, in the current situation where there are restrictions on admission to the corona virus, it is essential to know the number of mobilization, but Since it is difficult to grasp the mobilization that changes every day as it is, the performers and the live house side are in real time. I also thought that it would be convenient if there was an app that could check the number of mobilizations.

Created function

・ Simple login function, list display of live schedule

一覧画面表示1大.gif

・ Display of visitor list for each live schedule

一覧画面表示2大.gif

・ Validation check of each item, CRUD processing バリデーション&CRUD大.gif

Production flow

First of all, we selected the development environment and defined the requirements.

Development environment

◦ Language Java1.8 ◦ Framework Spring Boot2.4.0 ◦ Database MySQL5.7 ◦ Test JUnit4 ◦ Version control Git GitHub

Requirement definition

What was defined before creation

Must function --Registration of live schedule --Add customer information to the registered live schedule --Implementation of login function   if possible --A function that allows the customer to select the live schedule of the app and register the name (register from the screen without logging in). --A function to check if you have visited the venue and check if the payment has been completed. --Login account creation (shared only by performers of each performance) function --A function to count the number of visitors to each schedule and display it at the top of the page or in the live list.

Database design

スクリーンショット 2021-01-04 14.12.28.png

Screen transition diagram

After learning how to make it, Created by hand on A4 paper with an emphasis on speed for simple content

Creating a Gantt chart

Create a rough Gantt chart with Trello based on the defined requirements

The progress is recorded in the Google calendar at any time and compared with the Gantt chart for management.

image.png

Function, screen implementation

I wrote the code earnestly and proceeded while fighting the error. Unlike the learning of the tasks so far, you do not even know what to ask if you do not actually understand, so to be precise, learning based on the question → question → answer, verification → error resolution is repeated earnestly It is an image.

Where is the problem and how do you isolate it? I realized that the ability to formulate hypotheses and verifications and grasp the problem accurately is really important.

When it comes to screen implementation, we just use Bootstrap to get the minimum look. (I wanted to stick to more things if I could afford it, but I put it off because it was my top priority to publish it as a moving object)

Deploy using AWS

https://qiita.com/hiren/items/2a4f1b55c99ebfb3fd08 Build the environment by referring to this article.

After setting EC2 and RDS Install Tomcat 9.0.41 on Amazon Linux2 and deploy to webapps.

404 error due to bad build 500 error due to not being able to load the Mapper.xml file that can be loaded locally Garbled Japanese characters due to RDS language setting While suffering from errors such as, each is resolved and released. (I will summarize these contents in another article in the future)

Looking back

** As many people have already said, I realized that actually making it is the most educational thing. ** **

So far, I have learned while copying various applications by referring to articles on the net, but I can implement it even if I do not understand much about the flow of processing while copying. I will.

However, when I decided the functions myself and proceeded with the implementation, there were many cases where copying sutras alone could not help. In that process, we will calmly isolate the problem, ask questions, and verify it.

Then, the sense of accomplishment when it can be solved also hits the problem again in a short time, and while calculating the remaining time back, it separates what can be done and what cannot be done. I was working on these experiences, thinking that I wouldn't be able to experience them without actually making them, and that they would always be required in my actual work.

I will continue to study while being aware of these things.

Challenges point

Since there are some functions that could not be implemented and it is incomplete, I will keep a memorandum of future issues.

Insufficient validation

Currently, when registering a live schedule, if you enter a date other than 8 digits, validation check will be applied, but if it is 8 digits, you can register any number. It's closed. image.png

There is a part where the source code is messed up

I try to make it memorable by commenting out every time I make corrections such as errors, but there are many things that other people think that they are messed up and do not understand the intention. If you write code that does not convey your intention in actual work, it may hinder development, so we will try to write code that can be communicated to people while refactoring in the future.

Misspelled

As you may have noticed, I've already misspelled the project title TicketMan e gerTool on GitHub (I noticed it was in the deployment stage, so I've left it as it is ...). I've often been stuck with very rudimentary parts such as typographical errors and misspellings, so I'll try to be more accurate, including naming classes and methods.

The screen is super hard to see on a smartphone

I was thinking that smartphones would be the main situation to actually use, but responsive support etc. have not been incorporated and the screen display is very small. We are thinking about fixing this as soon as possible, but we regret that we should have thoroughly identified the use cases in advance.

Incomplete login function

As mentioned in the function explanation column, the login function has been implemented halfway due to insufficient learning about Spring Security. We plan to add this as soon as possible.

Summary

To be honest, there are no points to reflect on or improve, but as a result, I feel that ** actually creating an application ** was the most efficient way to learn.

** Above all, the sense of accomplishment when it is completed in any form is pleasant! ** **

I still have applications and ideas that I want to actually make in my head, so I would like to continue learning while actually shaping them!

Even if you are learning programming from now on, I recommend that you try to actually create an application with simple functions once you have some understanding of it!

I would be very happy if those people could see this article and inspire me! It's a long sentence, but thank you for watching until the end!

Recommended Posts

Create a portfolio app using Java and Spring Boot
Create a simple search app with Spring Boot
Create a Spring Boot application using IntelliJ IDEA
Steps to create a simple camel app using Apache Camel Spring Boot starters
Create an app with Spring Boot 2
Create a Java project using Eclipse
Create an app with Spring Boot
[Java] Create and apply a slide master
Create Java Spring Boot project in IntelliJ
Create a TODO app in Java 7 Create Header
Image Spring Boot app using jib-maven-plugin and start it with Docker
Create a Spring Boot web app that uses IBM Cloudant and deploy it to Cloud Foundry
Inexperienced create a weather app using OpenWeatherMap and deploy it to Netlify
Create a Spring Boot project in intellij and exit immediately after launching
Create a Spring Boot app development project with the cURL + tar command
Java beginner tried to make a simple web application using Spring Boot
Automatically deploy a web application developed in Java using Jenkins [Spring Boot application]
Create a website with Spring Boot + Gradle (jdk1.8.x)
Create API using Retrofit2, Okhttp3 and Gson (Java)
Java tips-Create a Spring Boot project in Gradle
Create a web api server with spring boot
Ssh connect using SSHJ from a Java 6 app
Create a Spring Boot development environment with docker
[Java] Create a filter
Testing JPA entities and repositories using Spring Boot @DataJpaTest
Create a Java development environment using jenv on Mac
Create a docker image that runs a simple Java app
Try using DI container with Laravel and Spring Boot
[JUnit 5 compatible] Write a test using JUnit 5 with Spring boot 2.2, 2.3
How to create a Spring Boot project in IntelliJ
[Spring Boot] How to create a project (for beginners)
[Introduction to Spring Boot] Submit a form using thymeleaf
Create Restapi with Spring Boot ((1) Until Run of App)
Create a simple demo site with Spring Security with Spring Boot 2.1
How to convert A to a and a to A using AND and OR in Java
Create a JAVA WEB application and try OMC APM
I tried to create a shopping site administrator function / screen with Java and Spring
Until you create a Spring Boot project in Intellij and push it to Github
Create a web app that is just right for learning [Spring Boot + Thymeleaf + PostgreSQL]
Create a java method [Memo] [java11]
[Java] Thymeleaf Basic (Spring Boot)
[Java] Create a temporary file
Create a fortune using Ruby
CICS-Run Java application-(4) Spring Boot application
Using Mapper with Java (Spring)
Try using Spring Boot Security
[Java] [Spring] Spring Boot 1.4-> 1.2 Downgrade Note
Create microservices with Spring Boot
Make a rhombus using Java
Handle Java 8 date and time API with Thymeleaf with Spring Boot
[Beginner] android app that rolls a ball using a sensor [Java]
[Java] Deploy the Spring Boot application to Azure App Service
Create a Hello World web app with Spring framework + Jetty
How to call and use API in Java (Spring Boot)
Get error information using DefaultErrorAttributes and ErrorAttributeOptions in Spring Boot 2.3
How to develop and register a Sota app in Java
Socket communication with a web browser using Java and JavaScript ②
Socket communication with a web browser using Java and JavaScript ①
Create a MOB using the Minecraft Java Mythicmobs plugin | Preparation 1
Introducing Spring Boot2, a Java framework for web development (for beginners)
Domain Driven Development with Java and Spring Boot ~ Layers and Modules ~