On hobbies and club services at Mannalga,
Register your interests and join the meeting!
- Kotlin 1.4
- Spring boot
- MySQL
The MySQL database can create a schema by running src/course/sql/ddl.sql attached inside the project.
If the DB schema setting is complete, enter the settings of the DB you set in the application.properties file.
Mannalga software has backend and frontend separation.
You can run the service by running the Front client after you run the Backend API server.
All Pull Requests generated by developers automatically perform build/testing to check if they can be run normally. This eliminates the need to consider whether this code is executable when conducting code reviews for Pull Requests.
The Mannalga project has built, tested, and deployed pipelines all going through Github Action. We have created two versions of the action so that we can deploy both the .jar file and the container environment, which can be seen here.
Development features will not be merge without code review. Through this, we were able to improve the quality of the code and understand the behavior of the code written by the team members.
Communicating APIs with front-end developers was not easy. The API's call conditions, permissions, parameters, return values, etc. had to be clearly communicated, and managing them was almost impossible without documentation. So we documented all the behavior of the API through Restdocs. Front-end developers no longer need to ask back-end developers what this API does.
The result of this code's operation will generate the following documents.
result.andExpect(status().isOk)
.andDo(
document("club-withdraw",
getDocumentRequest(),
getDocumentResponse(),
pathParameters(parameterWithName("clubSeq").description("모임 시퀀스.")),
responseFields(
*commonResponseField()
)
)
)
@Transactional
override fun findMeetingApplicationByUserAndMeetingSeq(clubUserParam: ClubUser, meetingSeq: Long): MeetingApplication {
return from(meetingApplication)
.join(meetingApplication.meeting, meeting)
.join(meetingApplication.clubUser, clubUser)
.join(meeting.club, club)
.where(
clubUser.seq.eq(clubUserParam.seq), meeting.seq.eq(meetingSeq)
).fetchOne()
}







