Koala (알고리즘 동아리) 내 스터디 출석부 자동화 서비스
동아리에서 스터디를 운영할 때, 운영자들이 출석부를 작성하기 위해 카카오톡 창을 하나씩 확인해야 하는 불편함을 해소하고자 만든 출석부 자동화 서비스입니다.
- 메인 page
메인 페이지에서는 현재 운영 및 모집 중인 스터디를 알 수 있습니다.
이 때 학기 기준은 현재 년도 및 학기를 자동으로 가져옵니다.
- 1학기 - 3.1 ~ 6.20
- 여름방학 - 6.20 ~ 9.1
- 2학기 - 9.1 ~ 12.20
- 겨울학기 - 12.20 ~ 2.28
![image](https://private-user-images.githubusercontent.com/81344634/306512830-0c2d5e9d-8512-445f-b018-ba6c980f7497.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk1OTQzMDEsIm5iZiI6MTczOTU5NDAwMSwicGF0aCI6Ii84MTM0NDYzNC8zMDY1MTI4MzAtMGMyZDVlOWQtODUxMi00NDVmLWIwMTgtYmE2Yzk4MGY3NDk3LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTUlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjE1VDA0MzMyMVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTY2ODIxZjNkYTkzOGM5MDJkMjA1ZDRmZTkzMjU1OWY5NGY2ZGI4M2ZjM2Y1ZDFiOTJhNzZjMWE1MDQyNDAwOTUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.vryC6wqHwKpLOxC3-nXhVLoWH1c9MMkDWAKGq1eE8SE)
- 로그인 page
아래 3, 4번 page에 접근하기 위해서는 admin 아이디/비밀번호 계정이 필요합니다.
![image](https://private-user-images.githubusercontent.com/81344634/306512678-b0a1f33c-f7fd-4600-9cde-7e281615d319.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk1OTQzMDEsIm5iZiI6MTczOTU5NDAwMSwicGF0aCI6Ii84MTM0NDYzNC8zMDY1MTI2NzgtYjBhMWYzM2MtZjdmZC00NjAwLTljZGUtN2UyODE2MTVkMzE5LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTUlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjE1VDA0MzMyMVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTgyNzdjYmRlMDBhMGNkODViYzYwYmM1NGY0MGU1NWMyNTgwNTc4NzdiNjBmOGYxNTE5ZGE5ZDRlNGY0ZWY0MjImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.ACUaRTUZPVub2X-l2pG8509qSstlPbqve8XJ_HqTj7g)
- 등록 page
학생 및 스터디를 등록할 수 있습니다.
학생의 백준 및 티스토리 이름은 각 플랫폼에서 가입 시 기입했던 이름을 기입해줍니다. (예. 전영서 / 20wjsdudtj / jeonyoungseo)
![image](https://private-user-images.githubusercontent.com/81344634/306513050-fb206cec-1494-4ca2-b557-914c3e9d946c.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk1OTQzMDEsIm5iZiI6MTczOTU5NDAwMSwicGF0aCI6Ii84MTM0NDYzNC8zMDY1MTMwNTAtZmIyMDZjZWMtMTQ5NC00Y2EyLWI1NTctOTE0YzNlOWQ5NDZjLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTUlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjE1VDA0MzMyMVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTJhMTNhOWVjNDdiNWZlNTI1ODJmNGQ4ZGY3NzI3MzZkYjgyZTg1M2E3Nzk4ZmUwY2M0Y2QyMmQ4OTZmOTQ5NWQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.hDS249vTG7ToETHLChNRwxJiyT9ptQ4CM-aA9Ym6dGM)
- 참가 page
학생들을 스터디에 추가/삭제 할 수 있습니다.
학생은 여러 명 선택 가능하며, 스터디는 한 개만 선택 가능합니다.
![image](https://private-user-images.githubusercontent.com/81344634/306513330-03e472d0-d6e7-457e-8132-7297877460c9.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk1OTQzMDEsIm5iZiI6MTczOTU5NDAwMSwicGF0aCI6Ii84MTM0NDYzNC8zMDY1MTMzMzAtMDNlNDcyZDAtZDZlNy00NTdlLTgxMzItNzI5Nzg3NzQ2MGM5LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTUlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjE1VDA0MzMyMVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWUwMzNhZDk1OTEwM2M3YTRlM2M1MDExZWRjNjMxNmVmYTI1YzQxNzVkODljNTIyMzVhZmQzM2U1NWJmNGI4ODgmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.zerGcxDjQqPnrP7ey3PvlGnyqJ3LQhUb_3dpB7bAaXw)
- 출석부 조회 page
년도와 학기를 순차적으로 선택한 후 학생 별 주차별 출석 내역을 볼 수 있습니다.
각각 백준 / 티스토리 출석부를 의미하며 백준은 푼 갯수가, 티스토리는 포스팅 유무가 기입됩니다.
'-' 로 표기된 내용은 아직 해당 history가 업데이트되지 않았음을 의미합니다.
![image](https://private-user-images.githubusercontent.com/81344634/306513611-39743bd9-e3bb-41c2-acb4-ec600e857460.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk1OTQzMDEsIm5iZiI6MTczOTU5NDAwMSwicGF0aCI6Ii84MTM0NDYzNC8zMDY1MTM2MTEtMzk3NDNiZDktZTNiYi00MWMyLWFjYjQtZWM2MDBlODU3NDYwLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTUlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjE1VDA0MzMyMVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTkzZTMzYzQ4OGVlNjdiODE0MDY0MjI3NTY0YWI2NWYzNzQzODJjYTM4ODUxMTQxN2Y2ZDY2NjgyMGNkNjc1MmYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.Y8PaFt_HtD4r1M0_oKmv6oFyfxp7Yg7i8s5YZkd8RhA)
![image](https://private-user-images.githubusercontent.com/81344634/306514114-4f82aac9-ebaf-44bb-beeb-c6f9d1f23cdc.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk1OTQzMDEsIm5iZiI6MTczOTU5NDAwMSwicGF0aCI6Ii84MTM0NDYzNC8zMDY1MTQxMTQtNGY4MmFhYzktZWJhZi00NGJiLWJlZWItYzZmOWQxZjIzY2RjLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTUlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjE1VDA0MzMyMVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTdiNGVlMWJlMDE2YzEwZWM3YTNkZmZmYjZjYmEwZTVmNDQzYTRhYzQzYWE4NDU4ZTMwMTIwMTY3Nzk3YjQ4NTMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.mhhKIkeBrjzDUZbb33xudxF2iumHWdaddIs8vOEYLxQ)
- build with Dockerfile
gradle 이미지 내에서 build한 후 build한 war 파일을 tomcat 이미지에 복사하여 실행
build 과정 블로그 포스팅 참고
# Gradle 빌드 단계
FROM gradle:latest as builder
WORKDIR /app
COPY . /app
RUN gradle clean build -x test
# Tomcat 이미지에 WAR 파일 복사
FROM tomcat:10.1.17
RUN apt-get update \
&& apt-get install -y tzdata
ENV TZ=Asia/Seoul
COPY --from=builder /app/build/libs/koala.war /usr/local/tomcat/webapps/ROOT.war
CMD ["catalina.sh", "run"]
- execute
git clone 이후 사용자 개인이 쉽게 구현 가능합니다.
- application-local.yml을 만들고 .gitignore에 포함시킵니다.
- 이후 Supabase postgreSQL과 MongoDB, Java Spring localhost DB를 각각 만든 후 환경변수에 기입합니다.
DB 설정 블로그 포스팅 참고 - IntelliJ 환경변수를 local로 지정해준 후 실행시킵니다.
- ERD
- 사용 기술
![이미지 대체 텍스트](https://private-user-images.githubusercontent.com/81344634/310419702-22d9a117-6d6f-4914-9242-26fac621caee.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk1OTQzMDEsIm5iZiI6MTczOTU5NDAwMSwicGF0aCI6Ii84MTM0NDYzNC8zMTA0MTk3MDItMjJkOWExMTctNmQ2Zi00OTE0LTkyNDItMjZmYWM2MjFjYWVlLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTUlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjE1VDA0MzMyMVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWUzZWNhNjA2NGFkM2RjODc4OTA1YjFmZTc3NDNkNzFkZmEzYzNjOWRkMWViMzhlYmViYzEwNjRlMDk0NWUyNGQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.fn5uBnxdq1VQ6FN8nmC0ip6YCF7XZ81paD49hZaNI8Q)
- 배포 pipeline
해당 출석부 편집 & 관리를 위한 계정 및 DB 관련 정보는 [email protected]으로 연락주시기 바랍니다.