QnArt는 주입식 설명 위주의 수동적인 미술작품 감상, 어려운 드로잉 창작 위주의 수업으로 미술에 흥미를 잃은 초등학생에게 즐겁고 주체적인 미술작품 감상 경험을 제공하는 애플리케이션입니다.
명화 작품 데이터를 가진 AI 도슨트와 채팅 또는 음성으로 대화하며 작품을 감상합니다. AI 도슨트는 미술 교육 이론에 기반하여 사용자에게 작품에 관한 질문을 던지고, 사용자는 질문에 답하며 작품을 깊게 감상합니다.
대화 감상이 끝나면, 감상에서 떠올린 자신의 경험이나 상상을 말로 표현합니다. 이미지 생성 AI로 다양한 방식으로 그림을 창작합니다.
이 리포지토리는 QnArt 앱의 Django 기반 백엔드 소스 코드를 포함합니다. 이 리포지토리는 account, docent, imagegen, masterpiece 등 여러 앱을 포함하고 있습니다:
account/: 로그인, 회원 가입, 사용자 정보 관리docent/: 도슨트 정보 반환/변경imagegen/: 사용자의 프롬프트로 DALL-E 그림 창작masterpiece/: 오늘의 명화 카드 생성, AI 도슨트와의 감상 대화 생성/저장
- Ubuntu 서버 접속
AWS에서 EC2 인스턴스를 생성한 후, 아래 명령어를 통해 서버에 접속합니다:
ssh -i "your-key-pair.pem" ubuntu@ec2-your-public-IPv4-DNS.ap-northeast-2.compute.amazonaws.com- Python 및 필수 패키지 설치
다음 명령어를 실행하여 Python과 필수 패키지를 설치합니다:
sudo apt-get update
sudo apt-get install build-essential python3 python3-pip- 소스 코드 클론
프로젝트 소스 코드를 클론한 후 해당 디렉토리로 이동합니다:
git clone https://github.com/Wild-Gaori/backend.git
cd backend- 가상환경 생성 및 활성화
sudo apt-get install virtualenv
virtualenv -p python3 venv
source venv/bin/activate- 종속성 설치
pip install -r requirements.txt- 환경변수 설정
OpenAI API Key를 생성한 후, 루트 디렉토리에 .env 파일을 생성하여 다음과 같이 설정합니다:
OPENAI_API_KEY=PASTE_YOUR_API_KEY- 데이터베이스 업데이트 및 정적파일 수집
python manage.py migrate
python manage.py collectstatic- uwsgi 설치 및 설정
pip install uwsgi
vi uwsgi.ini- uWSGI 설정 파일 예시:
[uwsgi]
chdir=/home/ubuntu/backend
module=myproject.wsgi:application
master=True
pidfile=/tmp/project-master.pid
vacuum=True
max-requests=5000
daemonize=/home/ubuntu/backend/django.log
home=/home/ubuntu/backend/venv
virtualenv=/home/ubuntu/backend/venv
socket=/home/ubuntu/backend/uwsgi.sock
chmod-socket=666- nginx 설치 및 설정
sudo apt-get install nginx
sudo vi /etc/nginx/nginx.conf
sudo vi /etc/nginx/sites-enabled/default- nginx.conf - 아래 내용 추가 삽입
user ubuntu;
...
http {
upstream django {
server unix:/home/ubuntu/backend/uwsgi.sock;
}
}- default - 아래 내용 삭제
location {
try_files $url $url/ =404;
}- default - 아래 내용 추가 삽입
location {
include /etc/nginx/uwsgi_params;
uwsgi_pass django;
}
location /static/ {
alias /home/ubuntu/backend/staticfiles/;
}
location /media/ {
alias /home/ubuntu/backend/media/;
}- 서버 실행 후 재시작
python manage.py runserver 0.0.0.0:8000
sudo service nginx restart-
APK 테스트
프론트엔드와 백엔드가 통합된 APK 테스트는 QnArt-frontend의 README를 참고해주세요. -
백엔드 테스트
로컬 서버에서 실행한 후, API 명세서에 명시된 기능별 URL로 접속하여 예시 입력값으로 테스트를 진행합니다.
- 테스트 계정: username: test3 / password: 1111 / user_pk: 31
python manage.py runserver 0.0.0.0:8000데이터베이스: mySQL Database를 사용합니다.
- QnArt-Image : 명화 작품 png 파일
- QnArt-DB : 명화 작품, 작가, 도슨트 정보 sql파일

이 프로젝트는 다음과 같은 오픈소스 라이브러리를 사용합니다:
